Наличие проблем с Grub2, загружающим Ubuntu от моего Внешнего жесткого диска

Я установил Ubuntu на своем внешнем жестком диске, но это не загрузится на моем ноутбуке. Что я делаю?

Я сделал некоторое чтение и проследил источник проблемы к Grub2. По-видимому, Grub2 не использует UUID устройства и использует каталог Linux вместо этого (/dev/sdf2). Это означает, что каждый раз, когда я включаю свой электронный жесткий диск в систему, которая имеет другое количество дисков, подключенных к нему, я не смогу загрузиться, не редактируя команду загрузки. Я не понимаю это слишком хорошо, но это - то, что я получил, из какого я читал.

Там какой-либо путь состоит в том, чтобы зафиксировать это?

Вот моя конфигурация личинки (обрезана для показа записи ядра в качестве примера). Я понятия не имею, почему это не использует UUID. Я не настраивал его однажды...

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-20-generic" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
    set quiet=1
    linux   /boot/vmlinuz-2.6.31-20-generic root=/dev/sdc2 ro   quiet splash
    initrd  /boot/initrd.img-2.6.31-20-generic
}
menuentry "Ubuntu, Linux 2.6.31-20-generic (recovery mode)" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
    linux   /boot/vmlinuz-2.6.31-20-generic root=/dev/sdc2 ro single 
    initrd  /boot/initrd.img-2.6.31-20-generic
}
0
задан 18.04.2010, 15:31

2 ответа

Проблема состояла в том, что мой device.map не был настроен правильно, который вел для расчистки использования имен человечности, например, sdf2, а не UUID жесткого диска. фиксация должна была обновить device.map и затем обновить grub2. Это сделано путем выполнения 'drivemap', я думаю, затем личинка обновления. Я не слишком уверен в команде для обновления device.map, потому что я сделал это приблизительно неделю назад, но да. Это на всякий случай, любой сталкивается с моей проблемой.

1
ответ дан 24.11.2019, 12:34

Хорошо, Вы правы, что это не захватывает UUID, который кажется мне нечетный.

Вот то, как запись ядра должна посмотреть (это от моего VM Ubuntu 9.10, который немного настраивают, но это должно быть справедливо запасом):

menuentry "Ubuntu, Linux 2.6.31-20-generic" {
    recordfail=1
    if [ -n ${have_grubenv} ]; then save_env recordfail; fi
    set quiet=1
    insmod ext2
    set root=(hd0,1)
    search --no-floppy --fs-uuid --set b22c7fe9-4354-40bf-b9bf-87a469289f6e
    linux /boot/vmlinuz-2.6.31-20-generic root=UUID=b22c7fe9-4354-40bf-b9bf-87a469289f6e ro
    initrd        /boot/initrd.img-2.6.31-20-generic
}

/boot/grub/grub.cfg файл сгенерирован, когда что-то выполняет личинку обновления из сценариев в/etc/grub.d и переменных в файле/etc/default/grub.


  • Теперь, в файле по умолчанию существует переменная, GRUB_DISABLE_LINUX_UUID, который, если установлено на истинный даст корень =/dev/sdXY, оценивает строке ядра Linux (вместо root=UUID =... оценивают). Я не думаю, что это - Ваша проблема, но проверьте свой/etc/default/grub файл для проверки. Необходимо видеть эти строки ( # в начале средств строки это комментируется):

    # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
    #GRUB_DISABLE_LINUX_UUID=true
    

    Если Вы видите GRUB_DISABLE_LINUX_UUID без # вначале, вставьте его, сохраните файл и работайте sudo update-grub повторно создавать grub.cfg. Затем проверьте grub.cfg снова, чтобы видеть, выглядит ли это правильным.


  • Если файл значений по умолчанию смотрит хорошо, затем проверьте сами UUID своего диска. Возможно, что диск UUID не установлены правильно или не становятся обнаруженными правильно. uDev имеет задание создания символьных ссылок в дереве устройств для диска UUID; проверьте их:

    $ ls -l /dev/disk/by-uuid
    total 0
    lrwxrwxrwx 1 root root 10 2010-04-18 04:15 b22c7fe9-4354-40bf-b9bf-87a469289f6e -> ../../sda1
    lrwxrwxrwx 1 root root 10 2010-04-18 04:15 e1c64ac1-186d-4c15-8833-6072ac6421df -> ../../sda5
    

    Если это не покажет Вам раздел, то Вы ожидаете видеть, Вы, возможно, должны были бы проверить файловую систему непосредственно с tune2fs (страница справочника) (замените/dev/sda1 правильным именем устройства):

    $ sudo tune2fs -l /dev/sda1 | grep UUID
    Filesystem UUID:          b22c7fe9-4354-40bf-b9bf-87a469289f6e
    

    Если это отсутствует, можно воссоздать его с:

    $ sudo tune2fs -U random /dev/sda1
    

    Теперь перепроверьте вывод tune2fs-l и затем проверьте/dev/disks/by-uuid снова. Вы, возможно, должны перезагрузить, прежде чем uDev берет изменения. Сценарии личинки обновления должны теперь взять UUID, таким образом повторно выполнить его и проверить новый grub.cfg, чтобы видеть, выглядит ли это правильным.


  • Если ни один из них не удается, Вы, возможно, должны вырыть немного глубже. Давайте проверим наши предположения:
    • Как Ваш загрузочный диск делится? (fdisk-l)
    • Как Ваш загрузочный диск отформатирован? (ext2/3/4? FAT32? NTFS?)
    • Вы устанавливали через Wubi?
0
ответ дан 24.11.2019, 12:34

Теги

Похожие вопросы