LINUX.ORG.RU
ФорумAdmin

Как правильно собрать маленькую gentoo ?

 , ,


1

1

Озадачили меня на работе собрать маленькую ОС для узкоориентированой задачи. Требования минимальны : php,mysql,xorg+flashplayer . Размер критичен, посему нада исключить всякие ненужные системные утилиты, gcc, ненужные либы и все, то, что в stage3, как я понимаю, занимает около 70% объёма. Думаю делать это так:

emerge --root=/chroot4os openrc udev util-linux ppp и.т.п.

собрать туда ядро я initrd-образом ( кстате, обязателен ли он ? намного ли сложнее без него, учитывая, что система будит работать с USB-флешки ?)

потом emerge --root=/chroot4os xorg-x11 php mysql и.т.п.

Получится ли у меня так сделать ? Я обратил внимание, что emerge предлагает собрать те, зависимости, которых у меня нет в chroot-папке. А откуда тогда берутся USE-флаги - из загруженой ОС или из chroot-ОС. Может собрать её из какого-нить stage 2 или 1 , но не знаю где его взять - на зеркалах генты только stage3. Или использовать что-то типа Catalyst ?

Железо такое: Celeron 2Gz память 2гб, nvidia видуха. Флешки будут по 4Гб, но свободного места всего 1Гиг, а еще нада хранить много логов, за 5-6 месяцев. посему система должна быть как можно меньше.

stage3 распакованый весит около 500Мб. Еслиб втиснуть всё в 300Мб - ваще отличненько было бы, но устроит и 500.

Иными словами - подскажите, какием путем пойти, чтоб добиться результата.



Последнее исправление: dmitry_kozak (всего исправлений: 1)

укажи(ТС) насколько компактную и под какое железо(производительность RAM) нуна систему:

ибо нет предела совершентству и при должной настойчивости это в мегов 50 затрамбовать можно.

закон убывающей отдачи - потребуется неадекватно твоей задаче усилия.

qulinxao ★★☆
()

Весь смысл сборки минимальной генты:
Распаковать stage3

mount ...
chroot ...
echo 'USE="-* smp mmx mmxext sse sse2 sse3 ssse3 sse4 fpu threads" ' >> /etc/make.conf
emerge -avuDN world - ругается, какого-то юза не хватает для какого-то пакета, пишешь его в /etc/portage/package.use.

Повторять, пока не заработает. После того можно удалить /usr/include, /usr/src/. Можно попытаться удалить gcc и попробовать запустить весь нужный софт, в крайнем случае скопировать нужные библиотеки.

ymuv ★★★★
()
Ответ на: комментарий от ymuv

Почему нельзя удалять gcc при наличии cpp-софта:

# emerge -C gcc
...
 $ opera
/usr/lib64/opera/opera: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

ymuv ★★★★
()

Зачем так извращаться? Собираешь как обычно, потом удаляешь dev-пакеты и файлы.

max_udoff
()
Ответ на: комментарий от qulinxao

укажи(ТС) насколько компактную и под какое железо(производительность RAM) нуна систему:

stage3 распакованый весит около 500Мб. Еслиб втиснуть всё в 300Мб - ваще отличненько было бы, но устроит и 500.

Железо такое: Celeron 2Gz память 2гб, nvidia видуха. Флешки будут по 4Гб, но свободного места всего 1Гиг, а еще нада хранить много логов, за 5-6 месяцев. посему система должна быть как можно меньше.

Да и вообще, чем меньше всего там будит, тем быстрее и надежнее оно будит работать. Может вообще придется систему кешировать в ram-диск. Но то уже детали.

dmitry_kozak
() автор топика
Ответ на: комментарий от dmitry_kozak

Ща попробую применить все данные вами советы - посмотрим, сколько выйдет... Делайте ставки ;)

dmitry_kozak
() автор топика
Ответ на: комментарий от dmitry_kozak

довавь в стартовый пост эти характеристики.

qulinxao ★★☆
()
Ответ на: комментарий от blind_oracle

та в генте есть такая-же штука, catalyst называется. Только я её ниразу не юзал и сходу документацию ненагуглил, что весьма удивило.

Мож кто подкинет ссылку ?

dmitry_kozak
() автор топика
Ответ на: комментарий от dmitry_kozak

portage/profiles/{base,default/linux}/packages только, много так не выиграть, думай дальше

anonymous
()
Ответ на: комментарий от dmitry_kozak

Is there an official HOWTO for Catalyst?

Currently, there is no official HOWTO. If you are interested in writing one, though, please file a bug with the HOWTO attached to it. The lack of an official HOWTO does not mean that catalyst is completely undocumented, though. When catalyst is emerged, a well commented set of example spec files are installed to /usr/share/doc/catalyst-$version/examples.

If you still have questions after reading through the examples, feel free to subscribe to the gentoo-catalyst mailing lis

qnikst ★★★★★
()
Ответ на: комментарий от dmitry_kozak

Ну кагбы да, но судя по всему оно крайне сырое. А дебутстрап уже обкатан.

blind_oracle ★★★★★
()

запихай конечный образ в squashfs, при создании - выкинь ненужное. Прилагаю свой exclude-list - использую его для создания стейджа с uclibc для домашнего сервера.

lib/grub
root/*
sbin/grub*
usr/bin/bison
usr/bin/file
usr/bin/flex
usr/bin/lex
usr/bin/m4
usr/bin/py*
usr/bin/yacc.bison
usr/*-gentoo-linux-uclibc
usr/include
usr/lib/*.a
usr/lib/*.la
usr/lib/binutils
usr/lib/gcc/*/*/*.a
usr/lib/gcc/*/*/*.la
usr/lib/gcc/*/*/include
usr/lib/lighttpd/*.la
usr/lib/php5/include
usr/lib/pkgconfig
usr/lib/portage
usr/lib/*python*
usr/libexec/gcc
usr/share/aclocal*
usr/share/autoconf
usr/share/automake*
usr/share/baselayout
usr/share/binutils-data
usr/share/busybox
usr/share/consoletrans
usr/share/doc
usr/share/eselect
usr/share/info
usr/share/misc/magic.mgc
usr/share/misc/pci.ids
usr/share/misc/usb.ids
usr/share/libtool
usr/share/man
usr/share/portage
usr/share/sandbox
var/cache/edb
var/cache/revdep-rebuild
var/db
var/lib/gentoo
var/lib/portage
var/log/emerge*
var/log/news
var/log/portage
var/log/sandbox
Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

в сжатом виде весит чуть больше 40мб - грузиться сразу в оперативку(у меня на серваке 2Гб - так что плевать). Внутри - squid, lighttpd, php, git, vsftpd, dropbear, tftp-hpa, dnsmasq, hostapd, rtorrent, openvpn и quagga. Про всякие bridge-utils и tcpdump я вообще молчу...

Pinkbyte ★★★★★
()
Ответ на: комментарий от anonymous

главное - работает. Не, можно еще больше ужать - но зачем. У меня образ для обновлений отдельно(не обрезанный, обновляю в чруте), а рабочий образ - отдельно. В рабочем образе мне ни python ни тем более portage - не нужны. Как и /usr/include и остальные исключенные папки

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

grub 1 или 2?

Как-то скрипты загрузки приходилось переделывать чтоб это всё счастье грузилось?

anonymous
()
Ответ на: комментарий от Pinkbyte

пасиб, учту и попробую, кроме squashfs. Мне критичен rw-режим монтирования, а unionfs не подойдет т.к. на эти хосты постоянно будут приходить обновления. И, как показала практика их накапливается много.

dmitry_kozak
() автор топика
Ответ на: комментарий от anonymous

я переписывал скрипты загрузки. но я юзал extlinux.

dmitry_kozak
() автор топика
Ответ на: комментарий от anonymous

скрипты загрузки - я использую только самописный local, который сам стартует все в нужном порядке. То есть init-систему в принципе при большом желании тоже можно выкинуть.

А, да, надо патч наложить на скрипт linuxrc при первой сборке initrd, иначе путь к squashfs-образу определяется неправильно

Pinkbyte ★★★★★
()
Ответ на: комментарий от anonymous

Загрузчик - grub 1. Но это от того, что когда делал образ - было лень поставить syslinux, иначе выбрал бы его.

Pinkbyte ★★★★★
()
Ответ на: комментарий от anonymous

у меня еще это чудо заводилось одно время на СF-IDE карте на 32 мегабайта на старом серваке(P-II 400Mhz, 128Mb памяти). Но потом старый сервак был отдан на растерзание^W эксперименты и мать сдохла после очередной установки, кажется, FreeBSD 8.2 или 8.3. А образ практически без изменений переехал на P-IV 2,8Ghz с HyperThreading, 2 гига ОЗУ и парой 1,5Тб винтов(наконец-то подключенных напрямую, а не через PCI Sata-контроллер). Ну и там еще пару чрутов запихнул отдельно с CS 1.6 и Minecraft-серверами.

Чё-то пробило на объяснения - прям TLDR; какой-то. Выдохнул...

Pinkbyte ★★★★★
()
Ответ на: комментарий от dmitry_kozak

а, ну если будут постоянно приходить апдейты и много, то squashfs - действительно не лучший выбор

Pinkbyte ★★★★★
()

Думаю делать это так:

emerge --root=/chroot4os openrc udev util-linux ppp и.т.п.
...
потом emerge --root=/chroot4os xorg-x11 php mysql и.т.п.

В таком случае лучше использовать опцию '--with-bdeps=n'

И собирать систему в chroot окружении со свеже развёрнутым stage3. Если будете так поступать в уже собранной системе у вас может возникнуть ситуация, когда в системе уже установлен пакет, требуемый для работы собираемых пакетов, которые устанавливаются в root=, то он не будет собран.

kostik87 ★★★★★
()
Ответ на: комментарий от ymuv

Туда же в фичи

              nodoc  Do not install doc files (/usr/share/doc).

              noinfo Do not install info pages.

              noman  Do not install manpages.
macumazan ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.