Войти Зарегистрироваться Войти через
Главная › Все вопросы › Компьютеры › Операционные системы › UNIX и Linux
weend 02 января 2008 года  

Помогите разобраться с установкой загрузчика(GRUB) на USB

Здравствуйте, все!
Пытаюсь скинуть загрузчик на USB-флешку, опираясь на статью:
http://www.linuxnsk.ru/component/option,com_smf/Itemid,107/action,printpage/topic,276.0
Все stage-файлы скопированы в директорию gurb на USB. В вышеприведенной статье сказано:

Конечным шагом будет установка загрузочной записи на диск. MBR представляет собой 512 байт скрытой области на диске, зарезервированной специально для загрузки. Для установки MBR воспользуйтесь GRUB-шелл - простая командная оболочка, которая используется для связанных с GRUB задач.

Код
grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

device говорит GRUB'у, какое устройство использовать при обработке команд.
root устанавливает партицию, с которой GRUB будет грузится по-умолчанию. Это тот раздел, на который скопированы stage-файлы. GRUB начинает отсчёт не с единицы (1),а с нуля (0).
setup создает MBR на USB-драйве.
quit выводит вас из командной оболочки GRUB.


Выскакивает ошибка(Error while parsing number) уже при вводе второй команды. Вопрос: какие параметры мне нужно вводить, если:
USB-flash определяется ОС, как sdb.
SATA-диск(с него идет загрузка) определяется ОС, как sda. Причем, Этот диск разбит на 3 раздела: sda5 - NTFS, sda6 - Linux SWAP, sda 7 - Linux.
НО(!!!) в /boot/grub/menu.lst:

...title openSUSE 10.3
root (hd0,6)
kernel /boot/vmlinuz-2.6.22.5-31-default...


Этот интересный момент связан с особенностью BIOS'a. Изначально SATA-диск определяется БИОСом, как Primery IDE. Хотя, все равно не понятно, почему загрузка идет с 6 партиции...
В общем, помогите новичку разобраться с необходимыми параметрами, плиз :)
amdk7 03 января 2008 года
50 50
Я думаю что для sdb будет hd1, вообще у grub есть файлик соответствия. Он гад каждый раз запускается и заново его делает.
Сколько раз грамотно пытался поставить grub на второй диск, что не загрузочный успеха не добивался.
(hd0,6) - как раз sda7, логично грузится оттуда, т.к. там Linux, а в /dev/sda в самом начале идёт MBR с первой частью GRUB.
Посмотрите grub-install он может делать тоже что и grub внутри своего меню.
По идее, должно быть два момента:
stage1 пишется в MBR, далее управление идёт на stage1.5, если оный файл не потёрли. При этом в stage1 прописывается внутри адрес того сектора откуда пошёл stage1.5. Т.е. не всегда тупое копирование поможет. Надо внутри какие-то байтики менять, но какие я не понял.
Также stage1.5 модифицируется при установке и в него пишетс путь к stage2 типа /boot или как-то ещё в файловой системе. Т.е. он тоже внутри меняется. По идее stage1.5 можно двигать, если stage1 будет знать где начало stage1.5 и в тех же командах можно задавать число секторов, но мне это ни разу удачно не удалось.
Один раз даже была проблема с Software RAID, т.к. он пишет данные во второй сектор, иногда третий и чуть дальше(следующие после MBR), в идеале эти сектора не заняты, только если у вас не стоит GRUB, которы туда записал или запишет stage1.5. Гемор ещё тот как они не дружат. Вопрос решается сдвигом или если диск небольшой (stage2 окажется в пределах первых 8 Гб), то можно без stage1.5 обойтись, тогда в stage1 пропишется адрес stage2 куда передать управление.
А вот как это на практике и на флешку - не знаю, и chroot и пр пробовал - нигде умного FAQ как сделать рабочую копию GRUB на второй винт не нашёл, чтобы после второй винт сделать первым, а первый отключить вовсе.
Частень получалось что grub ставится, но адрес у него не его винта, а с того что загрузился. В результате винты меняешь местами грузится, а отключаешь старый нет, но это тоже лучше - грузишься с двумя винтами и после уже переставляешь теми командами что вы написали, после чего уже старый винт(второй) можно отключить и без него грузится нормально.
Если найдёте нормальную ссылку или будет результат - просьба написать.
Написать комментарий
Оценить:
1очень плохой ответ
2плохой ответ
3средний ответ
4хороший ответ
5отличный ответ
Опять весь день провел за этим грё.., простите грубом...
В общем так. Получилось, но не совсем :)
http://users.bigpond.net.au/hermanzone/p15.htm#How_to_add_Grub_to_your_USB_thumb_drive.
Пункт "How to add GRUB to your USB thumb drive" - сделай поиск по тексту, так быстрее.
В кратце:
1. Форматнул всю флешку в ext2(не 3). Ибо, толи из-за глючного менеджера дисков, толи я что-то напутал, но при другом раскладе(разбить на 2 раздела или просто FAT или ext3) GRUB флешку в упор не видел...
2. Выполнил все, как сказано в инструкции из вышеприведенной ссылки. Здесь очень важный момент: chmod -R 777 /media/usbdisk/boot/grub :)

А после этого начались мои приключения :)
Ну, GRUB с флешки грузиться!!! Но с убийственным косяком - НЕ видит жесткий диск... :(((( Т.е. команда find /boot/grub/stage1 выдает только один диск hd0(в данном случае - флешка).
Мало того. Вынимаю флешку, выставляю в биосе "грузиться с жесткого диска". А тут ХОП, и выдает GRUB ошибку, мол, нужна мне флешка... :))) Провозился я долго(часа 3) из-за своей неопытности. Нужно было лишь убрать строчку с флешкой из fstab...
В итоге, GRUB грузиться, но не видит HDD :( на сегодня это все. — weend
Дополнение:
Зная, что с флешки грузиться очень долго, я намеренно не скопировал на флешку ядро - сосбно, рассчитывал, что он все таки увидит жесткий диск...
Сейчас, ввиду не возможности увидеть жесткий диск, решил скинуть ядро на флешку. Оно загрузилось :) Так, что способ описанный по ссылке из предыдущего коммента работает, но очень медленно... :(
Ессно, как только линукс загрузился, флешку можно вынимать :) — weend
Загрузка...