There are cases where software after boot may need to know the
current boot disk. Under the current system, it is not guaranteed
which disk is the boot. While /media/sda is a good guess, it
isn't always right, nor is it a good assumption that only one boot
disk is in the system. This gives a standard path to the original
boot disk mount which can be used to, for instance, update the
syslinux file on the boot media with a newer kernel, or updating
the boot parameters to add user options for future boots. Knowing
which disk is the boot media keeps from updating the non-boot
disk when for instance multiple syslinux boot medias are plugged in
(ie ensure correct syslinux is updated when the booted system is
updated).
(From OE-Core rev: 2be3b2607fd164d18498299dbfc020ff17dd2ca9)
Signed-off-by: Brian Lloyd <blloyd@familyhonor.net>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The init-live.sh scripts assumes that the boot label set by
the LABELS variable is either "boot", "install", or
"install-efi". If that variable is overridden to something else
we fall off the end of the case statement and the system locks
up. If the boot label is unknown, at least attempt to boot.
(From OE-Core rev: 98353862c08be2f1724aaad7aa4ed0521e3621f2)
Signed-off-by: Drew Moseley <drew_moseley@mentor.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
mount.sh in udev-extraconf was modified to use /run/media instead
of /media. Unfortunately, our scripts in initrdscripts have some
dependency on the auto-mounting mechanism proviced by udev-extraconf.
So these scripts should also be fixed to use /run/media instead /media,
otherwise, our live image cannot work correctly.
(From OE-Core rev: be0327b6a900be5434b6b1f08277faf2f65d5da8)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Instead of using 'ls /dev/sd*' command to list block devices, we
should rather use 'cat /proc/partitions'.
(From OE-Core rev: fc5dfad6490d0b3f2529f84ae9dfbd6b00b5c380)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This allows for setting the ROOT_IMAGE name on the kernel command line
[YOCTO #5387]
(From OE-Core rev: 00e3acde7910a5fb1d2e6b71187f2d9283319e71)
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
init-live.sh: $CMDLINE variable should be provided to switch_root
to let user specify runlevel on grub command line.
Feeding with -c /dev/console as well as busybox switch_root enables that option.
(From OE-Core rev: 5a2f4feeaac4f9278fa0cf808c2f495f0c19324f)
Signed-off-by: Krzysztof Sywula <krzysztof.m.sywula@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The '-c DEV' option is specific to the switch_root provided by busybox.
switch_root from util-linux doesn't recognize this option. As a result,
if we we this init-live.sh script together with util-linux, we would get
a kernel panic when executing switch_root.
Besides, this option doesn't seem to have any useful effect as far as I
can see. Removing it doesn't affect the behaviours of our live images.
(From OE-Core rev: 6f50ccb8ae9e11870f99bb3b191f677c3633cd0d)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
systemd-udevd is back in /lib, so revert this change.
This reverts commit 27bb516be4.
(From OE-Core rev: 3f6324a86cb8c1c253af06a1033ac71fa61c58d3)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The iso and hddimg share a common concept of 'live image', and they
use the same initramfs and thus the same init. However, that init
script in initramfs made a wrong assumption that the rootfs image
was read-only by itself. This is apparently not true for hddimg.
To make things work as expected, this init script should at least
distinguish between a read-only rootfs image and a read-write one.
This patch adds this ability to the init script. After this change,
the init script would be able to check whether the rootfs image is
read-only or not. If the rootfs image is read-write, the image will
be mounted and then booted directly. No union mounts will be attempted
in this case.
[YOCTO #5164]
(From OE-Core rev: 29f869b68a9017502f75915784a924f0fe9d4be1)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
If the live image is mounted as read-only, we cannot make necessary
directories under $ROOT_MOUNT/media, so trying to move the mount points
lead to errors.
So in case that no unification filesystem mechanism is available in kernel
and the rootfs is mounted as read-only, we mount tmpfs on $ROOT_MOUNT/media
so that it's possible to make necessary directories under it.
[YOCTO #4881]
[YOCTO #4103]
(From OE-Core rev: aeeb3418ff08dfd29edc0ce8a41cb6887d4e11fe)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
My test environment must have been messed up as now hddimgs are failing to
re-mount / as read-write.
This reverts commit 7af92f8fa3.
(From OE-Core rev: 4174dcbd3328e6badb269d09b024f2b83408bd8c)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
So that the root filesystem can be fsck'd properly, mount it read only. Either
initscripts or systemd will re-mount as read-write in early boot.
(From OE-Core rev: 1ace2bdd8d6d950038fb6d9b83f6eceba276f588)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This patch tries to make a union mount in live image. For example,
if aufs is enabled with the aufs-enable.scc configuration fragment,
the init-live.sh script will use aufs to make a union mount.
Although overlayfs is not supported by Yocto kernel yet, this patch
still takes it into consideration with the expect that the related
code should at least serve as a placeholder.
[YOCTO #1487]
[YOCTO #4761]
(From OE-Core rev: 3cd6fedd815688b2f3fd97a56feb5f8696ebeace)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The unionfs has been disabled for more than a year and it's not going
to be used any more.
This patch cleans up the unionfs related code.
[YOCTO #4761]
[YOCTO #1487]
(From OE-Core rev: ba5e437bc7335468a70ea293496f78e1a9d66287)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Reboot system repeatedly, occasionally found usb automount failed, a
low probability but it happens.
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
none 1024972 4 1024968 0% /dev
/dev/sda3 7689384 3540940 3757840 49% /media/sda3
/dev/sda2 146127424 1238432 137466120 1% /media/sda2
/dev/sda1 17845 14570 2354 86% /media/sda1
/dev/sdb 293400 288560 4840 98% /media/sdb
/dev/sdc4 457632 32 457600 0% /media/sdc4
/dev/sdc1 475018 2321 447749 1% /media/sdc1
/dev/sdd 1382298 1382298 0 100% /media/sdd
/dev/sdc2 475694 2320 448374 1% /media/sdc2
/dev/loop0 270649 181249 75644 71% /
df: /media/sdc3: No such file or directory
tmpfs 1029352 0 1029352 0% /dev/shm
tmpfs 1029352 2816 1026536 0% /run
tmpfs 1029352 0 1029352 0% /sys/fs/cgroup
tmpfs 1029352 4 1029348 0% /tmp
tmpfs 1029352 0 1029352 0% /media/ram
tmpfs 1029352 116 1029236 0% /var/volatile
When boot media has been found, udev will be killed. If udev is busy
to mount other medias at the killing time (especially medias is many),
the above issue will occur occasionally.
Invoke `udevadm settle' before killing udev will resolve this
issue, it watches the udev event queue, and exits if all current
events are handled.
Use variable `_UDEV_DAEMON' to replace hardcoded `udevd' to keep
consistent with previous.
[YOCTO #4745]
(From OE-Core rev: 2f209a7045a93e7e42f90418a42f464827b4a7f8)
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
1, This issue happens to BSP only.
After a BSP board is booted with Yocto linux from USB drive, "cat /proc/mounts" shows:
...
/dev/sda3 /media/sda3 ext3 rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered 0 0
/dev/sda1 /media/sda1 ext3 rw,relatime,errors=continue,barrier=1,data=ordered 0 0
/dev/sda2 /media/sda2 ext3 rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered 0 0
...
but actually the directory /media/sda1 doesn't exist at all, "df" shows:
...
df: /media/sda3: No such file or directory
df: /media/sda1: No such file or directory
df: /media/sda2: No such file or directory
...
2, This is because the mount data comes from proc setup during early boot
before the change root, which then uses a different root filesystem, the
media is not in the new root filesystem.
3, During early boot before switch_root, use `mount --move' to move all
medias to the new root filesystem could also fix this issue.
[YOCTO #2064]
[YOCTO #3705]
(From OE-Core rev: 79bd773cc5e8b8e873cabeb2b9a91f460501dad7)
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
As per the previous commit, systemd-udevd is now in /sbin/systemd/.
(From OE-Core rev: ff0fd25206c3c75921d51cb80bcb6c94ca47b405)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
For better or worse we need to use base_sbindir for udev's libexec dir. This
updates the initrdscripts to also cover the new location. I'd prevously assumed
that it was already covered but its not. udev internal binaries shouldn't be in
PATH so we have to do this to deal with the issue.
(From OE-Core rev: 7e17cba75c20ad820d30128d9b4b0132e7b924a8)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Previously, the /media/xxx which contains the root image was not
moved to be under the real root filesystem. Because of this, the
output of the 'mount' command is somewhat confusing, that is, it
has some mount point that is not even in the filesystem.
Besides, on some machine, it caused the recovery procedure when we
booted it next time.
This patches fixes this issue by moving the /media/xxx over to be
under the real root filesystem.
[YOCTO #2064]
[YOCTO #3705]
(From OE-Core rev: 261d21d36298bb7822ee7370c30441f42ef2b093)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
udevd isn't on $PATH and is in different places depending on what version of
udev is being used. Copy the code from initramfs-framework to search for the
right udevd at boot time instead of hard-coding a location.
(From OE-Core rev: a5de76317112fc065a78a745c2f23775dca15d75)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
A live system had duplicate mount points for the same filesystem
in the output of 'mount' command. That was because we didn't handle
the temporary mounts properly before switch_root.
This patch fixes this problem by moving the mount points of some
filesystems to the corresponding directories in the real root filesystem.
[YOCTO #3155]
(From OE-Core rev: 050a745413f8bb26212b84da391e0f7665f77728)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Adds "debugshell" command line parameter for live/install images.
If the init live fails to find and mount a root-fs image,
dumps to a shell after timeout so that the developer can figure
what's wrong.
Timeout defaults to 30 seconds, but it can be changed as param
argument.
Prior art in Ubuntu. Also, leaving a system stale isn't good form.
(From OE-Core rev: 6f99e530822ac32f32615590e22a9758ac210e84)
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
udevd moved location and isn't in $PATH anymore, so use an absolute path to
start it.
The control socket path moved too, so mkdir the directory it's in.
Mounts the new devtmpfs on /dev device tree.
(From OE-Core rev: 543606e5dc379497c34196d004a214e847f5db2d)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Alexandru Damian <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This had nowhere near enough testing...
This reverts commit ffb6928f57.
(From OE-Core rev: f162f0ecc96fdfb564aad968e5b8bc670640ea68)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
set -e allows to exit if a command fails. We install a trap and execute
emergency_shell() when either the init script exits or when ctrl-c is
typed (say if we are stuck somewhere and we want to debug it).
(From OE-Core rev: ae5e2bd994e3f60d3803ab56e6ed34d08fbc56f0)
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
[YOCTO #1919]
Create a basic EFI installer script modeled after the existing installer
and add it to a new initramfs-live-install-efi recipe. Update the
init-live.sh script to distinguish between LABEL=install and
LABEL=install-efi and select the appropriate script. Add the efi
installer to core-image-minimal-initramfs.
Update grub-efi.bbclass to use "LABEL=install-efi" when it detects a
label of "install". This is clearly not ideal, but a proper fix would
involve decoupling the LABELS assignment from the image-live.bbclass
usage of SYSLINUX_LABELS. We should be able to address that in a
follow-on clean-up series.
V2: Include missing initramfs-live-install-efi_1.0.bb
V3: Rebase after Radu's console_params fix
(From OE-Core rev: 4bce3417917a3e88ba6529db394525fba82e0699)
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Live image installer did not preserve BSP specified console= kernel parameter.
This patch updates the init scripts that are responsible for grub.cfg creation
so that options like console= are passed allong from installer to installed img
[YOCTO #2426]
(From OE-Core rev: e18c59eb5a61f265b9cad6de68359fa1430b0e58)
Signed-off-by: Radu Moisan <radu.moisan@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
[YOCTO #1487]
When booting up with liveCD image, init scripts can't work well on read-only filesystem. Unionfs,
which is supported in Yocto kernel, allows a filesystem to appear as writeable, but without
actually allowing writes to change the filesystem.
Use unionfs to mount rootfs and make root file system can be writen when using liveCD to boot up.
Set UNION_FS variable depending on kernel config, so that it can work with kernel which doesn't
have unionfs feature.
[RP: Mark recipe as machine specific due to kernel dependency]
(From OE-Core rev: b7f4e8d153c2aebbcf6556e7e926f6b94801d6aa)
Signed-off-by: Yang Shi <yang.shi@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The script was making some assumptions that enforced many requirement
in the machine kernel configuration and usage, besides it were too
while booting.
Changes included:
* fix indentation;
* rdepends on udev;
* allow use of isofs as module;
* remove rootdelay param parsing as it was unused;
* don't verbosely kill udevd and mknod;
* mount devtmpfs into rootfs, if available, before swithing root;
(From OE-Core rev: 3fc8cec53038f41d31344040c56d62aac90ba7e0)
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
If we don't set PATH, then the shell will specify one for us.
Busybox adds the sbin dirs, but bash does not. I hit an
issue where bash (among other things) ended up in my initrd
and the boot scripts failed due to a bad default PATH. While
that is a separate issue, we should not be at the mercy of the
shell's default PATH. Update the initrdscripts to all specify:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
(From OE-Core rev: 4617ae0f433876037c2c9a0dfdb5e373e7a5c77b)
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Both hddimg and livecd use init-live.sh script to boot the rootfs.img.
But the paths of rootfs.img in hddimg and livecd are different. So we add
a variable "ISOLINUX" to provide a correct path.
(From OE-Core rev: 4e7221d23bf335cbb4e1e2ba703e4c0a04df7129)
Signed-off-by: Jingdong Lu <jingdong.lu@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Fix bug: [YOCTO #686]
Because the variable "ROOT_IMAGE" in init-live.sh is not correct, it fails to
run when using liveCD. Modify value of "ROOT_IMAGE" to "isolinux/rootfs.img".
If we want to use liveCD, we also need to add some kernel options related to
CDROM support when compling kernel.
(From OE-Core rev: f9b6f41c9249cc90f7621d446eafae5e5508dd6e)
Signed-off-by: Jingdong Lu <jingdong.lu@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Fixes [BUGID #693]
The init-live.sh script starts udevd in init-live.sh:early_setup(),
but doesn't account for the possibility that the root device may have
already been registered by the kernel before udevd starts up.
If the device is detected after udevd starts up, everything's fine -
udevd gets the 'add' uevent for the device, the root image shows up at
e.g. /media/sda/rootfs.img, and the boot continues.
If however the device is detected before udevd starts up, udevd misses
the 'add' uevent and the root image never shows up, causing it to stay
in the 'waiting for removable media' loop forever.
The 'udevadm trigger' command is meant to be used to avoid this
situation, but init-live.sh doesn't use it. Furthermore, since the
default was changed in udev 152 from 'add' to 'change', the command
needs to explicity name 'add' as the action.
Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
Having one monolithic packages directory makes it hard to find things
and is generally overwhelming. This commit splits it into several
logical sections roughly based on function, recipes.txt gives more
information about the classifications used.
The opportunity is also used to switch from "packages" to "recipes"
as used in OpenEmbedded as the term "packages" can be confusing to
people and has many different meanings.
Not all recipes have been classified yet, this is just a first pass
at separating things out. Some packages are moved to meta-extras as
they're no longer actively used or maintained.
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-08-27 15:29:45 +01:00
Renamed from meta/packages/initrdscripts/files/init-live.sh (Browse further)