Skip to contentSkip to conversation

minimal-installer: improvements and bug fixes

PATCH New [email protected] 1 participant 3 messages Aug 16, 2013

lore
Share & tools
lore
#0 lore raw

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
#1 lore raw

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
index d2a0db3..c892075 100644
@@ -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
#2 lore raw

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
index ba48830..f891b02 100755
@@ -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