Показаны сообщения с ярлыком Grub. Показать все сообщения
Показаны сообщения с ярлыком Grub. Показать все сообщения

понедельник, 31 мая 2010 г.

Grub2 - от установки до восстановления.

С переходом многих ведущих дистрибутивов на загрузчик Grub2, пишлось учиться по новому. Ведь он очень во многом отличается от своего прямого предка - первой версии Grub. Поэтому я давно присматриваю материалы на эту тему. Сегодня предлагаю собранные в одном посте четы ре статьи о жизнив Grub2. Оригиналы их находятся здесь, но разрозненно. Мне показалось, что собрав все воедино можно лучше представить что делать с Grub2.


Grub2 - введение

Автор статьи: Azteka

Итак, для начала рассмотрим, что из себя представляет GRUB2.

GRUB2 хранит свои настройки в трех основных директориях, а именно:

1) /boot/grub/grub.cfg - это основной конфигурационный файл, который пришел на смену menu.lst. В отличие от menu.lst, этот файл крайне не рекомендуется редактировать (о чем в шапке grub.cfg нам и сообщают разработчики, да и особого смысла в этом нет, ниже мы сможем в этом убедиться). В системе данный файл имеет права только на чтение, но ничто нам не мешает эти самые права поменять. Единственное что, эти права будут действительны только до первого обновления нашего GRUB2 или до выполнения одной из команд или "sudo update-grub" или "sudo grub-mkconfig -o /boot/grub/grub.cfg"

2) /etc/grub.d/ - эта директория содержит в себе скрипты, на основе которых "выстраивается" grub.cfg. При выполнении соответствующей команды (о ней ниже), скрипты перечитываются в определенном порядке, и, как результат, создается файл grub.cfg;

3) /etc/default/grub - этот файл содержит настройки меню GRUB2, которые считываются скриптами из /etc/grub.d/ и, затем, записываются в grub.cfg. Данный файл можно редактировать, поэтому для внесения изменений в grub.cfg нам необходимо или править /etc/default/grub или создавать свои скрипты в/etc/grub.d/.

Для того, чтобы при внесении изменений, внесенные в /etc/default/grub данные были перечитаны скриптами из /etc/grub.d/ и, затем, внесены в grub.cfg, нам необходимо запустить команду, и тут у нас есть два варианта такой команды. Это:

sudo update-grub

для Jaunty Jackalope (9.04) и более ранних версий, так же работает и в Karmic Koala (9.10)

sudo grub-mkconfig

для Karmic Koala (9.10) и последующих версий

Здесь сделаем небольшое отступление и рассмотрим эту новую для всех нас команду. Что из себя представляет grub-mkconfig - это скрипт, который располагается в /usr/sbin/grub-mkconfig, и при запуске которого генерируется файл grub.cfg. Данный скрипт, имеет более широкий функционал, нежели "обрезок" update-grub, потому что мы можем использовать опцию -о (--output), которая позволяет полученный результат вывести в файл с любым именем и любым расположением.

Сама по себе команда grub-mkconfig ничего не сделает, кроме как в терминале отобразит результат наших текущих манипуляций и мы сможем увидеть, что будет вписано в файл, если мы будем использовать команду grub-mkconfig с опцией -o. Вывод результата отработки команды grub-mkconfig с опцией -o, мы сможем увидеть в терминале, данный вывод будет выглядеть так же, как если бы мы выполнили "sudo update-grub".

Для того, чтобы grub-mkconfig вписал изменения в файл, нам следует использовать опцию -о, + указать путь и название файла, куда наши результаты будут сохраняться.

Пример:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Использование опции -о, позволяет нам сохранять содержимое файла grub.cfg в любую директорию с любым названием, а также будет полезна если мы захотим сделать что то особенное с нашим GRUB2.

Мы можем иметь более одного grub.cfg просто давая им разные названия, отличные от grub.cfg.

Пример 1: У нас может быть /boot/grub/grub.cfg и /boot/grub/grub.cfg2 и /boot/grub/grub.cfg3 и так далее, если мы конечно этого захотим. А захотеть этого мы можем, к примеру, для смены одного GRUB-меню на другое во время загрузки, т.е. использовать GRUB-меню, которое захотим, игнорируя при этом "родной" grub.cfg.

Пример 2: Мы можем сохранить наш /boot/grub/grub.cfg на любой примонтированный раздел, а-ля "выделенный раздел GRUB" (используется при большом количестве дистибутивов) или на USB-диск/флешку. Делается это просто изменением пути файла после опции -о.

Итак, давайте подытожим:

/etc/default/grub - это редактируемый файл, который содержит в себе настройки меню GRUB2;
/etc/grub.d/ содержит в себе скрипты меню GRUB2 и скрипты загрузки системы.

При запуске команды "sudo grub-mkconfig -o /boot/grub/grub.cfg" или "sudo update-grub", перечитывается содержимое /etc/default/grub и скриптов из /etc/grub.d/, после чего создается/пересоздается файл grub.cfg.

В большинстве случаев, мы только обновляем текущий GRUB, поэтому удобнее и быстрее пользоваться sudo update-grub


Grub2 - выбор OS по-умолчанию

Автор статьи: Azteka

Вариант 1

Для выбора загрузки необходимой нам ОС правим файл /etc/default/grub

sudo gedit /etc/default/grub

Загружаемая по умолчанию ОС указывается в GRUB_DEFAULT=0, где 0 — первый из перечисленных в /boot/grub/grub.cfg вариантов, 1 — второй и т. д.
"0" меняем на соответствующий номер, под которым находится наша ОС в списке (файл /boot/grub/grub.cfg).

Сохраняемся, после чего обязательно выполняем:

sudo update-grub

Пример для тех, кто ничего не понял или понял, но плохо:

Необходимая часть моего файла /boot/grub/grub.cfg выглядит таким образом:

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,6)
search --no-floppy --fs-uuid --set 2771fedf-7bb3-492c-b970-5f5357d4572a
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=2771fedf-7bb3-492c-b970-5f5357d4572a ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,6)
search --no-floppy --fs-uuid --set 2771fedf-7bb3-492c-b970-5f5357d4572a
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=2771fedf-7bb3-492c-b970-5f5357d4572a ro single
initrd /boot/initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set 3d022807e65a1de8
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###

Соответственно, для загрузки Windows правим /etc/default/grub таким образом:

GRUB_DEFAULT=4

Вариант 2

Итак, как мы можем узнать из этой статьи, в строке GRUB_DEFAULT можно указать как номер по порядку, так и точное название ОС, которая будет загружаться по умолчанию. Посему, для выяснения, какая запись по счету нам нужна или ее точное название - необходимо запустить такую команду:

grep menuentry /boot/grub/grub.cfg

Для выяснения текущего значения, вводим команду:

cat /etc/default/grub | grep 'GRUB_DEFAULT='

Следующей командой внесем изменения:

sudo sed 's/GRUB_DEFAULT="текущее значение"/GRUB_DEFAULT="новое значение"/g' -i /etc/default/grub

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

Не забываем после всего этого запустить:

sudo update-grub

Вариант 3

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

Для этого нам необходимо выставить в строке GRUB_DEFAULT= значение saved (GRUB_DEFAULT=saved). Параметр saved выбирает пункт, который был загружен в предыдущий раз. Теперь, для быстрой смены, нам необходимо запускать всего лишь одну команду - grub-set-default.

Формат команды следующий: sudo grub-set-default X где X строка по счету, начинающаяся с menuentry файла /boot/grub/grub.cfg или точное название строки меню GRUB2 из той же, начинающейся с menuentry строки.

Примеры:

sudo grub-set-default 3 - используется 4 строка по счету, начинающаяся с menuentry;
sudo grub-set-default "Ubuntu, Linux 2.6.31-17-generic" - точное название, вписанное в строку, начинающуюся с menuentry.

И в который раз не поленюсь напомнить, обязательно делаем в конце sudo update-grub.


Grub2 - файл настроек /etc/default/grub

Автор статьи: Azteka

В данной статье детально рассмотрим файл настроек меню GRUB2 /etc/default/grub.

/etc/default/grub - наиболее схож по своим функциям с файлом menu.lst (GRUB1). Большинство действий по настройке GRUB2 происходит именно здесь. Чтобы редактировать /etc/default/grub, необходимо использовать права администратора.

Ниже приведён пример файла /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT="10"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"

GRUB_DEFAULT - отвечает за загружаемый по умолчанию пункт меню GRUB2. Параметры в данном пункте могут быть:
- числовой (начинается с "0")
- saved

GRUB_DEFAULT=0 - выбирает пункт, который будет грузиться по умолчанию, согласно заданого порядка в /boot/grub/grub.cfg. Так же, как и в предыдущем GRUB, нумерация пунктов начинается с "0", т.е. первый = 0, второй = 1 и т.д.. В /boot/grub/grub.cfg пункты, которые будут отображаться в меню, начинаются с menuentry.

GRUB_DEFAULT=saved - выбирает пункт, который был загружен в предыдущий раз. Если в настройках нашего /etc/default/grub, указано показывать меню, тогда, при выводе меню, наша запись будет подсвечена, и по прошествии времени, указаному в GRUB_TIMEOUT, загружена.

- grub-set-default - данный параметр включается при условии выставленного значения saved. Этой командой пользователь может быстро изменить ОС или ядро, которое будет загружаться по умолчанию.

Формат команды следующий: sudo grub-set-default X где X строка по счету, начинающаяся с menuentry файла /boot/grub/grub.cfg или точное название строки меню GRUB2 из той же, начинающейся с menuentry строки.

Примеры:

sudo grub-set-default 3 - используется 4 строка по счету, начинающаяся с menuentry;
sudo grub-set-default "Ubuntu, Linux 2.6.31-17-generic" - точное название, вписанное в строку, начинающуюся с menuentry.

GRUB_DEFAULT="xxxx" - так же, можно использовать точное название пункта меню, обязательно включая все сопутствующие знаки (такие как кавычки, запятые и т.д.). В таком случае порядок по счету не имеет значения.

Пример: GRUB_DEFAULT="Ubuntu, Linux 2.6.31-17-generic"

Небольшие хитрости:

Чтобы выяснить какая запись по счету нам нужна или точное название такой записи, достаточно запустить такую команду

grep menuentry /boot/grub/grub.cfg

Чтобы оперативно изменить строку, которая будет загружаться по умолчанию, мы можем править значение в строке GRUB_DEFAULT следующим образом:

Выясняем текущее значение

cat /etc/default/grub | grep 'GRUB_DEFAULT='

Вносим изменения

sudo sed 's/GRUB_DEFAULT="текущее значение"/GRUB_DEFAULT="новое значение"/g' -i /etc/default/grub

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

Не забываем после всего этого запустить

sudo update-grub

GRUB_TIMEOUT="10" - По сути, секция не претерпела изменений по сравнению с первым Grub и отображает время в секундах, через которое автоматически загрузится выбранный по умолчанию пункт меню.

- Выбор значения "-1" будет означать, что меню будет отображаться, до тех пор, пока пользователь сам не выберет пункт меню для загрузки;
- Для того, чтобы меню отображалось при каждой загрузке, необходимо использовать значение от 1 и выше.

Данная команда имеет определенную зависимость от команды GRUB_HIDDEN_TIMEOUT. Если выполнение GRUB_HIDDEN_TIMEOUT будет прервано нажатием кнопки SHIFT, тогда GRUB_TIMEOUT начнет свой отчет, равный количеству указанных в нем секунд.

Внимание: Нажатие кнопки SHIFT не отобразит меню, если в GRUB_TIMEOUT установлен параметр "0".

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

Соответственно, проверяем текущее значение командой

cat /etc/default/grub | grep 'GRUB_TIMEOUT='

После чего заменяем на нужное нам

sudo sed 's/GRUB_TIMEOUT="текущее значение"/GRUB_TIMEOUT="новое значение"/g' -i /etc/default/grub

Важно - необходимо обратить внимание на вывод первой команды, а именно наличие/отсутствие кавычек, лучше всего просто скопировать вывод первой команды и подставить во вторую.

Не забываем после всего этого запустить

sudo update-grub

GRUB_HIDDEN_TIMEOUT=0 - если этот параметр не закомментирован (строка не начинается с символа #), загрузочное меню не будет отображено.

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

Значение параметра в строке является целым (int) (по умолчанию "0"). Если выставлено значение больше нуля, меню не будет отображено, но будет пауза размером в заданное число секунд, во время которой пользователь может вызвать меню загрузки нажатием клавиши ESC.

При выставленном значение "0", будет остутствовать задержка при загрузке и не будет отображаться меню GRUB2. Но, даже при выставленном значении "0", пользователь может заставить загрузчик отобразить меню. Для этого необходимо во время загрузки удерживать клавишу SHIFT.

Во время загрузки система проверяет наличие статуса прерывания кнопкой SHIFT. И если данный статус не определяется, тогда срабатывает небольшая задержка, в процессе которой, пользователь может отобразить меню путем нажатия кнопки ESC.

GRUB_HIDDEN_TIMEOUT_QUIET=true
- true - отсчет не будет отображаться и мы увидим только пустой экран.
- false - счетчик будет отображаться на экране, в течении времени, определенном значением,выставленном в GRUB_HIDDEN_TIMEOUT.

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` - данная строка отвечает за названия дистрибутива, которое будет отображаться в меню GRUB2 (Ubuntu, Xubuntu, Debian, и т.д.)

GRUB_CMDLINE_LINUX - значение этого параметра будет передано в конец строки linux (в старой версии GRUB эти параметры употреблялись в строке kernel) как при нормальной загрузке, так и при загрузке в режиме восстановления.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" - назначение такое же, как и строки, указанной выше, но только для режима нормальной загрузки. Является аналогом defoptions из menu.lst. Если мы хотим в процессе загрузки видеть черный экран, на котором будет отображен процесс загрузки в тексте - нам следует удалить "quiet splash". Для того, чтобы увидеть заставку (по умолчанию, значек Убунту на черном фоне) + краткое текстовое сопровождение - используем параметр "splash".

GRUB_TERMINAL=console - расскоментируйте данную строку, и это позволит отключить графический терминал (grub-pc only). Данный прием будет полезен тем, что отключение графического режима может существенно увеличить скорость работы меню (прокрутка, отзывчивость).

GRUB_DISABLE_LINUX_UUID=true - раскомментируйте, если вы не хотите, чтобы GRUB передавал вашей системе параметр "root=UUID=xxx".

GRUB_GFXMODE=640x480 - этот пункт отвечает за разрешение графического меню GRUB2. Данный параметр предоставляет разрешение, которое поддерживается видеокартой пользователя (например: 640x480, 800x600, 1024x768, 1600×1200 - для соотношения сторон 4:3. И 640x400, 800x500, 1024x640, 1280x800, 1680x1050 - для широкоформатных мониторов с соотношением сторон 16:10). Настройки применимы только для меню загрузки. Так же у нас есть возможность увидеть все доступные разрешения для экрана из меню GRUB2. Для этого, находясь в меню, жмем "с", затем в строке grub> пишем vbeinfo.

Если строка GRUB_GFXMODE=640x480 закомментирована или выбранное разрешение недоступно, тогда GRUB2 использует настройки по умолчанию, определенные скриптом /etc/grub.d/00_header.

Несколько советов:
- Настройка одинакового разрешения в меню GRUB2 и вашей операционной системы, позволит немного уменьшить время загрузки.
- В качестве дополнительной опции, пользователь может задать битность изображения, просто добавив необходимые данные в настройку разрешения. Например так: 1280x1024x24 или 640x480x32.
- Пользователь может добавить одновременно несколько разрешений. Как это работает? А вот так, если GRUB2 не может использовать первое заданное разрешение, тогда он будет пробовать следующее и т.д. Перечень разрешений необходимо разделять запятыми.
Пример: 1280x1024x16,800x600x24,640x480.
- Если используется строка GRUB_GFXMODE= и при выполнении команды sudo update-grub вам выдается сообщение not found, просто попробуйте или добавить или изменить битность изображения.

GRUB_DISABLE_LINUX_RECOVERY=true - для того, чтобы избежать появления в меню режима Recovery, добавьте (если отсутствует) или раскомментируйте данную строку. Если вам нужен режим Recovery только для конкретно взятого ядра - вам будет нужно создать необходимую запись в скрипт /etc/grub/40_custom.

GRUB_DISABLE_OS_PROBER="true" - Включает/выключает проверку скриптом /etc/grub.d/30_os-prober наличия на других разделах операционных систем, включая такие как Windows, Linux, OSX и Hurd.


Grub2 - восстановление

Автор статьи: Azteka

Итак, это произошло...вы убили свой GRUB2, хотя, может и не убили, а он убитый пришел (с). В любом случае, у вас возник вопрос, как же его переустановить. Ниже я опишу 3 способа, как это можно сделать.

Способ 1 (проще не бывает)

Это самый быстрый и легкий способ восстановить испорченные/битые/установленные не правильно/затертые установкой windows/называйте как хотите файлы GRUB2. Для этого нам потребуется:

а) Терминал - 1 шт.;
б) Знание на каком из дисков у нас находится раздел с установленной системой.

Наши действия. Мы загрузимся с LiveCD, примонтируем наш злосчастный раздел и, затем, скопируем необходимые файлы с LiveCD.

1. Загружаемся с LiveCD и выбираем пункт "Запустить Ubuntu без установки на компьютер"

2. Определяем, на каком из наших дисков установлена Ubuntu. Для этого открываем Терминал (Applications, Accessories, Terminal) и выполняем команду

sudo fdisk -l

3. Итак, с диском мы определились, теперь нам надо его примонтировать

sudo mount /dev/sdXY /mnt

*примечание: sdXY - где X - диск в системе (sda, sdb, sdc и т.д.) и Y - раздел диска (первый раздел - 1, второй -2 и т.д.).

Пример: sudo mount /dev/sda1 /mnt

**примечание: если у вас раздел /boot вынесен отдельно, тогда ваша команда должна выглядеть так: вначале создадим папку sudo mkdir /mnt/boot, затем монтируем sudo mount /dev/sda1 /mnt/boot, не забудьте учесть это при выполнении последующих команд.

4. Следующей командой запустим установку GRUB2.

sudo grub-install --root-directory=/mnt/ /dev/sdX

Пример: sudo grub-install --root-directory=/mnt/ /dev/sda
*примечание: Обратите внимание, что GRUB2 устанавливается на устройство (физический диск).

5. Перегружаемся

6. Не забываем обновить меню GRUB2 командой

sudo update-grub

Способ 2 - копируем файлы GRUB2 с уже установленного раздела

Что же это за способ? Этот способ подразумевает под собой, что GRUB2 установлен корректно, но не на тот раздел, на который следовало бы (как пример, Ubuntu установлена второй системой рядом с Windows, причем Windows находится на одном диске (sda), а Ubuntu на другом (sdb)). Посему мы будем копировать файлы из /boot/grub на выбранный нами диск и MBR.

1. Загружаемся с LiveCD и выбираем пункт "Запустить Ubuntu без установки на компьютер"

2. Монтируем раздел с установленной Ubuntu. Для этого, в меню "Places", кликаем на необходимый нам раздел (в данном случае выбранный нами раздел, автоматически примонтируется в /media).

3. Раздел примонтирован. Теперь переустановим GRUB2. Делается это так:

sudo grub-setup -d /media/XXXX/boot/grub /dev/sdX

*примечание: XXXX - ваш UUID или метка тома, sdX - где X - диск в системе на который мы будем перезаписывать GRUB2(sda, sdb, sdc и т.д.).

Переписывать UUID крайне не удобно, поэтому можно упростить себе жизнь следующим образом. В меню "Places" выбираем наш диск, после чего слева нажимаем иконку с изображением карандаша, выделяем и копируем (CTRL-SHIFT) в адресной строке адрес, и вставляем (CTRL-SHIFT-V) в Терминал.

Пример:

sudo grub-setup -d /media/7848138a-41a0-4eba-8aed-d1b625ac8759/boot/grub /dev/sda

Если при выполнении данной команды вам выдаст ошибку "error: Cannot open /boot/grub/device.map", в таком случае следует добавить ключ -m и указать путь к файлу device.map

sudo grub-setup -d /media/XXXXX/boot/grub -m /media/XXXXX/boot/grub/device.map /dev/sdX

Пример:

sudo grub-setup -d /media/7848138a-41a0-4eba-8aed-d1b625ac8759/boot/grub -m /media/7848138a-41a0-4eba-8aed-d1b625ac8759/boot/grub/device.map /dev/sda

Если вам опять выкинуло ошибку "error: Cannot open /boot/grub/device.map", не отчаивайтесь, просто теперь вам надо перезагрузить компьютер.

4. Если вы не перезагружали компьютер, тогда это следует сделать сейчас.

5. После перезагрузки не забываем обновить GRUB2 командой sudo update-grub

Способ 3 - CHROOT

Я не буду останавливаться на пояснениях, что такое chroot и с чем его едят. Об этом можно найти много информации в интернете. Перейдем, непосредственно к тем действиям, которые мы должны совершить. Итак.

1. Загружаемся с LiveCD и выбираем пункт "Запустить Ubuntu без установки на компьютер"

2. Открываем Терминал (Applications, Accessories, Terminal).

3. Определяем, на каком из наших дисков установлена Ubuntu.

sudo fdisk -l

4. Монтируем раздел с установленной Ubuntu

sudo mount /dev/sdXY /mnt

Пример: sudo mount /dev/sda1 /mnt
*примечание: sdXY - где X - диск в системе (sda, sdb, sdc и т.д.) и Y - раздел (первый раздел - 1, второй -2 и т.д.).
**примечание: если у вас раздел /boot вынесен отдельно, тогда ваша команда должна выглядеть так: вначале создадим папку sudo mkdir /mnt/boot, затем монтируем sudo mount /dev/sda1 /mnt/boot, не забудьте учесть это при выполнении последующих команд.

5. Монтируем диски:

sudo mount --bind /dev/ /mnt/dev

6. Монтируем proc:

sudo mount --bind /proc/ /mnt/proc

7. Теперь зайдем в примонтированную систему как root:

sudo chroot /mnt

8. Если по каким либо причинам в примонтированной нами системе (/mnt или, в случае отдельного раздела с /boot, /mnt/boot) отсутствует или поврежден файл /boot/grub/grub.cfg, тогда следует запустить команду

update-grub

9. Переустанавливаем GRUB2

grub-install /dev/sdX

Не забываем вместо Х указать диск, на который вы хотите установить GRUB2.
*примечание: Обратите внимание, что GRUB2 устанавливается на устройство (физический диск).
**примечание: Если вам выбьет какую либо ошибку, тогда попробуйте запустить команду с ключем --recheck
Пример: grub-install --recheck /dev/sdХ.

10. Выходим из chroot

exit

или же комбинацией клавиш Ctrl+D

11. Теперь отмонтируем все, что мы примонтировали ранее. Делать это надо в таком порядке:

sudo umount /mnt/dev

Если у вас /boot находится на отдельном диске, тогда его отмонтируем следующим, в противном случае вы получите сообщение об ошибке "device busy"

sudo umount /mnt/boot

*примечание: Выполняем только в случае отедельно вынесенного /boot

Отмонтируем нашу систему

sudo umount /mnt

12. Перегружаем компьютер.

Все.



Сдача квартир в наем в последнее время стала очень популярной. Это и долгосрочная и посуточная аренда. Но аренда квартир без посредников Подмосковье будет выгодна как хозяевам жилья, так и квартирантам. Зачем платить больше!

Кстати, если выведение грызунов стало насущной проблемой для вашего жилья, компания Сангиг справится с ней. Также можно побороть кротов, осаждающий сам возле загородного дома.

вторник, 2 марта 2010 г.

GRUB - красивая загрузка

Я сейчас внимательно наблюдаю за GRUB2 в Ubuntu 9.10. Это абсолютно новый загрузчик и наверно хороший. Я его еще не вскрывал :). Потому что он работает как часы. Но стоит признать, что пока бесспорным лидером по загрузке в Linux остается GRUB классический. Он как двери внутренние в вашем доме. Но и загрузчик можно украсить на свой вкус. Открыл и попал в другоую среду. И статья Алексея Дмитриева тому яркое подтверждение. И не стоит забывать, что возможности GRUB загружать разные операционные системы превращает компьютер в максимально универсальный инструмент для работы и отдыха. А красивый загрузчик это всегда приятно.

Введение

Обычно я не очень страдаю стремлением украсить свои рабочие столы и приложения. Однако вид загрузчика Grub в его первозданном виде приводит меня в уныние. Даже логотип Виндоуз и то лучше. Думаю, я не один такой, поэтому в этой статье расскажу о своих методах сделать заставку Grub’а привлекательной.

Для начала нужно договориться о терминологии. Сегодня уже официально существуют две версии Grub’а: Просто Grub 0.97, он же Grub Legacy (традиционный, наследственный) и Grub2 – написанный с нуля загрузчик со значительно более широкими возможностями, но, увы, с неудобными и сложными настройками. В данной статье речь пойдет исключительно о старом, традиционном, унаследованном Grub’е Legacy. Для простоты я не стану больше тратить прилагательные, и буду называть его просто Grub.

Простота, универсальность и легкость установки этого загрузчика, даже по сравнению с его предшественником – LILO, снискали ему широкую популярность. Практически с момента появления начались попытки придать ему красивый вид. На этом пути Линукс-сообщество разделилось на два направления.

Первое направление возглавил дистрибутив SuSe, а позже к нему примкнула Mandriva. Программист Steffen Winterfeldt приспособил для Grub’а знаменитое меню с анимированными пингвинами.

Знаменитое меню с пингвинами

Оно уже несколько лет работало в LILO у той же SuSe. Для этого пришлось писать специальный патч для Grub’а, получивший известность как gfxmenu, а пропатченный им загрузчик иногда называется Grub-gfxmenu. Не знаю, взяла ли Mandriva патч у SuSe, или разработала свой, но сами заставки, называемые message, у этих двух дистрибутивов взаимозаменяемы.

Второе направление, во главе с Debian и множеством дистрибутивов на его основе – Ubuntu и прочие, создало свой собственный патч Grub’а, умеющий показывать в качестве заставки многоцветные изображения, называемые splashimage.

Пример картинки splashimage

Эти картинки просто скачиваются из Сети и помещаются в директорию /boot/grub/. Картинки должны иметь расширение .xpm.gz. Чтобы Grub начал показывать их в качестве заставок, нужно вписать в файл /boot/grub/menu.lst первой строкой: splashimage=(hd0,Х)/boot/grub/имя_картинки.xpm.gz. А если вы накачали кучу разных splashimage’ей, то заведите для них папку в той же директории и назовите ее, скажем, images. Тогда строка в файле /boot/grub/menu.lst будет чуть длиннее: splashimage=(hd0,Х)/boot/grub/images/имя_картинки.xpm.gz. Вместо буквы Х поставьте в скобках номер вашего раздела минус 1. Так, если ваш дистрибутив Линукс находится в разделе /dev/hda2, то нужно написать (hd0,1). Такова нотация Grub’а – он считает разделы с нуля, а не с первого.

Еще небольшая тонкость насчет картинок. Некоторые картинки не позволяют увидеть подсветку строк в загрузочном меню Grub’а. Она сливается по цвету с картинкой. На этот случай нужно определить цвета фона и переднего плана меню при помощи еще двух строк:

foreground  = ffffff
background = 000000

Это шестнадцатеричные значения цветов по системе RRGGBB (красный- зеленый – голубой).

Пример будет означать, что передний план (foreground) белый (ffffff), а фон – черный (000000). Если нужно наоборот, увидеть картинку на белом фоне, то следует написать:

foreground  = 000000
background = ffffff

Это будет черным по белому.

Суммируя все сказанное, вид общей секции вашего файла /boot/grub/menu.lst станет выглядеть примерно так:

splashimage=(hd0,2)/boot/grub/images/имя_картинки.xpm.gz
foreground = 000000
background = ffffff
default 1
timeout 10

Если попадутся строки типа nosplash или nosplashimage, то их нужно удалить или закомментировать (#). Также нужно поступить и со строками, определяющими цвета обычного меню, типа: color green/black white/black

Главный недостаток splashimage – их нельзя анимировать. Зато можно создавать свои собственные картинки. Их размер должен быть 640х480 пикселей, не более 14 цветов. Подойдет и фотография, которую нужно будет обработать до необходимых размеров в Gimp’е или Photoshop’е. Затем конвертировать в формат xpm в Gimp’е и сжать gz’ипом. Наилучшие картинки получаются в оттенках серого цвета.

На этом закончим со splashimage и перейдем к основной части нашего рассказа – gfxmenu.

Как установить анимированную заставку в свою систему

Загрузчиком Grub-gfxmenu комплектуются дистрибутивы SuSe и Mandriva. Но если вы не пользуетесь данными дистрибутивами, то не спешите искать патч gfxmenu для Grub’а, патчить его и устанавливать в свой дистрибутив. Можно поступить проще. Вот как делаю я.

Первым делом создаю нормальной программой партиционирования два новых раздела: загрузочный (400Мб), с LABEL=zagruz, и временный, размером 4-5Гб, для установки самого дистрибутива.

Затем устанавливаю дистрибутив (SuSe или Mandriva), таким образом, чтобы загрузочный раздел монтировался как /boot, а временный как /. Когда программа установки спросит, куда устанавливать загрузчик, следует ответить – в MBR. Не помешает по окончании установки перезагрузить компьютер и убедиться, что новый дистрибутив нормально загружается. При этом не имеет значения, загружаются ли Windows и все ваши рабочие дистрибутивы – это мы всегда поправим.

Затем нужно отредактировать в свежеустановленном дистрибутиве файл /boot/grub/menu.lst. Обычно в этом файле столько всяких закомментированных пояснений, что самого текста не видно. Поэтому я просто удаляю весь текст из этого файла и вставляю туда текст из аналогичного файла своего рабочего дистрибутива, не забыв только поменять номер root раздела. Вот пример:

default 1
timeout 20
gfxmenu (hd0,8)/message

title Windows on (/dev/sda2)
map (hd0,0) (hd0,1)
map (hd0,1) (hd0,0)
rootnoverify (hd0,1)
makeactive
chainloader +1

title AltLinux (/dev/sda5)
root (hd0,4)
kernel /boot/vmlinuz root=/dev/sda5 ro vga=791
initrd /boot/initrd.img

title Debian GNU/Linux, kernel 2.6.26-2-686
root (hd0,7)
kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda8 ro vga=791 quiet
initrd /boot/initrd.img-2.6.26-2-686

title openSUSE 11.0
root (hd0,8)
kernel /vmlinuz-2.6.25.5-1.1-default root=...и т.д.
initrd /initrd-2.6.25.5-1.1-default

Внимание: Присмотритесь к третьей строке: gfxmenu (hd0,8)/message. По идее она должна была бы выглядеть как gfxmenu (hd0,8)/boot/message. Но поскольку у нас директория /boot вынесена в отдельный загрузочный раздел /dev/sda9 (или (hd0,8) в нотации Grub), то и файл анимированной заставки message окажется в корневой директории загрузочного раздела. Эта третья строчка и последний абзац “title openSUSE 11.0″ вот все, что осталось от первоначального файла menu.lst установленного дистрибутива.

Теперь следует проверить новый загрузчик со всеми установленными операционными системами. Если все в порядке, то можно продолжать. Если нет, то нужно найти ошибку в файле menu.lst.

“Но, позвольте, я не вижу никаких анимированных пингвинов!” – скажет нетерпеливый читатель. Действительно, если в openSUSE 10 пингвины появлялись время от времени, по закону случайных чисел, то в openSUSE 11.0 они не появляются никогда, хотя включены в состав файла /boot/message. Наша задача – найти их!

Перезагружаемся в свой рабочий дистрибутив.

Вписываем новый загрузочный раздел в файл /etc/fstab:

/dev/sda9  /mnt/zagruz  ext3  rw,user,noauto,dev,exec 0 0

Монтируем раздел /dev/sda9 любым привычным вам способом.

Файл message является архивом CPIO и может быть распакован командой cpio. У этой команды чудной синтаксис, поэтому будьте внимательны. Я не стану пересказывать здесь ман этой команды (который есть в Интернете), просто объясню основные моменты.

Команда cpio копирует содержимое из архива CPIO в нужную директорию, или, наоборот, копирует файлы из нужной директории в архив CPIO. При этом она не умеет создавать директории сама. Поэтому порядок действий такой:

Открываем консоль с правами root.

Создаем в текущей директории временный каталог pingu:

# mkdir pingu

Переходим в новый каталог:

# cd pingu

Вводим в командную строку следующее заклинание:

pingu# cpio -iv < /mnt/zagruz/message  16x16.fnt back.jpg en.hlp en.tr gfxboot.cfg init languages pabout.txt panim.jpg panim_a.jpg pback.jpg phead.jpg timer_a.jpg 841 blocks 

Опция -i копирует файлы из архива /mnt/zagruz/message в текущую директорию pingu. Опция -v выводит список скопированных файлов.

Нас интересует только файл gfxboot.cfg (пятый сверху).

Открываем его в вашем любимом текстовом редакторе с правами root.

Находим девятнадцатую по счету строку сверху (считая и пустые):

; penguin theme likelihood (in percent, -1 = auto)
penguin=0

Она переводится как: “Вероятность появления темы пингвинов (в процентах, параметр -1 означает автоматическое случайное появление)”. Пока вероятность равна нулю (penguin=0), то есть тема пингвинов не появляется никогда, всегда появляется тема SUSE. Мы должны изменить строку так:

; penguin theme likelihood (in percent, -1 = auto)
penguin=100

И сохранить. И все!

Осталось запаковать архив обратно. Для этого служит команда:

pingu# ls | cpio -ov > message

16x16.fnt
back.jpg
en.hlp
en.tr
gfxboot.cfg
gfxboot.cfg~
init
languages
pabout.txt
panim_a.jpg
panim.jpg
pback.jpg
phead.jpg
timer_a.jpg
841 blocks

Опция -o означает копировать все файлы со стандартного вывода в архив message. Замечу, что архив message окажется в текущей директории pingu. А нам нужно переместить его в /mnt/zagruz. Но и находящийся там неисправленный message тоже желательно сохранить на всякий случай. Поэтому сначала переименуем старый архив:

pingu# mv /mnt/zagruz/message /mnt/zagruz/message-old

Теперь переместим или скопируем новый исправленный архив на место:

pingu# mv message /mnt/zagruz/message

Проверим:

pingu# ls /mnt/zagruz

backup_mbr message-old
boot symsets-2.6.25.5-1.1-default.tar.gz
config-2.6.25.5-1.1-default symtypes-2.6.25.5-1.1-default.gz
grub symvers-2.6.25.5-1.1-default.gz
initrd System.map-2.6.25.5-1.1-default
initrd-2.6.25.5-1.1-default vmlinux-2.6.25.5-1.1-default.gz
lost+found vmlinuz
memtest.bin vmlinuz-2.6.25.5-1.1-default
message

Оба архива на месте. Но загружаться будет именно исправленный архив message.

Осталось удалить временный каталог pingu:

pingu# cd ..

Это мы вернулись в родительский каталог.

# rm -R pingu

Удалили временный каталог pingu.

Теперь перезагружаемся, чтобы проверить, появилось ли меню с пингвинами.

Появилось, естественно. Можно удалять раздел /dev/sda10, где у нас расположен весь дистрибутив SUSE (кроме его директории /boot). А если вам нужен SUSE, то можно и не удалять, решать вам.

Что касается анимированного меню с пингвинами, то в openSUSE 11.0 оно хуже, чем было в openSUSE 10. Во-первых, оно не русифицировано, во-вторых, надписи насчет клавиш F1, F2, F3 как-то неудачно расположены на самом виду, в-третьих, оно почти на 100 Кб больше.

Поэтому я помещу уже переделанное русское анимированное меню с пингвинами из openSUSE 10 на своем сайте, и вы сможете его скачать.

Если у вас нет дистрибутива SUSE, то все вышеописанное можно проделать и с Mandriva One 2009, а архив message, уже готовый к употреблению, скачать в “Читалке Линукс”.

Другие способы установить gfxmenu

Пользователи Debian, Ubuntu и им подобных дистрибутивов. Вы счастливые люди! Ваши дистрибьюторы позаботились о вас, и в ваших репозиториях имеется и Grub-gfxmenu и всякие анимированные заставки, по темам ваших дистрибутивов. Вы можете установить все это непосредственно в ваш дистрибутив. Как это сделать, подробно описано в статье “GfxBoot или красивая заставка для меню GRUB”

.

Ну, и, наконец, можно самому попытаться пропатчить Grub 0.97, скачать message и все наладить. Я плохо разбираюсь в таких вещах, поэтому советовать ничего не буду.

Заключение

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

Если вы найдете в Сети другие, более современные мультики для Grub’а, то сообщите, пожалуйста, мне.



Если вы думаете, что такая услуга как выкуп автомобилей доступен только за границей, то вы ошибаетесь. Уже сегодня жителям Москвы и области предлагается услуга по выкупу авто. А ведь это прекрасный способ быстро и без волокиты продать вашу машину на выгодных условиях, а затем купить новую.

При выкупе специалисты предложат вам выгодную цену и возьмут на себя оформление сделки в ГИБДД. И самое главное, процедура выкупа автомобилей занимает всего несколько часов. А ведь согласитесь, что у автомобилиста есть два счастливых момента. Первый, когда он покупает новую машину, и второй, когда он продает старую :).

А если серьезно, то сегодня многим людям обременительно выплачивать автокредит. И на сайте vykup-auto.ru вам помогут избавится от тягостного кредитного бремени. Причем вам предложат услугу по срочному выкупу автомобиля. Все будет сделано быстро и четко.

среда, 13 мая 2009 г.

GRUB Error 17

Полезность с сайта [shell-fu]$

Резервная копия MBR:

dd if=/dev/sda of=/root/mbr.img bs=1 count=512

Восстановление MBR:

dd if=/root/mbr.img of=/dev/sda bs=1 count=512

Восстановить только bootstrap (часть MBR):

dd if=/temp/mbr.img of=/dev/sda bs=1 count=446

Восстановление только таблицы разделов (часть MBR):

dd if=/temp/mbr.img of=/dev/sda skip=446 seek=446 bs=1 count=64
Завтра продолжу борьбу с настройками загрузчика. Если есть советы - пишите.


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

Традиционный домашний уют невозможно представить без теплого, мягкого ковра. Это могут быть, конечно, и современные ковровые покрытия, но... Все же наилучшими, и экологически чистыми считаются ковры ручной работы из разных стран мира. Ведь плетением ковров издревле занимались от Европы до Азии.

вторник, 24 марта 2009 г.

Защита GRUB паролем

welinux.ru/How-to`s → Защита GRUB паролем.

Ни для кого не секрет, что в Unix/Linux системе очень легко сбросить пароль root, имея физический доступ к компьютеру. Либо загрузившись с LiveCD/LiveUSB, либо передав штатному загрузчику параметры для запуска однопользовательского режима. Если от первого варианта можно (относительно) защититься, отключив в BIOS возможность загрузки со съемных носителей, установив пароль на BIOS и опечатыванием системника (а так же навешиванием замков или завариванием корпуса - кому что нравится :) ), то защита от второго способа - это установка пароля на загрузчик. Далее речь пойдет о GRUB.

Запускаем специальную утилиту, входящую в состав GRUB:

/sbin/grub-md5-crypt

Дважды вводим желаемый пароль и получаем md5-хэш пароля.
Теперь надо внести изменения в /boot/grub/grub.conf (в некоторых дистрибутивах /boot/grub/menu.lst).

После строчки timeout нужно вставить:
password --md5 полученный-хеш-пароля

Начиная со следующей перезагрузки для изменения параметров загрузки нужно будет нажимать p и вводить пароль. Теперь постороний человек не сможет загрузиться в однопользовательском режиме.

В GRUB также можно защитить паролем саму загрузку. В том же файле в секции, относящейся к конкретной системе нужно вставить строчку lock:

title Gentoo Linux
lock
root (hd0,0)
kernel /boot/vmlinuz root=/dev/sda1


Будет использоваться тот же пароль, что и для редактирования параметров. Если нужен другой, то получить его можно тем же способом, а потом вписать в секцию конкретной системы:

title Gentoo Linux
lock
password --md5 хеш-нового-пароля
root (hd0,0)
kernel /boot/vmlinuz root=/dev/sda1


Если на компьютере несколько систем, то можно каждую защитить своим паролем.

понедельник, 16 февраля 2009 г.

Сатья "Zenbook. Загрузка и загрузчики"

Подготовил для распечатки и выложил, как обычно в трех форматах, статью Алексея Федорчука Zenbook. Загрузка и загрузчики

http://linuxsam.narod.ru/index.html

"Первое, что следует сделать после установки новой системы — это загрузить её. И потому разговор о ней резонно начать именно с загрузки и загрузчиков. Правда, это не та тема, в которую начинающему пользователю придётся вникать в первую очередь — как говорилось в двух предыдущих главах, загрузчик будет настроен автоматически и, в первом приближении, правильно. То есть, скорее всего, свежеустановленный Zenwalk загрузится без проблем.

Однако:

  • во-первых, при установке не исключены неожиданности, которые потребуют ручного вмешательства, и,

  • во-вторых, потенциальный пользователь Zenwalk’а устанавливает его (в том числе и) для изучения.

А изучение любой системы начинается с её загрузки. Так что начнём с этого и мы — тем, кто пока не ощутил необходимости разбираться с этой темой, предлагается просто пропустить пока эту главу.

Содержание

  • О загрузке вообще

  • Загрузчик Lilo

  • Утилита liloconfig

  • Гранд мира загрузчиков

  • GRUB в Zenwalk’е"

вторник, 1 апреля 2008 г.

Установка заставки для Grub и Grub-gfxboot

Leolik's blog: Установка заставки для Grub и Grub-gfxboot

Вот захотел немного приукрасить свою убунту и решил начать с заставки для менеджера загрузки - Grub.

Установка заставки для стандартного Grub.

1. Для начала нам потребуется сама заставка, в нэте их валом, я например предпочитаю брать их с сайта www.gnome-look.org.
2. Все, допустим вы уже скачали понравившуюся заставку (у меня к примеру она называется ubuntu_grey_grub.xpm.gz и находится в домашней папке), теперь скопируем ее в папку /boot/grub/ (но никто не мешает вам использовать другую папку):

#
cp ~/ubuntu_grey_grub.xpm.gz /boot/grub/

3. Редактируем файл menu.lst :
#
nano /boot/grub/menu.lst

и, к примеру, перед строкой '## ## End Default Options ##' вставляем строку указывающую путь к нашей заставке:
splashimage=(hd0,0)/boot/grub/ubuntu_grey_grub.xpm.gz
!!!WARNING: (hd0,0) - замените на свое значение, чтобы его узнать, наберите в консоли:
#
grub

теперь наберите:
>
find /boot/grub/stage1

и полученный результат вставьте на место (hd0,0).
4. Перезагружаемся. Теперь на этапе менеджера загрузки вы увидете ту заставку которую установили. Согласитесь - это получше, чем просто черный экран с несколькими строками выбора ОС.

Установка заставки для Grub-gfxboot.

Как бы красиво не смотрелась заставка для grub, всегда хочется чего-нить новенького :) Поэтому следующим делом - я решил поставить grub-gfxboot с ее более оригинальными заставками.

1. Как и ранее, первым делом нам понадобится заставка для grub-gfxboot. Так же как и обычные заставки для grub, эти заставки можно легко найти на просторах инэта, ну а я как и ранее, воспользовался сайтом www.gnome-look.org (в поиске на сайте ищите по слову: gfx). В моем случае заставка называется message.cristal (обычно заставки для grub-gfxboot начинаются на message.*) и находится в домашней папке.
2. Устанавливаем gfxboot:
#
apt-get install gfxboot

3. Удаляем стандартный grub:
#
apt-get remove boot

4. Скачиваем последнюю версию grub-gfxboot (на момент написания, последняя версия была grub-gfxboot_0.97-11-ubuntu1_all)
$


5. Устанавливаем grub-gfxboot:
#
dpkg -i grub-gfxboot_0.97-11-ubuntu1_all.deb

6. Копируем скачанную заставку в /boot/grub/ :
#
cp ~/message.cristal /boot/grub/

7. Редактируем файл menu.lst :
#
nano /boot/grub/menu.lst

и в начало файла вставляем строку указывающую путь к нашей заставке:
gfxmenu /boot/grub/message.cristal
8. Теперь сконфигурируем grub, для этого набираем в консоли:
#
grub

дальше пишем:
>
find /boot/grub/stage1

на выходе получаем примерно следующее:
(hdx,y)
где x и y - у вас могут отличаться (у меня к примеру: (hd0,0)).
Дальше используем полученное значение в следующих командах:
> > >
root (hd0,0)
setup (hd0)
quit

!!!WARNING: не забывайте заменить (hd0,0) и (hd0) на свои значения.
9. Инсталлируем grub-gfxboot на нужный нам жесткий диск:
#
grub-install /dev/sda

вместо /dev/sda используйте свое значение. Посмотреть как называются ваши жесткие диски и какие на них есть разделы можно с помощью команды:
#
fdisk -l

10. Перезагружаемся. Теперь на этапе менеджера загрузки вы увидете ту заставку которую установили. Вот это - как раз то, что мне нужно ))

Автор Leolik