35

Я установил последнюю версию ArchLinux (2014.06.01) на MacBook Pro 8,1 (15 ", если это имеет отношение к оборудованию) с двойной загрузкой OSX, следуя инструкциям в официальном руководстве по установке. Тем не менее, при попытке перезагрузиться в только что установленную систему, я попадаю в оболочку восстановления:

ERROR: device 'UUID=<snip>' not found. Skipping fsck.
ERROR: Unable to find root device 'UUID=<snip>'.
You are being dropped to a recovery shell
    Type 'exit' to try and continue booting
sh: can't access tty: job control turned off
[rootfs /]# 

(Я удалил UUID, потому что не хотел его печатать, но он такой же, как тот, который мне дал blkid (с установочного диска) для раздела, на котором установлен ArchLinux)

Другие онлайн- источники предполагают, что это связано с устаревшим пакетом pacman , udev , filesystem или linux . Однако они описывают эту проблему только после обновления ядра из рабочей системы, а не после новой установки. Я принудительно переустановил эти пакеты из среды arch-chroot при загрузке на установочный диск, но это не изменило ситуацию.

Вместо этого, немного поэкспериментировав с моим grub.cfg что все, на что вы жалуетесь, является root параметром команды linux выбирающей, какой файл vmlinuz использовать. Действительно, изменение root=UUID=<snip> на root=LABEL=ArchLinux или root=/dev/sda8 (оба описывают, где установлен ArchLinux, и я наверняка успешно использовал вторую версию ранее с другим дистрибутивом), что приводит к Unable to find root device 'LABEL=ArchLinux' и Unable to find root device '/dev/sda8' соответственно. Кроме того, GRUB, кажется, может найти раздел по UUID, только ядро linux жалуется на то, что он не найден, так как начальный ramdisk правильно загружен (т.е. это не ошибка GRUB, как описано здесь, а ошибка linux) ,

В качестве примечания: оболочка восстановления строго ограничена, и стандартный вывод не работает должным образом. Тем не менее, ls работает, и список файлов показывает базовую (временную) файловую систему, но все дисковые устройства отсутствуют в /dev . Тем не менее, я не знаю, является ли это частью ошибки или нет.

Это похоже, но не то же самое, что Linux не находит корневую файловую систему при загрузке, так как раздел был ext4 с самого начала. Также не совсем то же самое, но, возможно, имеет значение:Невозможно загрузить ArchLinux на Macbook Pro 7.1 - открывается в оболочку восстановления, однако там она падает в оболочку ramfs вместо оболочки rootfs и сообщения об ошибках различаются.

2 ответа2

32

Вместо загрузки с обычным образом, я использовал запасную версию и смог загрузить систему. Как выяснилось, Linux не смог обнаружить никаких дисков из-за block хука mkinitcpio (отвечающего за блочные устройства), отсутствующего в образе по умолчанию. Это было связано с тем, что он был помещен после autodetect в /etc/mkinitcpio.conf . Чтобы это исправить, нужно изменить строку HOOKS=... в этом файле, чтобы block предшествовал autodetect

До исправления:

HOOKS="base udev autodetect block modconf filesystems keyboard fsck"

После исправления:

HOOKS="base udev block autodetect modconf filesystems keyboard fsck"

Запуск mkinitcpio -p linux для регенерации initramfs затем навсегда устранил проблему.

1

Я столкнулся с аналогичной проблемой, но с другой настройкой. Я использую ArchLinux на виртуальной машине, а мой загрузчик - syslinux. Я использовал ваш трюк при переключении порядка хуков ядра, но все равно оказался в оболочке rootfs.

Что решило проблему для меня, так это изменив строку APPEND в моем syslinux.cfg с

APPEND root=UUID=<snip>

в

APPEND root=PARTUUID=<snip>

Вы можете легко добавить PARTUUID в файл syslinux.cfg , используя команду вроде blkid | grep sda1 | awk '{ print $7 }' >> /boot/syslinux/syslinux.cfg предполагая, что ваш корневой раздел - /dev/sda1

После этого вы можете использовать ваш любимый текстовый редактор, чтобы переместить строку в соответствующее пространство.

РЕДАКТИРОВАТЬ: я только что понял, что номер столбца в маленьком скрипте awk может отличаться, поэтому лучше взглянуть на вывод, прежде чем передать его в syslinux.cfg

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .