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



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

оценить статью:


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 15 чел.
За последние 30 мин было: 74 человек
За сегодня было
2884 показов,
888 уникальных IP
 

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

© lissyara 2006-10-24 08:47 MSK

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