LinuxForum.Fans
Тема

Установка Xen на Slackware

Автор: skyfoxss 6 сообщений 4753 просмотров
#312152

Здравствуйте!
Не нашел нужного кикстарта для Xen на этой машине (Slackware 14, 32 bit). Сборка скриптом Xen 4.2.1 со Slackbuilds.org заканчивается ошибкой на make install-tools

text

cp seabios-config seabios-dir/.config;
make PYTHON=python subdirs-all
make[4]: Вход в каталог `/tmp/SBo/xen-4.2.1/tools/firmware'
make[5]: Вход в каталог `/tmp/SBo/xen-4.2.1/tools/firmware'
make -C seabios-dir all
  Working around non-functional -combine
make[6]: Вход в каталог `/tmp/SBo/xen-4.2.1/tools/firmware/seabios-dir-remote'
  Working around non-functional -combine
  Build Kconfig config file
  Compiling whole program out/ccode.16.s
  Compiling to assembler out/asm-offsets.s
  Generating offset file out/asm-offsets.h
  Compiling (16bit) out/code16.o
  Compiling whole program out/ccode32flat.o
  Compiling whole program out/code32seg.o
  Building ld scripts (version "1.6.3.2-20130329_132810-efedotov")
Traceback (most recent call last):
  File "./tools/layoutrom.py", line 583, in <module>
    main()
  File "./tools/layoutrom.py", line 564, in main
    info16 = parseObjDump(infile16, '16')
  File "./tools/layoutrom.py", line 501, in parseObjDump
    relocsection = sectionmap[sectionname]
KeyError: '.text.asm.out/../src/smp.c.68'
make[6]: *** [out/romlayout16.lds] Ошибка 1
make[6]: Выход из каталога `/tmp/SBo/xen-4.2.1/tools/firmware/seabios-dir-remote'
make[5]: *** [subdir-all-seabios-dir] Ошибка 2
make[5]: Выход из каталога `/tmp/SBo/xen-4.2.1/tools/firmware'
make[4]: *** [subdirs-all] Ошибка 2
make[4]: Выход из каталога `/tmp/SBo/xen-4.2.1/tools/firmware'
make[3]: *** [all] Ошибка 2
make[3]: Выход из каталога `/tmp/SBo/xen-4.2.1/tools/firmware'
make[2]: *** [subdir-install-firmware] Ошибка 2
make[2]: Выход из каталога `/tmp/SBo/xen-4.2.1/tools'
make[1]: *** [subdirs-install] Ошибка 2
make[1]: Выход из каталога `/tmp/SBo/xen-4.2.1/tools'
make: *** [install-tools] Ошибка 2

Подозреваю что что-то не так со сборкой сторонней SeaBios которую тянет из Git. Скрипт сборки Xen выглядит примерно так:

text

./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --build=$ARCH-slackware-linux

make install-xen \ docdir=/usr/doc/$PRGNAM-$VERSION \ DOCDIR=/usr/doc/$PRGNAM-$VERSION \ mandir=/usr/man \ MANDIR=/usr/man \ DESTDIR=$PKG make install-tools \ docdir=/usr/doc/$PRGNAM-$VERSION \ DOCDIR=/usr/doc/$PRGNAM-$VERSION \ mandir=/usr/man \ MANDIR=/usr/man \ DESTDIR=$PKG make install-stubdom \ docdir=/usr/doc/$PRGNAM-$VERSION \ DOCDIR=/usr/doc/$PRGNAM-$VERSION \ mandir=/usr/man \ MANDIR=/usr/man \ DESTDIR=$PKG make install-docs \ docdir=/usr/doc/$PRGNAM-$VERSION \ DOCDIR=/usr/doc/$PRGNAM-$VERSION \ mandir=/usr/man \ MANDIR=/usr/man \ DESTDIR=$PKG

Кто подскажет в чем проблема? Заранее благодарю.

#312221

я собирал по инструкции самого ксена через :

text

./configure 
LANG=C make world
make install \
DESTDIR=$PKG 

но перед этим нужно зависимости его собрать, на slackbuilds.org есть.
И если машина с нвидией то наверняка будет трах лютый, а результат скорее всего fail, т.к. нвидиа - контора феерических криворуких дятлов, увы.
Если интересует сама последовательность, вот моя последняя рабочая конфигурация:
- сперва ядро, linux-3.2.34 - вполне стабильно и работоспособно, как конфигурировать можно прочитать в вики ксена - тыц
- далее зависимости
- далее правим оригинальный слакбилд из slackbuilds.org примерно так :

text

cd $PRGNAM-$VERSION
chown -R root:root .
find . \
 \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;
./configure 
LANG=C make world
make install \
DESTDIR=$PKG   

# Remove useless symlinks in boot/ find $PKG/boot/ -type l -a -name "xen-*" -exec rm -f {} \;

# Move from SYSV to BSD init scripts mv $PKG/etc/rc.d/init.d/xen-watchdog $PKG/etc/rc.d/rc.xen-watchdog.new mv $PKG/etc/rc.d/init.d/xencommons $PKG/etc/rc.d/rc.xencommons.new mv $PKG/etc/rc.d/init.d/xend $PKG/etc/rc.d/rc.xend.new mv $PKG/etc/rc.d/init.d/xendomains $PKG/etc/rc.d/rc.xendomains.new

# Fully qualified paths are needed for /etc/rc.d/rc.local_shutdown

- далее пытаемся собирать, последняя карта нвидии, которая более-менее нормально работала у меня это NVIDIA GeForce GTS 250, а вот gtx 650 ti уже не взлетела, графический режим крайне уныл, OpenGL не работает, qemu тупо виснет. Если железо позволяет, вероятно это можно обойти,но у меня пока тотальный апгрейд малость подзавис.
- далее прописываем нужные сервисы ксена в /etc/rc.d/rc.modules
как то так :

text

### Parallel printer support ###
# This should be safe to try to load by default.
/sbin/modprobe kvm-intel 2> /dev/null
/sbin/modprobe -q lp 2> /dev/null
/sbin/modprobe -q rtc
### Parallel port IP ###
#/sbin/modprobe plip
/sbin/modprobe -q xen-evtchn 2> /dev/null
/sbin/modprobe -q xen-gntdev 2> /dev/null
/sbin/modprobe -q xen-netback 2> /dev/null
/sbin/modprobe -q xen-blkback 2> /dev/null
/sbin/modprobe -q xenfs 2> /dev/null
/sbin/modprobe -q blktap 2> /dev/null
### Filesystem Quota support ###

- далее в /etc/rc.d/rc.local
прописываем самого ксена :

text

  if [ -d /proc/xen ]; then
    if [ -x /etc/rc.d/rc.xencommons ]; then
      echo "Starting XEN commons:  /etc/rc.d/rc.xencommons"
      /etc/rc.d/rc.xencommons start
    fi
    if [ -x /etc/rc.d/rc.xendomains ]; then
      echo "Starting XEN domains:  /etc/rc.d/rc.xendomains"
      /etc/rc.d/rc.xendomains start
    fi
    if [ -x /etc/rc.d/rc.xend ]; then
      echo "Starting XEN daemon:  /etc/rc.d/rc.xend"
      /etc/rc.d/rc.xend start
    fi
  fi

на счет последнего блока if-fi, xend объявлен устаревшим, но тем не менее он работает, запускать его или нет каждый решает сам.
- далее в /etc/fstab в конце дописываем:

text

none          /proc/xen       xenfs       defaults         0   0

- ну и собственно загрузчик как и что гугль в помошь, лично у меня grub2, сам блок выглядит так:

text

menuentry 'Slackware-DOM0 GNU/Linux' --class slackware-14.0 --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-xxxxxxxxxxxxxxxxxxxxxxxxxxxx' {
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd2,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos3 --hint-efi=hd2,msdos3 --hint-baremetal=ahci2,msdos3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    else
      search --no-floppy --fs-uuid --set=root xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    fi
    multiboot /boot/xen.gz gfx_passthru=0 vga=gfx-1024x768x16
    module /boot/vmlinuz root=UUID=xxxxxxxxxxxxxxxxxxxxxxxxxxx intel_iommu=on console=tty0 console=xvc0 video=vesafb,mtrr:3,ywrap vga=791 ro 
    module  /boot/initrd.gz
}

обязательно соберите initrd.gz, это убережёт от проблем с первоначальной загрузкой Dom0...
собственно и вся недолга.
под кедами:

или под fluxbox

#312748

Спасибо за инструкцию.

gramozeka написал:

- далее пытаемся собирать, последняя карта нвидии, которая более-менее нормально работала у меня это NVIDIA GeForce GTS 250, а вот gtx 650 ti уже не взлетела, графический режим крайне уныл, OpenGL не работает, qemu тупо виснет.

1) Это с каким блобом?
У меня стоит как раз 8600GT + драйвера 313.09
2) со стоковым 3.2.29 могут быть проблемы с Xen?

gramozeka написал:

обязательно соберите initrd.gz, это убережёт от проблем с первоначальной загрузкой Dom0

Слишком нетривиально. А если huge ядро прописать в грабе без initrd перед ксеном в качестве Dom0, то будут проблемы?

#312826
"skyfoxss⇓" написал:
Слишком нетривиально. А если huge ядро прописать в грабе без initrd перед ксеном в качестве Dom0, то будут проблемы?

я ведь не агитирую, мне это вместо онанизма в юности, к примеру, есть интересная задача - решил, мозги поразмял, всё не овощ и то ладно, а вы уж там сами давайте, а вдруг по другому будет именно у вас, расскажите об успехе другим-польза, опять же. И что там нетривиального, ядро пересобрать? Это первая фича! Открою маленькую тайну - нет готовых ядер с ксеном для слаки, потому как никому не нужны - кому надо сам себе соберёт - это буднично просто и потому до этого никому нет дела. Другой вопрос - Вас пугает собирать ядро? Тогда вам рано с ксеном играться, вы его банально не установите. Читайте доки с манами, там все описано в двух словах просто и без лирики... *PARDON*

#313575

Установил таки Xen на стоковое ядро 3.2.29 (конфиг для Dom0 из Slackbuilds.org).
С нвидиа был небольшой секс: драйвер nvidia под ядро с поддержкой Dom0 ксена встал без проблем, драйвер под немодифицированное ядро 3.2.29-smp не загружался:

text

could not insert 'nvidia': Exec format error

Посмотрел в логе - оказалось все просто: драйвер nvidia.ko при сборке цепляет значение magic из конфига ядра исходников линукса, а при запуске проверяет на соответствие с magic запущенного ядра. Так что перед установкой драйверов NVIDIA:

text

zcat /proc/config.gz > /usr/src/linux/.config

Другой вопрос - в Dom0 перестал работать звук (вместо него-треск). Возвращаюсь в немодифицированное ядро-звук есть.

text

lspci | grep Audio
00:1b.0 Audio device: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
Войдите или зарегистрируйтесь, чтобы ответить.