Видео ролики бесплатно онлайн

Смотреть гиг видео

Официальный сайт interaktiveboard 24/7/365

Смотреть видео бесплатно

02.04.09 14:15 dima_boh

How-to`sGRUB2 и ядра 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, ребята очень огорчились. Её нет. Поэтому они понадеялись, что изложенное ниже принесёт вам пользу.

0. Приготовим GRUB


Открываем и редактируем /etc/kernel-img.conf, приводя его к такому виду:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
do_symlinks = yes

relative_links = yes

do_bootloader = no

do_bootfloppy = no

do_initrd = yes

link_in_boot = no

postinst_hook = update-grub

postrm_hook = update-grub

Все строчки интуитивно понятны. Конфиг определяет, как себя будет вести система при установке нового ядра из deb-пакета. Подробннее в man kernel-img.conf

Дальнейшие действия:
1
2
3
4
5
6
7
# mount /dev/sda1 /boot

# apt-get install grub-pc

# grub-install /dev/sda

# apt-get install linux-image-2.6.18-5-amd64


Расшифровка построчно:
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

# apt-get install xen-docs-3.2 xen-utils-3.2-1 xen-tools

# apt-get install libc6-xen

# apt-get install linux-image-2.6.18-5-xen-amd64

# apt-get install xen-linux-system-2.6.18-5-xen-amd64

# apt-get install xen-linux-system-2.6.18-5-xen-vserver-amd64

 

Замечу, что автор устанавливает конкретную версию ядра (2.6.18-5) для конкретной архитектуры (amd64). Не нужно тупо копипастить эти команды. Скорректируйте их в соответствии со своей системой и предпочтениями.

2.1. Ручное добавление записи в меню


Сразу напомню: это не правильный способ редактирования меню. По правилам мы должны написать скрипт, который составлял бы подобные записи для Xen автоматически. Но если вам время дороже надёжности системы, можно сделать и так. Всё будет работать до следующего обновления загрузчика.
Добавим в конец grub.cfg подобную запись:

1
2
3
4
5
6
7
8
9
menuentry “Xen 3.2? {

multiboot (hd0,1)/xen-3.2-1-amd64.gz dom0_mem=256M

module (hd0,1)/vmlinuz-2.6.18-5-xen-amd64 root=/dev/sda2 ro

module (hd0,1)/initrd.img-2.6.18-5-xen-amd64

}


Теперь, после перезагрузки вы должны оказаться в ядре 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

set -e



kernels=`ls /boot/vmlinuz-*-xen-*|sed s/”.*vmlinuz-”//` 2>/dev/null

initrds=`ls /boot/vmlinuz-*-xen-*|sed s/”.*initrd.img-”//` 2>/dev/null

xenimgs=`ls /boot/xen-*|sed s/”.*xen-”//|sed s/”.gz”//` 2>/dev/null

MODULE=”}

for i in $xenimgs; do

for j in $kernels; do

echo “Found xen kernel and image: $j –> $i” >&2

echo “$initrds” | grep $j > /dev/null 2>&1

if [ $? -eq 0 ]; then

MODULE=”module ${GRUB_DRIVE_BOOT}/initrd.img-$j

}

else

MODULE=”}

fi



cat << EOF

menuentry “Xen ${i} kernel $j” {

multiboot ${GRUB_DRIVE_BOOT}/xen-$i.gz dom0_mem=256M

module ${GRUB_DRIVE_BOOT}/vmlinuz-$j root=/dev/sda2 ro console=tty0

${MODULE}

EOF

echo “”

done

done


Необходимые действия:
1. Создаём файл для скрипта
#touch /etc/grub.d/10_xen

2. Задаём права доступа к нему:
#chmod 755 /etc/grub.d/10_xen

3. Добавляем вышеприведённый скрипт в /etc/grub.d/10_xen

Вот и всё. Удачи!


Теги:

Username 02.04.09 17:28 # +-1
отличный пост, не понимаю, почему никто не откомментил.
у меня вопрос, пользователю чем более приятен груб2? я видел обзор, мне он мало о чем сказал в этом плане.

Лучшие блоги (все 158)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 3202 из 232 городов)
Топ пользователей Топ блогов
welinux.ru

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн