diff options
author | Drew Moseley <drew_moseley@mentor.com> | 2014-07-02 18:09:28 -0400 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-07-10 17:38:33 +0100 |
commit | 2f7c92c4b5ec780cde4bce866a5095f5472ad88e (patch) | |
tree | a352d7646bb64da704c2263209536a08b311f49b /meta | |
parent | ae724e46f477a389096da077167114ea54affa7a (diff) | |
download | poky-2f7c92c4b5ec780cde4bce866a5095f5472ad88e.tar.gz |
init-install-efi.sh: improve hard drive searching process
(This patch was originally done against init-install.sh in
OE-Core rev 358f0584d779825307eec08c023b5ff14e72cf9e)
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.
(From OE-Core rev: 7386acf4ab63a5959e4907b29459b767f2bf2fdb)
Signed-off-by: Drew Moseley <drew_moseley@mentor.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-core/initrdscripts/files/init-install-efi.sh | 85 |
1 files changed, 53 insertions, 32 deletions
diff --git a/meta/recipes-core/initrdscripts/files/init-install-efi.sh b/meta/recipes-core/initrdscripts/files/init-install-efi.sh index 34c2ae3066..fcf21cd2f9 100644 --- a/meta/recipes-core/initrdscripts/files/init-install-efi.sh +++ b/meta/recipes-core/initrdscripts/files/init-install-efi.sh | |||
@@ -14,46 +14,67 @@ boot_size=20 | |||
14 | # 5% for swap | 14 | # 5% for swap |
15 | swap_ratio=5 | 15 | swap_ratio=5 |
16 | 16 | ||
17 | found="no" | 17 | # Get a list of hard drives |
18 | 18 | hdnamelist="" | |
19 | echo "Searching for a hard drive..." | 19 | live_dev_name=${1%%/*} |
20 | for device in 'hda' 'hdb' 'sda' 'sdb' 'mmcblk0' 'mmcblk1' | 20 | |
21 | do | 21 | echo "Searching for hard drives ..." |
22 | if [ -e /sys/block/${device}/removable ]; then | 22 | |
23 | if [ "$(cat /sys/block/${device}/removable)" = "0" ]; then | 23 | for device in `ls /sys/block/`; do |
24 | found="yes" | 24 | case $device in |
25 | 25 | loop*) | |
26 | while true; do | 26 | # skip loop device |
27 | # Try sleeping here to avoid getting kernel messages | 27 | ;; |
28 | # obscuring/confusing user | 28 | ram*) |
29 | sleep 5 | 29 | # skip ram device |
30 | echo "Found drive at /dev/${device}. Do you want to install this image there ? [y/n]" | 30 | ;; |
31 | read answer | 31 | *) |
32 | if [ "$answer" = "y" ] ; then | 32 | # skip the device LiveOS is on |
33 | break | 33 | # Add valid hard drive name to the list |
34 | fi | 34 | if [ $device != $live_dev_name -a -e /dev/$device ]; then |
35 | 35 | hdnamelist="$hdnamelist $device" | |
36 | if [ "$answer" = "n" ] ; then | 36 | fi |
37 | found=no | 37 | ;; |
38 | break | 38 | esac |
39 | fi | 39 | done |
40 | |||
41 | echo "Please answer y or n" | ||
42 | done | ||
43 | fi | ||
44 | fi | ||
45 | 40 | ||
46 | if [ "$found" = "yes" ]; then | 41 | TARGET_DEVICE_NAME="" |
47 | break; | 42 | for hdname in $hdnamelist; do |
43 | # Display found hard drives and their basic info | ||
44 | echo "-------------------------------" | ||
45 | echo /dev/$hdname | ||
46 | if [ -r /sys/block/$hdname/device/vendor ]; then | ||
47 | echo -n "VENDOR=" | ||
48 | cat /sys/block/$hdname/device/vendor | ||
49 | fi | ||
50 | echo -n "MODEL=" | ||
51 | cat /sys/block/$hdname/device/model | ||
52 | cat /sys/block/$hdname/device/uevent | ||
53 | echo | ||
54 | # Get user choice | ||
55 | while true; do | ||
56 | echo -n "Do you want to install this image there? [y/n] " | ||
57 | read answer | ||
58 | if [ "$answer" = "y" -o "$answer" = "n" ]; then | ||
59 | break | ||
60 | fi | ||
61 | echo "Please answer y or n" | ||
62 | done | ||
63 | if [ "$answer" = "y" ]; then | ||
64 | TARGET_DEVICE_NAME=$hdname | ||
65 | break | ||
48 | fi | 66 | fi |
49 | 67 | ||
50 | done | 68 | done |
51 | 69 | ||
52 | if [ "$found" = "no" ]; then | 70 | if [ -n "$TARGET_DEVICE_NAME" ]; then |
71 | echo "Installing image on /dev/$TARGET_DEVICE_NAME ..." | ||
72 | else | ||
73 | echo "No hard drive selected. Installation aborted." | ||
53 | exit 1 | 74 | exit 1 |
54 | fi | 75 | fi |
55 | 76 | ||
56 | echo "Installing image on /dev/${device}" | 77 | device=$TARGET_DEVICE_NAME |
57 | 78 | ||
58 | # | 79 | # |
59 | # The udev automounter can cause pain here, kill it | 80 | # The udev automounter can cause pain here, kill it |