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

Смотреть казахский видео

Официальный сайт maxceiling 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

Смотреть онлайн бесплатно

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


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

Online video HD

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

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

Full HD video online

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

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

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