Вопрос или проблема
Я хочу загрузить дистрибутивы Linux из командной строки GRUB 2.0. Я пытался сделать это для нескольких дистрибутивов, и в “лучшем” случае я получаю подсказку initramfs
, без GUI, который запускается, если дистрибутив запускается стандартным способом. Результирующая файловая система, похоже, содержит файлы из initrd файла (менее 100 Мб), но не в filesystem.squashfs (который больше 1 Гб).
Файлы vmlinux, initrd и filesystem.squashfs находятся в папке casper
, и команда linux в записи меню в grub.cnf в дистрибутивах содержит boot=casper
. Я подозреваю, что имя папки casper
не обязательно для работы параметра ядра, casper, насколько я понял из Википедии, это опция, связанная с постоянностью.
Также, насколько я понял проблему, когда процесс загрузки пытается сделать что-то с unionfs, он не может найти файл SquashFS со всеми, кроме ядра, компонентами дистрибутива, чтобы добавить их. Как мне указать его местоположение? Может быть, проблема имеет другую корневую причину, пожалуйста, скажите мне об этом.
ДОБАВЛЕНО 0: Я изменил команду linux (hd0,msdos2)/casper/vmlinuz
, добавив root=UUID=то, что команда ls дает для раздела с дистрибутивом
, и теперь он запускается, в конечном итоге получая много строк stdin: Не пишущая машинка
, затем (initramfs) Невозможно найти носитель с живой файловой системой
и снова командную строку. Строки на экране stdout были такими же, как без параметра root… Я просто не помню точно, столько строк во время загрузки.
Насколько я понимаю из руководства GRUB и моих проб и ошибок, переменная root
может указывать только на устройство, а не путь внутри устройства, так что я вижу, что установка её не укажет на файл squashfs внутри папки casper.
ДОБАВЛЕНО 1: Я выполнил grep -rnw 'местоположение смонтированного файла initrd' -e 'filesystem.squashfs'
согласно https://stackoverflow.com/questions/16956810/how-do-i-find-all-files-containing-specific-text-on-linux и ничего не нашел, так что не имею понятия, как процесс инициализации находит этот файл squashfs.
Для загрузки вы должны указать образы linux и initrd, в противном случае могут возникнуть проблемы.
В части linux вам не следует включать диск/раздел перед указанием пути, так как вы уже указали его в корне. В примере я указал /dev/sda1, но это может быть sdb или что-то другое.
linux /casper/vmlinuz-version-pae root=/dev/sda1
Затем вам нужно будет указать initrd; на этом этапе вам не нужно указывать корень, так как вы уже его указали.
initrd /casper/initrd.img-version-pae
И, наконец, просто введите boot, и система должна загрузиться нормально.
boot
Ответ или решение
Для успешного запуска живых дистрибутивов Linux через командную строку GRUB 2.0 и корректного объединения файловой системы SquashFS необходимо выполнить несколько ключевых шагов. Рассмотрим, как это сделать.
1. Понимание структуры файлов дистрибутива
Живые дистрибутивы Linux обычно имеет несколько основных компонентов:
- vmlinuz: ядро Linux.
- initrd/initramfs: образ для инициализации (временная файловая система).
- filesystem.squashfs: сжатая файловая система, содержащая основные файлы операционной системы.
Файлы обычно расположены в папке casper
, и именно ее использует параметр boot=casper
.
2. Настройка GRUB
Для правильного запуска дистрибутива нам нужно убедиться, что команда для GRUB правильно сформирована. Вот общая схема, которую можно адаптировать под ваш дистрибутив:
set root=(hd0,msdos1) # Указать правильный сэлектор устройства
linux /casper/vmlinuz root=/dev/sda1 persistent # Ядро (с указанием root для раздела)
initrd /casper/initrd.img # Указать initrd
boot # Запустить загрузку
3. Указание параметров загрузки
- root=UUID=…: Используйте UUID раздела. Чтобы узнать UUID, можно использовать команду
blkid
. - persistent: Используйте этот параметр, если вы хотите включить непрерывный режим.
Проблема, с которой вы столкнулись, (initramfs) Unable to find a medium containing live file system
, обычно указывает на то, что либо указанный путь к filesystem.squashfs
неверен, либо система не может его обнаружить.
4. Поиск filesystem.squashfs
Система инициирует поиск filesystem.squashfs
через параметры, которые указаны при загрузке. Основной параметр – это как раз boot=casper
, который указывает использовать casper
как источник. Убедитесь, что файл filesystem.squashfs
находится в той же папке, что и vmlinuz
и initrd
.
5. Отладка
Если загрузка по-прежнему не удается:
- Убедитесь, что GRUB установлен правильно.
- Проверьте целостность файлов. Разбитые или поврежденные файлы могут вызвать проблемы.
- Попробуйте протестировать другую версию ядра или initrd.
- Зайдите в GRUB и убедитесь, что указанные пути к файлам действительно корректны и соответствуют фактическому расположению.
Заключение
Пошаговая корректировка команд для GRUB и обеспечение наличия корректных файлов в нужных местах позволят вам успешно загрузить дистрибутив. Если проблема сохраняется, возможно, стоит проверить другие параметры загрузки, используемые конкретным дистрибутивом. Успехов в ваших попытках!