Всем привет. Имеется машина с установленным на ней debian squeeze (netinst), занимает всё это дело порядка 500мб места. Необходимо удалить практический всё, что можно, оставив лишь только некоторые сетевые дела которые установлены и необходимы для нормальной работы с сетью (всё это делается для шлюза). Ну собственно опишу в крации то, что мне необходимо:
iptables, tc, bind, dhcp, microhttpd (небольшой веб сервер), ssh.
всё остальное хотелось бы снести, всё, что занимает место на диске и в той или иной степени потребляет ресурсы процессора. Сносить хочу всё, вплоть до dpkg, apt-get, aptitude, tasksel и т.п. собственно какие пакеты необходимо оставить для работы ос?
Debian: удалить всё, что можно
всё это делается для шлюза
Сносить хочу всё, вплоть до dpkg, apt-get, aptitude
А обновлять как?
zerg, а обновлять и не надо smile
.snif, debootstrap позволяет делать систему размером 195Мб.
это понятное дело без ядра.
если и это много, то нужна встраиваемая система на базе linux ядра, но никак не на базе пакетного дистрибутива.
а ещё проще наверное это сделать с FreeBSD. пару десятков строчек в конфигах, и соберётся урезанный мир и ядро.
всё проще, чем компилять LFS.
то нужна встраиваемая система
Согласен, дебиан наверное не лучший выбор в этой ситуации.
system-root, да о фре я тоже думал. Про ЛФС тоже дамал. Про пару строчек и врю по подробнее можно?)
.snif, может быстрее всего будет скачать книгу Лукаса "FreeBSD подробное руковдство" и там есть глава "Уменьшение размера FreeBSD" она ответит наверное на все вопросы :-).
papin-aziat, честно говоря не люблю я книги. Я привык гуглить и спрашивать на форумах smile
Про пару строчек и врю по подробнее можно?)
в /etc/make.conf
# To avoid building various parts of the base system:
NO_MODULES= через пробел список # do not build modules with the kernel
# The list of modules to never build, applied *after* MODULES_OVERRIDE.
WITHOUT_MODULES= через пробел список
почитать man src.conf и создать /etc/src.conf, по умолчанию его нет.
там что-то вроде
WITHOUT_BIND
WITHOUT_BLUETOOTH
.....
и т.д.
ну и ядро пересобрать так, чтоб лишнего ничего.
после этого всё это инсталлируется в нужную директорию или переносится на устройство.
Доступен релиз Alpine Linux 2.1.0, специализированного дистрибутив для построения сетевых шлюзов, межсетевых экранов, VPN-серверов и VoIP-систем. Дистрибутив сформирован с претензией на повышенную безопасность и собран с патчами PaX и SSP (Stack Smashing Protection). Загрузочный iso-образ занимает всего 191 Мб, в качестве системой библиотеки используется uClibc, а в качестве стандартных утилит - BusyBox.
Из улучшений версии 2.1.0 можно отметить обновление следующих приложений: linux-ядро 2.6.35, gcc-4.5.x, gdb 7.2, perl 5.12, asterisk 1.8.x, postgresql 9.0.x, dovecot 2.0.x, vsftpd 2.3.1, bind 9.7.2, clamav 0.96.4, samba 3.5.6, gtk+ 2.22, kamailio 3.1, xorg-server-1.9.x (c поддержкой udev и горячего подключения устройств). Кроме того, обеспечена поддержка php/apache2, в качестве альтернативы busybox mdev добавлена начальная поддержка udev.
честно говоря не люблю я книги
Лукас знает эти вопросы лучше любого местного бздуна, почему бы не пообщаться с ним?
почему бы не пообщаться с ним?
я бы с ним тоже пивка попил.. =)
system-root, не в тему, почему твои посты в размер текста, а мои с кучей пустого места?
http://forum.nag.ru/forum/index.php?showtopic=46366
Отличная штука. Полностью запилино для продакшна... Другой вопрос - обновлять его перестали.
Всем спасибо, глянул в сторону фри, скачал книжку немного погуглил ну и собственно пришёл к выводу, что это наиболее разумный вариант. Сейчас отключил все лишние модули и пересобираю ядро.
HOWTO-часть
Зададимся задачей получить маленький, уютненький и, желательно, чем-нибудь полезный дистрибутив, не прилагая особых усилий. По большому счету нам понадобится загрузчик, ядро и образ initramfs. Самый простой способ получить их — вытащить из уже готового дистрибутива. Для того, чтоб сделать его хоть сколь-нибудь полезным вставим туда busybox и настроим несколько сетевых сервисов. Покажу как это проделать с CentOS, но в принципе подойдет любой. Итак, приступим:
Распакуем куда-нибудь initrd:
mkdir /root/myimage
cd /root/myimage
gzip -d < /boot/initrd-2.6.18-128.el5 | cpio --extract --verbose --make-directories --no-absolute-filenames
Устанавливаем и копируем busybox в наш минилинукс (busybox ни с чем не линкуется, так что копируем смело)
yum install busybox
cp -a /sbin/busybox /root/myimage/bin
Оставляем в init только самый необходимый минимум: создаем procfs и sysfs, основные файлы устройств, загружаем нужные драйвера (для моей сетевой мне понадобилось скопировать их из /lib основного дистрибутива) и запускаем пару сервисов. Вот:
/init
#!/bin/nash
mount -t proc /proc /proc
mount -t sysfs /sys /sys
mount -o mode=0755 -t tmpfs /dev /dev
mkdir /dev/pts
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
mkdir /dev/shm
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2
mknod /dev/rtc c 10 135
mknod /dev/tty0 c 4 0
mkblkdevs
insmod /lib/libphy.ko
insmod /lib/tg3.ko
mkblkdevs
echo WELCOME!!!
/bin/busybox ln -s /bin/busybox /bin/ash
/bin/busybox ln -s /bin/busybox /bin/telnetd
/bin/busybox ifconfig eth0 192.168.1.1 netmask 255.255.255.0
/bin/busybox httpd
/bin/busybox inetd /etc/inetd.conf
/bin/ash
/etc/passwd
root:x:0:0:root:/:/bin/ash
/etc/inetd.conf
23 stream tcp nowait root /bin/telnetd telnetd -l /bin/ash
Собираем initramfs и возвращаем на место:
find . | cpio -H newc --create --verbose | gzip -9 > /boot/initrd-2.6.18-128.el5
Вуаля. Наш минилинукс готов. Можно сносить все, кроме директории /boot и перегружаться. Но для пущей надежности перенесем его на флешку:
Допустим флешка определена ядром как /dev/sdb. На ней — всего один fat-раздел. При помощи fdisk сделаем ее загрузочной
fdisk /dev/sdb
Проверяем, стоит ли в колонке boot звездочка. Если нет, жмем a, и затем w.
Монтируем флешку куда-нибудь и копируем на нее /boot
mount /dev/sdb1 /mnt
cp -a /boot /mnt
umount /dev/sdb1
При помощи grub перезаписываем загрузочный сектор флешки
grub
>find (hd1,0)/boot/grub/stage2
>root (hd1,0)
>setup (hd0)
>quit
тут я сделал предположение, что grub «увидел» флешку, как диск 2. Если это не так, find выдаст ошибку (не найдет /boot). Посмотрите результат find (hd2,0)… find (hd3,0)… и т.д., пока не найдете флешку.
Итого
Ну вот и все. Перегружаемся, включаем в биосе загрузку со сменных носителей и получаем приглашение командной строки нашего минилинукса. Так же пробуем подсоединиться к 192.168.1.1 telnet-клиентом и открыть в браузере 192.168.1.1/init Если кто проникся темой создания своего маленького дистрибутивчика, вот несколько направлений для дальнейших исследований:
— Посмотрите утилиты busybox. Там много полезных сетевых сервисов: http,dhcp,tftp,smtp,tod,inetd. Из tar+gzip+ftpput получается отличный «unattended backup». Так же есть масса утилиток для работы с ФС, что позволят Вам создать свой rescue cd.
— Определите больше устройств. Как вы, наверное, заметили, я выбросил из init-скрипта все драйверы дисковых устройств и фс. О!!! И, кстати, hotplug и USB-драйвера тоже отключены, так что если у вас usb-клавиатура, сперва-наперво верните их на место.
Где то на хабре брал. Думаю для мини дистрибутива пойдёт если чуток поработать. smile
Ведь так же можно будет поставить софт удалить всякие man.
Ведь так же можно будет поставить софт
в бизибоксе ставить софт? оО
papin-aziat, я не понял вопроса.
papin-aziat, по месту: а куда информацию, включая аватарку, девать? :rolleyes: .
а куда информацию, включая аватарку, девать? rolleyes
мда... нечего сказать oO . Не говори никому, что я это спрашивал! :rolleyes:
