Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> www.lissyara.su —>

Порт emulators/linux_base-gentoo-stage3 в действии

Автор: asminok.


    Часто случается ситуация, когда необходимо запустить линуксовые бинарики, или даже не бинарики, а сорцы, но лень адаптировать их под фряху, а порта соответствующего нет. Так, как описано в хэндбуке, запускать сложно и муторно, хочется, чтобы просто взял - и запустил. Однажды я наткнулся на интересный порт - emulators/linux_base-gentoo-stage3. Это альтернатива обычному emulators/linux_base-fc4 и подобным ему. Далее привожу общую последовательность действий и результат каждого из них, хотя многие из этих шагов можно было и сократить, если бы знал всё изначально.
   Изначально у меня был установлен и настроен порт /emulators/linux_base-fc4, linux-совместимость подгружалась модулем, и в /etc/fstab присутствовали строки:
none        /compat/linux/proc  linprocfs   rw  0   0
none        /compat/linux/sys   linsysfs    rw  0   0
none        /compat/linux/dev   devfs   rw      0   0

Версия фри 7.1 и compat.linux.osrelease=2.6.16
   Я сразу сделал бэкап того, что уже установлено:
cd /compat
tar czf linux.tar.gz linux

   Это нужно было сделать, так как у меня установлены skype, flashplayer и googleearth, которые зависят от этой папки. Далее снес emulators/linux_base-fc4:
cd /usr/ports/emulators/linux_base-fc4 && make deinstall

   далее поставил emulators/linux_base-gentoo-stage3
cd /usr/ports/emulators/linux_base-gentoo-stage3 && make GENTOO_OPTIMIZED=i686 install clean

   (здесь я обратил внимание на вывод команды, в нем встретился совет сделать chroot /compat/linux emerge sync и chroot /compat/linux /usr/portage/scripts/bootstrap.sh).
   Теперь линукс-зависимые приложения, естественно, работать отказались. Зато получился почти полноценный линукс. Я опять сделал бэкап полученных результатов, ибо на каждом шагу все норовит пойти криво:
cd /compat
tar czf gentoo-begin.tar.gz linux

Запустил линуксовый шелл:
chroot /compat/linux bash

С этого момента почти все команды выполнялись в этой же консоли, в chroot. Затем установил портежи:
emerge sync

   Эта команда выполнялась долго, и выкачала  ~300 mb портежей из инета. В конце своего вывода она попросила сделать еще emerge portage, я сделал:
emerge portage

   Это выполнилось быстро.
   Снова бэкап (из внешней оболочки):
cd /compat/
tar vzxf gentoo-with-portage.tar.gz linux

   Перед тем как собирать что либо, я поправил /etc/make.conf (поправил его из внешней оболочки, не из chrootа, так как в chrootе пока еще не было знакомого мне текстового редактора). Устройство этого файла не совсем аналогично тому что в FreeBSD, поэтому я только добавил свои ключи -march и -mtune.
   Команда /usr/portage/scripts/bootstrap.sh, которую посоветовали выполнить при установке emulators/linux_base-gentoo-stage3, начала собирать некие 9 приложений, по видимому базовых, среди них последними были gcc (собрался) и glibc (не собрался, сколько я его не пытался собрать, не получается). После этого мне захотелось получить zsh, и vim. В портежах обнаружились /usr/portage/app-editors/vim и /usr/portage/app-shell/zsh:
cd /usr/portage/app-editors/vim
emerge vim-7.2.ebuild

   Команда emerge используется в gentoo вместо привычной нам make install clean. Про нее надо добавить следуюее - многие ebuildы свежих версий на компилятся, и выдают какие-то оповещения про "masked". Тогда надо взять версию постарше, и скорее всего все будет хорошо. Также, много интересного делается в помощью файла /etc/make.profile, про него написано в документации.
   Таким же образом я стал компилить все подряд - для проверки возможностей. Собиралось многое, однако /usr/portage/net-misc/netkit-rsh наотрез отказался компилиться, а от него зависели все более менее сложные приложения. Дело в том что команда rm не удаляет файлы рекурсивно. То есть удаляет по одному, а папку - нет. Команда chmod, и некоторые другие - тоже (Эти досадные вещи вроде исправлены в FreeBSD 8). Сразу скажу, что в этом нет непреодолимой проблемы, временные файлы от портежей хранятся централизованно - /var/tmp/portage/, посему их можно легко удалить разом из внешней оболочки. И как показывает опыт, основное количество портежей собираются и работают и с такими rm и chmod. Так вот /usr/portage/net-misc/netkit/rsh я в мтоге собрал - просто исправил несколько строк в netkit-rsh-0.17-r9.ebuild:
было:
...
src_unpack() {
unpack ${A}

cd "${S}"
rm -rf rexec
mv ../rexec rexec
...

стало:
	...
src_unpack() {
unpack ${A}

cd "${S}"
cd rexec
rm .cvsignore
rm Makefile
rm README
rm rexec.1
rm rexec.c
cd ..
rm -rf rexec
mv ../rexec rexec
...

и выполнил
ebuild netkit-rsh-0.17-r9.ebuild digest

- чтобы он сделал новый чексум.
После этого он собрался, собралось и то что от него зависело. Для запуска иксовых приложений из под chroot я выполнил команду
xhost +

которая позволяет обращаться ик иксам всем прилоложениям подряд. Это может понизить безовасность системы.
   Из иксовых программ, которые пробовал vmware, virtualbox, linux-uvc (это дрова к вебкамерам) собираться отказались, жалуясь на то что видители конфигурация ядра крива, или что то в этом духе. Собрался, но не запустился pidgin, поставились и попытались запуститься skype и googleearth (их, я полагаю, таки можно запустить), запустились mplayer (с видео), firefox, opera, Eterm, dillo, flashplayer. Сами иксы собрались, но не запустились. Запустились также fluxbox и куча (наверное, больше половины) приложений из kde, само kde попыталось запуститься, но после первичного конфигурирования померло. После того как я поставил flashplayer10 в "gentoo" сразу заработал и flashplayer9 во внешней системе.
   Таким образом, могу сказать, что собирается большинство из не юзающих аппаратную часть приложений.
   На этом я пока закончил изыскания и сделал бэкап:
cd /compat
tar czf gentoo-good.tar.gz linux

   После всех этих экспериментов я выполнил pkgdb -F чтоб поправить порты, оно успешно завершилость, я обновил порты portupgrade-ом. и решил переустановить googleearth, так как он перестал работать. cd /usr/ports/astro/googleearth && make deinstall && make install clean выдал мне сообщение о том, что ему нужен linux_base-fc4. а linux_base-gentoo-stage3 ему мешает. Тогда я решил перенести gentoo из /compat/linux в /compat/gentoo, а на его место вернуть linux_base-fc4:
cd /usr/ports/emulators/linux_base-gentoo-stage3 && make deinstall
cd ../linux_base-fc4 && make install clean 
cd /compat/
tar vzxf linux.tar.gz
mkdir gentoo
mv gentoo-good.tar.gz gentoo/
cd gentoo
tar vzxf gentoo-good.tar.gz
mv linux/* .
mv gentoo-good.tar.gz ..

   Затем добавил в /etc/fstab еще три строки:
none		/compat/gentoo/proc	linprocfs	rw	0	0
none		/compat/gentoo/sys	linsysfs	rw	0	0
none		/compat/gentoo/dev	devfs	rw		0	0

   
mount -a

   и после этого gentoo на новом месте стал работать по прежнему.
   В итогу Skype и flashplayer работают нормально, googleearth пока отказывается, что-то я сломал.
   Зы: Все вышеописанное я делал на довольно сильном ноутбуке с amd turion и 3 гигами памяти и в общем, не могу пожаловаться не слишком быструю работу линукс-приложений, так что если железо слабое, то все будет очень медленно ( нужно много компилить, памяти это ест много, так как линукс-прложения вытягивают полностью свои библиотеки ). Также текст выглядит непоследовательным, многие шаги можно сократить или сделать по-другому, но это не методика, а описание того что делал и получил я. Также при углубленном воспроизведении методы следует читать гентушные доки, благо их много, даже на русском языке.



размещено: 2009-03-03,
последнее обновление: 2009-03-03,
автор: asminok




 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0281 секунд
Из них PHP: 36%; SQL: 64%; Число SQL-запросов: 29 шт.
Исходный размер: 26771; Сжатая: 7046