path: root/fs/initramfs
Commit message (Collapse)AuthorAgeFilesLines
* fs/initramfs: fix show-infoGravatar Yann E. MORIN2020-03-181-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The initramfs is not a reall filesystem, so it does not use the $(rootfs) infrastructure. As a consequence, the usual rootfs-related variables are not set, especially the name, type, and dependencies of the (non-)filesystem. Yet, it is present in the list of rootfs to build, and thus we end up including it in the output of show-info. But the missing variables yield an incorrect json: "": { "type": "", "virtual": false, "version": "", "licenses": "", "dl_dir": "", "install_target": , "install_staging": , "install_images": , "downloads": [ ], "dependencies": [ ], "reverse_dependencies": [ ] }, First, the object key is empty; second, the install_target, install_staging, and install_images values are empty, which is not valid (if they were null, that be OK though). Third, this is clearly the layout of a 'package' entry, not that of a 'rootfs' entry. An option to fix that would be to actually make use of the rootfs infra. However, that would mean doing a lot of work for nothing (there is actually nothing to do, yet the infra would still do a lot of preparatory and clean up work). The alternative is pretty simple: declare and set the variables as if it were a real filesystem, so that show-info can filter it to the proper layout and can spit out appropriate content (even if fake). The third option would be to teach show-info (and its internal implementation, the macro json-info) to ignore specific cases, like no-name items, or replace empty values with null, or whatnots. This again would be quite a lot of work for a single occurence. So we go for the simple faked variables. We add linux as a dependency, so that the graph-depends also properly represent the dependency chain, which ends up with something liKe: ALL | v rootfs-initramfs | | v v linux rootfs-cpio which is pretty fitting in the end. Reported-by: Thomas De Schampheleire <patrickdepinguin@gmail.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Tested-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* fs/*/Config.in: re-wrap help textGravatar Ricardo Martincoski2018-04-011-1/+2
| | | | | | | ... to follow the convention <tab><2 spaces><62 chars>. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* fs/*/*.mk: fix code styleGravatar Ricardo Martincoski2018-04-011-2/+1
| | | | | | | | The header of the initramfs.mk file fits in one line, so rearrange it. Remove consecutive empty line. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* fs/initramfs: cleanups, enhance commentsGravatar Yann E. MORIN2017-11-301-7/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rootfs-initramfs is not using the generic fs infrastructure, because there is virtually nothing to do to build the initramfs image: there is no actual image to be built to begin with. The only purpose of rootfs-initramfs is to ensure the rootfs.cpio image is built and then that the Linux kernel is rebuilt with that rootfs.cpio as initramfs source. Using variables of the fs infra like if it were used is misleading. It looked nice as long as there was the possibility that rootfs-initramfs would one day use the fs infra. But there's no way that will happen any time soon. Furthermore, the linux' rule linux-rebuild-with-initramfs now already depends on rootfs-cpio by itself, so we need not duplicate this dependency in rootfs-initramfs. Still, we want to advertise that the dependency is on rootfs-cpio, so we get nice dependency graphs (and not expose the internal linux-rebuild-with-initramfs rule to the users). So, remove the variables and directly define the rules. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Romain Naour <romain.naour@openwide.fr> Reviewed-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* fs: declare phony targets as suchGravatar Thomas Petazzoni2015-04-141-0/+2
| | | | | | | | This commit improves the filesystem handling code to declare its various targets as PHONY when appropriate. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
* linux: remove support of linux26-* targetsGravatar Thomas De Schampheleire2014-07-291-1/+1
| | | | | | | | | | | | The linux-* mirror targets of linux26-* have been added a very long time ago (2010) and linux 2.6 is now considered 'old' anyway. It no longer makes sense to support these linux26-* targets, so this patch removes them. This is a simplification introduced in preparation of the kconfig-package infrastructure. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* fs/initramfs: fix initramfs supportGravatar Gustavo Zacarias2014-03-061-1/+1
| | | | | | | | | | | On commit a24877586a566e052897e50e6a0c2f53cfb029f TARGETS_ROOTFS was introduced, however fs/initramfs/initramfs.mk was never updated, hence a show-targets would be rootfs-initramfs with rootfs-cpio afterwards hence never rebuilding the kernel with a proper cpio archive since TARGETS is always before rootfs-* as stated in the commit description. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Config.in files: unification of comments about dependency on Linux kernelGravatar Thomas De Schampheleire2013-12-151-1/+1
| | | | | | | | | This patch lines up the comments of packages that need a Linux kernel to be built by buildroot, to the format: foo needs a Linux kernel to be built Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* package: remove the empty trailing linesGravatar Jerzy Grzegorek2013-09-131-1/+0
| | | | | Signed-off-by: Jerzy Grzegorek <jerzy.grzegorek@trzebnica.net> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* linux: Do not force GZIP initramfs compressionGravatar Valentine Barshak2013-07-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Initramfs compression does not make much sense for the architectures that support compressed kernel images because in this case the data would be compressed twice. This will eventually result in a bigger kernel image and time overhead when uncompressing it. The only reason to use compressed initramfs is to reduce memory usage when the kernel prepares rootfs, and both the unpacked filesystem and initramfs.cpio are present in the memory. Buildroot attempts to force GZIP compression for initramfs, however it doesn't always work because initramfs compression mode depends on RAM disk compression supported by the kernel. Thus, CONFIG_INITRAMFS_COMPRESSION_GZIP depends on CONFIG_RD_GZIP. If CONFIG_RD_GZIP is not set, setting GZIP initramfs compression will have no effect. Besides, the kernel also supports other compression methods, like BZIP2, LZMA, XZ and LZO. Forcing the good old GZIP does not really make much sense any more. This removes initramfs compression settings from Buildroot, so that the default value preset in the kernel config is used, which is CONFIG_INITRAMFS_COMPRESSION_NONE. If initramfs compression is still needed, it can be set in the kernel config (using make linux-menuconfig) Signed-off-by: Valentine Barshak <gvaxon@gmail.com> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* Normalize separator size to 80Gravatar Jerzy Grzegorek2013-06-071-2/+2
| | | | | Signed-off-by: Jerzy Grzegorek <jerzy.grzegorek@trzebnica.net> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* cpio/initramfs: clarify their use in the help textGravatar Arnout Vandecappelle2012-11-071-1/+1
| | | | | | | | | | Recent mails on the list show that it is not very clear how to create an initial RAM fs with buildroot. So make this more explicit in the cpio and initramfs help texts. Hopefully this will reduce the /init debugging we have to do. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* fs/initramfs: refactor with fs/cpioGravatar Arnout Vandecappelle (Essensium/Mind)2011-09-274-240/+18
| | | | | | | | | | An initramfs is in fact the same as a cpio archive, but embedded in the kernel. So instead of duplicating the cpio infrastructure, we can simply build images/rootfs.cpio and link that into the kernel. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* initramfs/init: make sure that 0, 1, 2 fds are availableGravatar Thomas Petazzoni2011-08-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | As the kernel doesn't automatically mount devtmpfs when an initramfs is used, commit 424888e47431db738f5f9b3c6392435bfce7a842 has introduced a small wrapper script that mounts devtmpfs before starting the real init. Unfortunately, the problem is that in this case, the init process runs without any 0, 1 and 2 file descriptors, so none of the messages/errors printed by the various initialization scripts can be seen. This is due to the fact the init process relies on 0, 1 and 2 being opened by the kernel before init is started. However, as /dev/console isn't present on the filesystem at the time the kernel tries to open the console to create the 0, 1 and 2 file descriptors, the kernel fails on this and prints the famous "Warning: unable to open an initial console". The proposed workaround is to actually open 0, 1 and 2 to /dev/console in the wrapper script, right after mounting the devtmpfs filesystem, and before starting the real init. The "Warning" from the kernel is still shown, but at least the messages from the init scripts are visible. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* initramfs: fix boot with dynamic /devGravatar Peter Korsgaard2011-07-202-2/+19
| | | | | | | | | | | Devtmpfs (which is used by devtmpfs/mdev/udev options) doesn't get automounted by the kernel when an initramfs is used, causing boot failures when a dynamic /dev is used. Fix it by adding a pre-init script to mount devtmpfs before running init. Reported-by: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* initramfs: fix init symlink creationGravatar Mike Frysinger2010-11-171-2/+2
| | | | | | | | | | The -e test will dereference the symlink, so if there is no /bin/init, we will constantly try to create the symlink. So rather than error on subsequent runs when the link exists, use the force flag to ln. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* Remove INITRAMFS_TARGET variableGravatar Thomas Petazzoni2010-11-041-6/+0
| | | | | | | | | | | | | This used to be needed when the filesystem code was rewritten, but not the Linux compilation code. Now that the Linux compilation code has been rewritten, the mechanism to ensure that initramfs gets built *before* the kernel so that it can be integrated is different, and this INITRAMFS_TARGET variable is no longer used. See f507921d391bb2578261a9e45c003e72302dc67a for details. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* initramfs: Don't overwrite $(TARGET_DIR)/init if it existsGravatar Simon Pasch2010-08-291-2/+3
| | | | | | | | | Closes #2443 Allow use of custom init scripts. Signed-off-by: Simon Pasch <fpasch@googlemail.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* initramfs: update help textGravatar Thomas Petazzoni2010-06-261-11/+13
| | | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* initramfs: only show the option when a Linux kernel is being builtGravatar Thomas Petazzoni2010-06-261-0/+3
| | | | | | | Closes #2119 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* linux: add support for initramfsGravatar Thomas Petazzoni2010-06-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Buildroot, the kernel is built and installed *before* the root filesystems are built. This allows the root filesystem to correctly contain the kernel modules that have been installed. However, in the initramfs case, the root filesystem is part of the kernel. Therefore, the kernel should be built *after* the root filesystem (which, in the initramfs case simply builds a text file listing all files/directories/devices/symlinks that should be part of the initramfs). However, this isn't possible as the initramfs text file would lack all kernel modules. So, the solution choosen here is to keep the normal order: kernel is built before the root filesystem is generated, and to add a little quirk to retrigger a kernel compilation after the root filesystem generation. To do so, we add a ROOTFS_$(FSTYPE)_POST_TARGETS variable to the fs/common.mk infrastructure. This allows individual filesystems to set a target name that we should depend on *after* generating the root filesystem itself (contrary to normal ROOTFS_$(FSTYPE)_DEPENDENCIES, on which we depend *before* generating the root filesystem). The initramfs code in fs/initramfs/initramfs.mk uses this to add a dependency on 'linux26-rebuild-with-initramfs'. In linux/linux.mk, we do various things : * If BR2_TARGET_ROOTFS_INITRAMFS is enabled (i.e if initramfs is enabled as a root filesystem type), then we create an empty rootfs.initramfs file (remember that at this point, the root filesystem hasn't been generated) and we adjust the kernel configuration to include an initramfs. Of course, in the initial kernel build, this initramfs will be empty. * In the linux26-rebuild-with-initramfs target, we retrigger a compilation of the kernel image, after removing the initramfs in the kernel sources to make sure it gets properly rebuilt (we've experienced cases were modifying the rootfs.initramfs file wouldn't retrigger the generation of the initramfs at the kernel level). This is fairly quirky, but initramfs really is a special case, so in one way or another, we need a little quirk to solve its specialness. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* initramfs: fix init symlinkGravatar Will Wagner2010-04-201-0/+2
| | | | | | | | When initramfs was ported to the new fs structure the init symlink macro was defined, but forgot to add it to PRE_GEN_HOOKS Signed-off-by: Will Wagner <will_wagner@carallon.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* Repair initramfs dependancies after move to fsGravatar Will Wagner2010-04-201-0/+6
| | | | | | | | | | The restructure for building root filesystems changed the target name for the initramfs file, to build the file the trget is now initramfs-root but the generated file is rootfs.initramfs Signed-off-by: Will Wagner <will_wagner@carallon.com> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* initramfs: trivial fix following move to fsGravatar Will Wagner2010-04-151-1/+1
| | | | | Signed-off-by: Will Wagner <will_wagner@carallon.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* Move all filesystem generation code to fs/Gravatar Thomas Petazzoni2010-04-093-0/+236
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>