Site Tools


grub
сброс пароля
Заходим в консольный режим редактирования задания
меняем ro на rw и дописываем init=/bin/bash
После загрузки и passwd, не забываем sync чтобы изменения накатились на HDD

Возможность загрузки любой ОС по средствам Grub

Дано: Пк с разными ОС
Цель: Возможность загрузки любой ОС по средствам Grub

краткая теория

Пк загружается в 3 этапа.
1 этап - Биос определяет винт с которого будет грузится загрузчик (МБР)
2 этап - После выбора винта, читается МБР в 1 секторе данного винта, в котором прописана программа загрузчик. Данная программа загрузчик выполняет промежуточной загруки и ее основная цель, загрузить следующую необходимую программу. Но это уже может быть программа с любого диска ПК или раздела, а может быть просто какой то файл
3 этап - Указанная программа, стартует.

касательно grub

В выше сказанном примере, 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)

Практика

1

Столкнулся с grub1
Перед указанием пути, следует указывать и раздел. К примеру:

kernel (hd0,2)/boot/vmlin.....
initrd (hd0,2)/boot/init....
2

Ядру необходимо указывать root иначе, оно будет в панике, так как не будет знать, куда монтировать диски

linux (hd0,2)/boot/vml...... root=/dev/sda2
3

На моем древнем GRUB не было ls, но можно было посмотреть файловую систему, вызвав

root (hd0,[TAB])

или диски

root (hd[TAB])
4

Разница между 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-его раздела диска.

5

Пример загрузки Мемтеста или других ПО

root (hd0,0)
kernel /boot/memtest86+.bin
Забавный факт

По началу я случайно указывал в root=/dev/sda1 на котором у меня стояла CentOS а в самом kernel и initrd указывал путь до ядра ubuntu на другом разделе. В итоге, с несколькими FAIL но CentOS полноценно загрузилась. Неработала лишь мышка. Видимо, это указывает на очень не прихотливость к ядру, так что если kernel panic, можно попробовать загрузить ядро с первого попавшегося linux -))

хорошие доки
You could leave a comment if you were logged in.
grub.txt · Last modified: 2015/03/11 14:52 by conovaloff

Page Tools