Заходим в консольный режим редактирования задания меняем ro на rw и дописываем init=/bin/bash После загрузки и passwd, не забываем sync чтобы изменения накатились на HDD
Дано: Пк с разными ОС
Цель: Возможность загрузки любой ОС по средствам Grub
Пк загружается в 3 этапа.
1 этап - Биос определяет винт с которого будет грузится загрузчик (МБР)
2 этап - После выбора винта, читается МБР в 1 секторе данного винта, в котором прописана программа загрузчик. Данная программа загрузчик выполняет промежуточной загруки и ее основная цель, загрузить следующую необходимую программу. Но это уже может быть программа с любого диска ПК или раздела, а может быть просто какой то файл
3 этап - Указанная программа, стартует.
В выше сказанном примере, 2 этап - это работа Grub, 3 этап - Ядро linux. Другими словами, войдя в загрузчик Grub мы должны загрузить ядро linux
Если речь идет о windows, то тут мы должны после загрузки Grub передать управление NTLDR.
Чтобы загрузить ядро linux мы используем следующие команды
set root=(hd0,5) linux /boot/vmlinuz-2.6.32-020632rc6-generic root=/dev/sda5 initrd /boot/initrd.img-2.6.32-020632rc6-generic boot
1) Мы должны определить root (диск и раздел с которого грузимся)
2) Указать ядро командой “linux”
3) Указать initrd (что то вроде инструкций для загрузки ядра) Название initrd совпадает с названием ядра
4) Boot (грузимся с указанных параметров)
Чтобы загрузить NTLDR мы используем следующие команды
set root=(hd0,1) chainloader +1 boot
1) Мы должны определить root (диск и раздел с которого грузимся)
2) Передаем управление данному разделу (в данном случае, подхватит NTLDR)
Столкнулся с grub1
Перед указанием пути, следует указывать и раздел. К примеру:
kernel (hd0,2)/boot/vmlin..... initrd (hd0,2)/boot/init....
Ядру необходимо указывать root иначе, оно будет в панике, так как не будет знать, куда монтировать диски
linux (hd0,2)/boot/vml...... root=/dev/sda2
На моем древнем GRUB не было ls, но можно было посмотреть файловую систему, вызвав
root (hd0,[TAB])
или диски
root (hd[TAB])
Разница между linux и kernel для меня осталась загадкой, но путем тыканья, выявленна конфигуразция, которая запустила мою Ubuntu с совершенно чужого Grub1. (видимо linux в Grub2, а kernel в Grub1)
root (hd0,2) kernel (hd0,2)/boot/vmlinu....... root=/dev/sda3 ro initrd (hd0,2)/booot/initr........
Как считать hd или /dev/sda?
Очень просто.
hd0 - первый винчестер. hd1 -второй винчестер и тд.
hd0,0 - первый раздел на первом винчестере. hd0,1 - второй раздел на первом винчестере.
/dev/sda - первый винчестер. /dev/sdb -второй винчестер и тд.
/dev/sda1 - первый раздел на первом винчестере. /dev/sda2 - второй раздел на первом винчестере.
Соответственно, указав (hd0,2) и /dev/sda3 я выбираю загрузку со первого винчестера, 3-его раздела диска.
Пример загрузки Мемтеста или других ПО
root (hd0,0) kernel /boot/memtest86+.bin
По началу я случайно указывал в root=/dev/sda1 на котором у меня стояла CentOS а в самом kernel и initrd указывал путь до ядра ubuntu на другом разделе. В итоге, с несколькими FAIL но CentOS полноценно загрузилась. Неработала лишь мышка. Видимо, это указывает на очень не прихотливость к ядру, так что если kernel panic, можно попробовать загрузить ядро с первого попавшегося linux -))