How-to`s — GRUB2 и ядра Xen
Вчера я написал маленький обзорчик нового загрузчика GRUB 2. А привлекла моё внимание одна неприятная вещь. Ведь, если ничего не работает, на это и не обращаешь внимания. Так вот, я решил попробовать виртуализацию на основе Xen. Она потребовала установить модифицированное ядро. Конечно же, разработчики ещё не думали над такими тонкостями, поэтому свежедобавленный пункт меню не работал. Очевидно, у нас есть два выхода. Нам нужен либо скрипт, который корректно найдёт ядро и правильно составит пункт меню, либо придётся кустарным способом вписывать пункт меню ручками в /boot/grub/grub.cfg.
Естественно, я не очень представлял, как должен выглядеть правильный пункт меню, поэтому пошёл в Google. Он подсказал мне заметку "xen with grub2 on debian etch" в блоге простого австралийского парня по имени Daniel Mateos. Мне статья помогла и всё было бы хорошо, если бы Daniel не снёс свой блог :) Точнее, ему надоел Wordpress, и он, положа руку куда-то не туда, создал новый сайт на django. Вот поэтому я и решил написать то, что было рассмотрено в его статье, здесь. Для большей сохранности.
GRUB2 приглянулся австралийским админам поддержкой GPT/EFI разделов, с помощью которой можно использовать диски объёмом более 2Тб (им требовалось на 5Тб). Как и любой человек, погугливший на тему документации по GRUB2, ребята очень огорчились. Её нет. Поэтому они понадеялись, что изложенное ниже принесёт вам пользу.
Открываем и редактируем /etc/kernel-img.conf, приводя его к такому виду:
Все строчки интуитивно понятны. Конфиг определяет, как себя будет вести система при установке нового ядра из deb-пакета. Подробннее в man kernel-img.conf
Дальнейшие действия:
Расшифровка построчно:
1. Монтируем нужный раздел в соответствующую директорию. Это совершенно не обязательно.
2. Устанавливаем, собственно, GRUB 2. Странно, если он у вас ещё не стоит.
3. Прописываем загрузчик в boot-сектор жёсткого диска. Это может занять некоторое время.
4. Устанавливаем ядро. После этого GRUB сам добавит его в меню. Ядро обычное, не Xen-овское, так что проблем возникнуть не должно.
Замечу, что автор устанавливает конкретную версию ядра (2.6.18-5) для конкретной архитектуры (amd64). Не нужно тупо копипастить эти команды. Скорректируйте их в соответствии со своей системой и предпочтениями.
Сразу напомню: это не правильный способ редактирования меню. По правилам мы должны написать скрипт, который составлял бы подобные записи для Xen автоматически. Но если вам время дороже надёжности системы, можно сделать и так. Всё будет работать до следующего обновления загрузчика.
Добавим в конец grub.cfg подобную запись:
Теперь, после перезагрузки вы должны оказаться в ядре dom0, запущеном внутри гипервизора Xen.
Этот скрипт приведён в комментарии к посту человеком по имени Roger Smith. Конечно, он нуждается в доработке, но основа положена и отсюда можно понять логику действий сценария.
Необходимые действия:
1. Создаём файл для скрипта
2. Задаём права доступа к нему:
3. Добавляем вышеприведённый скрипт в /etc/grub.d/10_xen
Вот и всё. Удачи!
Естественно, я не очень представлял, как должен выглядеть правильный пункт меню, поэтому пошёл в Google. Он подсказал мне заметку "xen with grub2 on debian etch" в блоге простого австралийского парня по имени Daniel Mateos. Мне статья помогла и всё было бы хорошо, если бы Daniel не снёс свой блог :) Точнее, ему надоел Wordpress, и он, положа руку куда-то не туда, создал новый сайт на django. Вот поэтому я и решил написать то, что было рассмотрено в его статье, здесь. Для большей сохранности.
GRUB2 приглянулся австралийским админам поддержкой GPT/EFI разделов, с помощью которой можно использовать диски объёмом более 2Тб (им требовалось на 5Тб). Как и любой человек, погугливший на тему документации по GRUB2, ребята очень огорчились. Её нет. Поэтому они понадеялись, что изложенное ниже принесёт вам пользу.
0. Приготовим GRUB
Открываем и редактируем /etc/kernel-img.conf, приводя его к такому виду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
do_symlinks = yes |
Все строчки интуитивно понятны. Конфиг определяет, как себя будет вести система при установке нового ядра из deb-пакета. Подробннее в man kernel-img.conf
Дальнейшие действия:
1 2 3 4 5 6 7 |
# mount /dev/sda1 /boot |
Расшифровка построчно:
1. Монтируем нужный раздел в соответствующую директорию. Это совершенно не обязательно.
2. Устанавливаем, собственно, GRUB 2. Странно, если он у вас ещё не стоит.
3. Прописываем загрузчик в boot-сектор жёсткого диска. Это может занять некоторое время.
4. Устанавливаем ядро. После этого GRUB сам добавит его в меню. Ядро обычное, не Xen-овское, так что проблем возникнуть не должно.
1. Установка элементов Xen
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# apt-get install xen-hypervisor-3.2-1-amd64 |
Замечу, что автор устанавливает конкретную версию ядра (2.6.18-5) для конкретной архитектуры (amd64). Не нужно тупо копипастить эти команды. Скорректируйте их в соответствии со своей системой и предпочтениями.
2.1. Ручное добавление записи в меню
Сразу напомню: это не правильный способ редактирования меню. По правилам мы должны написать скрипт, который составлял бы подобные записи для Xen автоматически. Но если вам время дороже надёжности системы, можно сделать и так. Всё будет работать до следующего обновления загрузчика.
Добавим в конец grub.cfg подобную запись:
1 2 3 4 5 6 7 8 9 |
menuentry “Xen 3.2? { |
Теперь, после перезагрузки вы должны оказаться в ядре dom0, запущеном внутри гипервизора Xen.
2.2 Скрипт для правильного решения задачи
Этот скрипт приведён в комментарии к посту человеком по имени Roger Smith. Конечно, он нуждается в доработке, но основа положена и отсюда можно понять логику действий сценария.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#!/bin/bash |
Необходимые действия:
1. Создаём файл для скрипта
#touch /etc/grub.d/10_xen
2. Задаём права доступа к нему:
#chmod 755 /etc/grub.d/10_xen
3. Добавляем вышеприведённый скрипт в /etc/grub.d/10_xen
Вот и всё. Удачи!