diff --git a/boot/boot-stage-1-init.sh b/boot/boot-stage-1-init.sh index f1cad685e357..3e024d17ccfe 100644 --- a/boot/boot-stage-1-init.sh +++ b/boot/boot-stage-1-init.sh @@ -73,15 +73,20 @@ if test -n "@autoDetectRootDevice@"; then # Look for the root device by label. echo "probing for the NixOS installation CD..." - for i in /sys/devices/*/*/media; do - if test "$(cat $i)" = "cdrom"; then + for i in /sys/block/*; do + if test "$(cat $i/removable)" = "1"; then - # Hopefully `drivename' matches the device created in /dev. - devName=/dev/$(cat $(dirname $i)/drivename) + echo " in $(basename $i)..." - echo " in $devName..." + set -- $(IFS=: ; echo $(cat $i/dev)) + major="$1" + minor="$2" - if mount -n -o ro -t iso9660 $devName /mnt/root; then + # Create a device node for this device. + rm -f /dev/tmpdev + mknod /dev/tmpdev b "$major" "$minor" + + if mount -n -o ro -t iso9660 /dev/tmpdev /mnt/root; then if test -e "/mnt/root/@rootLabel@"; then found=1 break diff --git a/boot/make-devices.sh b/boot/make-devices.sh index 406aeacbe50c..4e4f80b3fb31 100644 --- a/boot/make-devices.sh +++ b/boot/make-devices.sh @@ -13,30 +13,3 @@ mknod -m 0600 /dev/tty c 5 0 if ! test -e /dev/console; then mknod -m 0600 /dev/console c 5 1 fi - -mknod -m 0660 /dev/hda b 3 0 -mknod -m 0660 /dev/hda1 b 3 1 -mknod -m 0660 /dev/hda2 b 3 2 -mknod -m 0660 /dev/hda3 b 3 3 - -mknod -m 0660 /dev/hdb b 3 64 -mknod -m 0660 /dev/hdb1 b 3 65 -mknod -m 0660 /dev/hdb2 b 3 66 -mknod -m 0660 /dev/hdb3 b 3 67 - -mknod -m 0660 /dev/hdc b 22 0 -mknod -m 0660 /dev/hdc1 b 22 1 -mknod -m 0660 /dev/hdc2 b 22 2 -mknod -m 0660 /dev/hdc3 b 22 3 - -mknod -m 0660 /dev/hdd b 22 64 -mknod -m 0660 /dev/hdd1 b 22 65 -mknod -m 0660 /dev/hdd2 b 22 66 -mknod -m 0660 /dev/hdd3 b 22 67 - -mknod -m 0660 /dev/sda b 8 0 -mknod -m 0660 /dev/sda1 b 8 1 -mknod -m 0660 /dev/sda2 b 8 2 -mknod -m 0660 /dev/sda3 b 8 3 - -mknod -m 0660 /dev/sr0 b 11 0