LINUX.ORG.RU

[grub] конфигурационные файлы


1

3

Исходные условия: Есть удалённая тестовая дуалбут машинка Fedora 13 Release + Win 7 (x86_64), Grub 0.97 (дефолтный из поставки федоры). Граб настроен грузить по умолчанию винду (запись default=1), федора и все конфиги на ext4 разделе (то есть нативного виндового драйвера нету).

Выполненные действия:

1) Попытка номер 1:

- hex-редактором открываем раздел с ext4

- ищем конфиг граба

- правим default=1 на default=0

- ребут

Результат: забутались в винду.

2) Попытка номер 2:

- находим hex-редактором оставшиеся копии конфига граба (нашлось ещё три)

- в каждой меняем default=1 на default=0

- ребут

Результат: забутались в федору.

Всвязи с эти возникли несколько вопросов:

1) В федоре есть /etc/grub.conf и /boot/grub/grub.conf, но я думал, что при редактировании /etc/grub.conf он при ребуте копируется в /boot. Это так?

Сам я всегда правлю только /etc/grub.conf и после ребута конфиги в /boot и в /etc идентичны. В какой конкретно момент происходит синхронизация конфигов и происходит-ли?

2) Даже если учесть конфиг в /boot и конфиг в /etc, откуда взялись ещё два конфига при просмотре раздела редактором? Это может быть связано, например, с журналом файловой системы? («лишние» конфиги я потом в забутавшейся системе искал find'ом, но не нашёл).

Подскажите плиз, кто лучше меня «шарит», как устроен граб.

Спасибо.

☆☆☆☆☆

1) Попытка номер 1:

- hex-редактором открываем раздел с ext4

- ищем конфиг граба

- правим default=1 на default=0

- ребут

Результат: забутались в винду.

Открой для себя sed...

YAR ★★★★★ ()

И да,

/boot/grub/grub.conf


Там точно 0.97, а не 2-й? Потому что в 1-м (0.xx) обычно menu.lst использовался.

Кроме того, в 1-м grub'e есть grub-reboot, который, кажется, позволит тебе сделать то, что ты хочешь. Точнее, позволит находясь в Linux'e установить дефолтным пункт с виндой на один раз.

YAR ★★★★★ ()
Ответ на: комментарий от YAR

Вы вообще читали сообщение? Я правил конфиг hex-редактором из ВЕНДЫ, а конфиг лежал на ext4 разделе, который под виндой не примонтируешь.

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от YAR

Ещё раз, я находился в ВИНДЕ изначально. Из линукса в винду бутнуться как раз не проблема, а вот из винды в линукс пришлось извращаться хекс-редактором. Вопрос в том, почему в хексредакторе нашлось 4 конфига вместо 1, или двух.

DELIRIUM ☆☆☆☆☆ ()

ЕМНИП, Grub 0.97 - это Grub2. У Grub2'а есть конфиг в /etc/default/grub. Его можно редактировать, там же есть GRUB_DEFAULT=чему-то. Конфиг в /boot/grub/grub.conf генерируется командой grub-mkconfig -o /boot/grub/grub.conf. При выполнении этой команды по очереди выполняются скрипты из /etc/grub.d/, а их вывод пишется в /boot/grub/grub.conf. Вроде так было.

Если же это grub legacy, то скорее всего должна быть какая-то команда типа update-grub, которая из конфига /etc/grub.conf сделает /boot/grub/grub.conf.

Насколько я понял, загрузка идёт сразу, без появления меню? Таймаут для Grub2 задаётся в /etc/default/grub (GRUB_TIMEOUT=секунд), а для Grub Legacy - наверное, в том же /etc/grub.conf. Если поставить не 0, то будет видно меню для выбора ОС.

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

Пока писал сообщение, тут уже написали

Если это Grub Legacy, то можно поставить ненулевой таймаут в /etc/grub.conf, и при загрузке будет меню с выбором ОС.

gentoo_root ★★★★★ ()
Ответ на: комментарий от YAR

Дык правильно всё, в первый раз, я поправил из венды конфиг, ребутнулся, думал, попаду в федору, а попал опять в венду, и только после того, как я ещё три копии конфига поправил, я попал в федору, то есть, куда хотел.

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от gentoo_root

> ЕМНИП, Grub 0.97 - это Grub2

GRUB 0.xx = GRUB 1
GRUB 1.xx = GRUB 2

У меня /etc/grub.conf вообще нет, к примеру, есть только темплейты в /etc/grub.d/

YAR ★★★★★ ()
Ответ на: комментарий от DELIRIUM

Значит, что-то не то нашел. И вообще, раз уж хочешь так извращаться - вынеси /boot на отдельный раздел с ext2/3 и подключай его где угодно.

BTW, разве для ext4 не было драйвера для винды?

YAR ★★★★★ ()
Ответ на: комментарий от gentoo_root

да, но он не работает нормально с ext4, и вообще не поддерживает 64битную винду (поэтому в первом сообщении и указал сразу архитектуру венды)

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от gentoo_root

> Тогда уже по сети её бутить проще.

Да, я об это думал, но на тот момент стояла загрузка с HDD и был только RDP до включённой винды.

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от YAR

>>Там точно 0.97, а не 2-й? Потому что в 1-м (0.xx) обычно menu.lst использовался.

Нуб, учи матчасть - menu.lst есть симлинк на grub.conf, так же нубота, grub-reboot не присутствует в grub 0.97

ZaeLam3l ()
Ответ на: комментарий от ZaeLam3l

>>>Там точно 0.97, а не 2-й? Потому что в 1-м (0.xx) обычно menu.lst использовался.

Нуб, учи матчасть - menu.lst есть симлинк на grub.conf, так же нубота, grub-reboot не присутствует в grub 0.97

И вообще, всё это тут не при чём =)

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от ZaeLam3l

>grub-reboot не присутствует в grub 0.97

зато во всяких редхатах был grubby, который делал то же самое, что теперь grub-reboot

gentoo_root ★★★★★ ()
Ответ на: комментарий от ZaeLam3l

Какое нервное существо...

menu.lst есть симлинк на grub.conf


root@mws64:/tmp# ls -la /boot/grub/menu.lst
-rw-r--r-- 1 root root 4612 Ноя 27 2009 /boot/grub/menu.lst

Остался со старых времен. Как видишь - не симлинк.

grub-reboot не присутствует в grub 0.97


Внезапно: http://packages.debian.org/search?searchon=contents&keywords=grub-reboot&mode...

YAR ★★★★★ ()

Имеет место быть сильное непонимание того, как устроена файловая система. Груб тут совершенно не причем. Советую без знания структуры файловой системы hex-редактором в ней не лазить.

Откуда взялась такая глупая мысль, что найденный где-то на жестком диске байт вообще принадлежит хоть какому-то файлу? А может он никому не принадлежит?

Всвязи с эти возникли несколько вопросов:


1) В федоре есть /etc/grub.conf и /boot/grub/grub.conf, но я думал, что при редактировании /etc/grub.conf он при ребуте копируется в /boot. Это так?


Нет, это не так. Если посмотреть вывод команды:
ls -la /etc/grub.conf
то можно обнаружить, что это «символическая ссылка» на файл /boot/grub/grub.conf. Иными словами, когда какая-то программа пытается читать файл /etc/grub.conf, то ядро подставляет этой программе содержимое файла /boot/grub/grub.conf. И обратно, когда программа пытается записать «что-то» в этот файл - ядро записывает «что-то» в тот файл, на который указывает символическая ссылка.

Никакого копирования ни при ребуте, ни вообще не происходит.

2) Даже если учесть конфиг в /boot и конфиг в /etc, откуда взялись ещё два конфига при просмотре раздела редактором?


Не надо путать файловую систему и байты на диске. В файловой системе может быть свободное место. Но на жестком диске нет «свободных байтов». В любом байте на жестком диске есть какое-то число. Кто сказал, что строка «default=1» должна встречаться на жестком диске ТОЛЬКО ОДИН РАЗ?

Например, при редактировании grub.conf-а год назад, редактор мог создать его копию grub.conf.tmp, и редактировать копию, а потом, когда редактирование завершено, удалить оригинал и ПЕРЕИМЕНОВАТЬ копию на его место. С точки зрения файловой системы то место, где лежало старое содержимое было помечено как свободное, но само содержимое никуда не исчезло, байты не испарились с жесткого диска. И до тех пор, пока какая-то другая программа эти байты не перезапишет другим файлом, в этой части жесткого диска будут лежать старые байты из старого grub.conf.

То есть после каждого редактирования где-то на диске может остаться старая копия конфига.

Еще есть журнал, в котором тоже могут сохраняться огрызки записываемых файлов. После окончания записи журнал тоже помечается как пустой, но байты-то не испаряются, и продолжают хранить старое значение, пока кто-то их не перезапишет.

Это может быть связано, например, с журналом файловой системы?


Да, может. Остальные две «копии» могли быть кусками журнала. Или могли быть просто пустыми неиспользуемыми секторами. Или могли быть частями какого-то другого файла, например куском документации груба...

anonymous ()
Ответ на: комментарий от anonymous

> Например, при редактировании grub.conf-а год назад, редактор мог создать его копию grub.conf.tmp, и редактировать копию, а потом, когда редактирование завершено, удалить оригинал и ПЕРЕИМЕНОВАТЬ копию на его место.

Точно, ступил.

Или могли быть просто пустыми неиспользуемыми секторами. Или могли быть частями какого-то другого файла, например куском документации груба...

Это врядли, так как я проверял, что «по соседству» лежат строки именно моего конфига.

Нет, это не так. Если посмотреть вывод команды:

ls -la /etc/grub.conf то можно обнаружить, что это «символическая ссылка» на файл /boot/grub/grub.conf.

Вот я так и думал, но проверил и к своему удивлению обнаружил, что конкретно на той машине /etc/grub.conf - именно regular file, сегодня на других тачках проверю, возможно, дело в конкретной машине, что и ввело меня в заблуждение.

А вообще, спасибо за подробный ответ, в некоторых местах я действительно жестко протупил )

btw, первый ответ по теме =)

DELIRIUM ☆☆☆☆☆ ()
Ответ на: colinux же от wintrolls

> colinux же

Тачка используется для тестов, поэтому системы должны быть максимально «чистыми», без всяких сторонних наворотов, дров и тд.

DELIRIUM ☆☆☆☆☆ ()

У меня /etc/grub.conf - это ссылка на /boot/grub/grub.conf (RFR14).

carasin ★★★★★ ()

Не знаю как граб, а граб2 я использую на разделе с нтфс даже для загрузки оффтопиков ибо их дефолтный загрузчик уныл.

Так что если есть граб2 - поставь его на раздел с виндой и правь конфиг откуда нравится.

vsemprivet ()
Ответ на: комментарий от vsemprivet

>Не знаю как граб, а граб2 я использую на разделе с нтфс даже для загрузки оффтопиков ибо их дефолтный загрузчик уныл.

grub2 не умеет загружать ядро оффтопика, он может только передать управление загрузчику, который предполагается в boot-секторе, но может быть скопирован и в виде файла, а уже boot-сектор загрузит ntldr, который загрузит ядро оффтопика, так что без виндового загрузчика она не загрузится. Ещё есть grub4dos, который умеет загружать сразу ntldr, но без ntldr оффтопик не загрузится.

gentoo_root ★★★★★ ()
Ответ на: комментарий от ZaeLam3l

наоборот какбэ. grub legacy считывает информацию из /boot/grub/menu.lst то многие дистры делают симлинк на /boot/grub/grub.conf

do0dlez ★★ ()
Ответ на: комментарий от gentoo_root

ну да, я всегда подозревал, что винды граб2 грузит из космоса. То, что используется чейнлоадер - совсем не означает, что ему нужен бутсектор от винды. И да, граб у меня в мбр прописан.

Во всяком случае проблему ТС с доступом к конфигу из под винды это решает.

vsemprivet ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.