minimal-installer: improvements and bug fixes
cover minimal-installer: improvements and bug fixes
From: Chen Qi <[email protected]>
The following changes since commit a7d1241db1120a5cce91395812e2613d1eacd652:
Temporary workaround with qemu images (2013-08-16 10:37:37 +0800)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib ChenQi/minimal-installer
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=ChenQi/minimal-installer
Chen Qi (2):
init-install.sh: improve hard drive searching process init-install.sh: fix to handle the boot partition correctly
meta/recipes-bsp/grub/grub-2.00/40_custom | 2 +- .../initrdscripts/files/init-install.sh | 160 ++++++++++---------- 2 files changed, 85 insertions(+), 77 deletions(-)
Signature · 1 line
1.7.9.5
PATCH 1/2 init-install.sh: improve hard drive searching process
From: Chen Qi <[email protected]>
Previously, only unremovable hard drives are searched and are treated as candidates of target disks to intall into.
However, it's possible that we're going to install the live image into a removable media such as an USB. This patch enables this possibility.
In addition, this patch presents more information about the hard drives so that user may have more knowledge about which hard drive they are going to install their image into.
[YOCTO #5018]
--- .../initrdscripts/files/init-install.sh | 98 +++++++++++--------- 1 file changed, 55 insertions(+), 43 deletions(-)
meta/recipes-core/initrdscripts/files/init-install.sh +55 -43
@@ -13,46 +13,66 @@ boot_size=20 # 5% for the swap swap_ratio=5 -found="no" - -echo "Searching for a hard drive..." -for device in 'hda' 'hdb' 'sda' 'sdb' 'mmcblk0' 'mmcblk1' - do - if [ -e /sys/block/${device}/removable ]; then - if [ "$(cat /sys/block/${device}/removable)" = "0" ]; then - found="yes" - - while true; do - # Try sleeping here to avoid getting kernel messages - # obscuring/confusing user - sleep 5 - echo "Found drive at /dev/${device}. Do you want to install this image there ? [y/n]" - read answer - if [ "$answer" = "y" ] ; then - break - fi - - if [ "$answer" = "n" ] ; then - found=no - break - fi - - echo "Please answer by y or n" - done - fi - fi - - if [ "$found" = "yes" ]; then - break; - fi +# Get a list of hard drives +hdnamelist="" +live_dev_name=${1%%/*} + +echo "Searching for hard drives ..." + +for device in `ls /sys/block/`; do + case $device in + loop*) + # skip loop device + ;; + ram*) + # skip ram device + ;; + *) + # skip the device LiveOS is on + # Add valid hard drive name to the list + if [ $device != $live_dev_name -a -e /dev/$device ]; then + hdnamelist="$hdnamelist $device" + fi + ;; + esac +done +TARGET_DEVICE_NAME="" +for hdname in $hdnamelist; do + # Display found hard drives and their basic info + echo "-------------------------------" + echo /dev/$hdname + if [ -r /sys/block/$hdname/device/vendor ]; then + echo -n "VENDOR=" + cat /sys/block/$hdname/device/vendor + fi + echo -n "MODEL=" + cat /sys/block/$hdname/device/model + cat /sys/block/$hdname/device/uevent + echo + # Get user choice + while true; do + echo -n "Do you want to install this image there? [y/n] " + read answer + if [ "$answer" = "y" -o "$answer" = "n" ]; then + break + fi + echo "Please answer y or n" + done + if [ "$answer" = "y" ]; then + TARGET_DEVICE_NAME=$hdname + break + fi done -if [ "$found" = "no" ]; then - exit 1 +if [ -n "$TARGET_DEVICE_NAME" ]; then + echo "Installing image on /dev/$TARGET_DEVICE_NAME ..." +else + echo "No hard drive selected. Installation aborted." + exit 1 fi -echo "Installing image on /dev/${device}" +device=$TARGET_DEVICE_NAME # # The udev automounter can cause pain here, kill it
@@ -65,14 +85,6 @@ rm -f /etc/udev/scripts/mount* # umount /dev/${device}* 2> /dev/null || /bin/true -if [ ! -b /dev/sda ] ; then - mknod /dev/sda b 8 0 -fi - -if [ ! -b /dev/sdb ] ; then - mknod /dev/sdb b 8 16 -fi - if [ ! -b /dev/loop0 ] ; then mknod /dev/loop0 b 7 0 fi
Signature · 1 line
1.7.9.5
PATCH 2/2 init-install.sh: fix to handle the boot partition correctly
In reply to [email protected]From: Chen Qi <[email protected]>
Previously, the boot partition was created for the target hard drive but there was no corresponding entry for it in /etc/fstab. Besides, even if the boot partition was mounted, it would just result in odd directory hierarchy like /boot/boot/grub. However, what we really need is /boot/grub. This patch fixes this problem.
Besides, for future maintance work, this patch also renames some of the intermediate directories. It uses more descriptive names like /tgt_root and /src_root. The name of /ssd is dropped.
[YOCTO #5018]
--- meta/recipes-bsp/grub/grub-2.00/40_custom | 2 +- .../initrdscripts/files/init-install.sh | 62 +++++++++----------- 2 files changed, 30 insertions(+), 34 deletions(-)
meta/recipes-bsp/grub/grub-2.00/40_custom +1 -1
@@ -5,5 +5,5 @@ exec tail -n +3 $0 # the 'exec tail' line above. menuentry "Linux" { set root=(hd0,1) - linux /boot/vmlinuz root=__ROOTFS__ rw __CONSOLE__ __VIDEO_MODE__ __VGA_MODE__ quiet + linux /vmlinuz root=__ROOTFS__ rw __CONSOLE__ __VIDEO_MODE__ __VGA_MODE__ quiet }
meta/recipes-core/initrdscripts/files/init-install.sh +29 -33
89 lines not on this page · raw message
Signature · 1 line
1.7.9.5