Иногда после установки Linux GRUB загрузчик показывает консоль вместо списка операционных систем. В статье расскажу как попросить grub начать загрузку системы через консоль.
Запускаем Linux через консоль GRUB
Если при загрузке компьютера появилась консоль grub, то не отчаивайтесь:
Для начала надо определить на каком диске находится система. В этом поможет команда:
ls
Введите её и появится список всех дисков и разделов:
Теперь надо пройтись по всем дискам и разделам, чтобы найти два файла. Эти файлы начинаются на vmlinuz и initrd.img. В поиске этих файлов поможет та же команда ls. Скорее всего файлы будут лежать в корневой директории раздела '/'. Начинаем перебирать все диски и разделы:
ls (hd1,gpt2)/
Перебираем до тех пор, пока не найдём фалы vmlinuz и initrd.img. Верный результат будет выглядеть примерно так:
Запускаем Linux
Теперь надо запустить Linux. К сожалению, придётся минимум один раз наступить на грабли, но о них чуть позже.
Для загрузки Linux необходимо ввести следующие команды:
set root=(hd1,gpt2)
linux /vmlinuz-4.4.0-53-generic root=/dev/sda1
initrd /initrd.img-4.4.0-53-generic
boot
В приведённом примере необходимо заменить все пути и названия файлов на свои.
Чтобы облегчить задачу по набору всех значков в именах файлов, можно время от времени нажимать TAB на клавиатуре. Консоль сама будет завершать названия файлов. К примеру, набрали из второй строки "linux /vm", затем нажали TAB, строчка сама дописалась до "linux /vmlinuz-4.4.0-53-generic".
Если при вводе вышеуказанных команд консоль не вернула никаких сообщений, то всё сделано правильно и начнётся загрузка после ввода "boot".
ALERT! /dev/sda1 does not exist Dropping to shell!
При загрузке система монтируется на определенный раздел, в который её устанавливали. К примеру, если установка происходила в /dev/sda1 надо смонтировать систему туда. Но если система была установлена не в /dev/sda1, то во время запуска система выдаст ошибку:
ALERT! /dev/sda1 does not exist. Dropping to shell!
Это и есть грабли, о которых говорил ранее. На второй строчке примера было указано root=/dev/sda1:
linux /vmlinuz-4.4.0-53-generic root=/dev/sda1
Необходимо задать правильный раздел, потому что /dev/sda1 не подходит. Для этого вводим команду:
blkid
Появится список всех смонтированных разделов и их адреса:
Находим что-то похожее на root. В моём примере это
/dev/mapper/mint--vg-root
Перезапускаем систему и заново вводим в консоль grub все известные команды, но уже с правильным разделом для root:
set root=(hd1,gpt2)
linux /vmlinuz-4.4.0-53-generic root=/dev/mapper/mint--vg-root
initrd /initrd.img-4.4.0-53-generic
boot
Заключение
В статье описан один способов запуска linux через grub консоль. Есть и другие методы запуска. Читайте о них в следующих статьях.
Привет, а как сделать так, чтобы каждый раз не вводить при загрзке:
set root=(hd1,gpt2)
linux /vmlinuz-4.4.0-53-generic root=/dev/sda1
initrd /initrd.img-4.4.0-53-generic
boot
Привет. Ох, если бы я только знал!:)
Если найду - обязательно поделюсь. Но пока не нашёл. Поэтому пришлось забросить ультрабук prestigio, из-за которого и начал писать эту статью.
Привет. Помоги, пожалуйста, с установкой Linux. При выборе загрузочной флэшки появляется такое окно. Оставь контакты, как с тобой можно связаться? Спасибо.
А если загрузиться в систему и сделать update-grub - это не поможет "запомнить" настройки?
Здравствуйте!
После обновления ядра до последней версии система перестала запускаться. Ваша статья очень помогла - загрузился с предыдущего ядра.
Только у меня были нюансы. Я не устанавливал переменную root (set root=(hd0, gpt3)), потому что у меня файлы vmlinuz и initrd.img находятся в директории (hd0, gpt3)/boot и при установки переменной не правильно считываются пути к файлам. Я прописывал полный путь
linux (hd0, gpt3)/boot/vmlinuz-5.13. ...
initrd (hd0, gpt3)/boot/initrd.img-5.13. ...
Спасибо большое за статью! Это то что мне было нужно!