LinuxForum.Fans
Тема

Debian: удалить всё, что можно

Автор: u_snif 28 сообщений 8204 просмотров
#95933

Всем привет. Имеется машина с установленным на ней debian squeeze (netinst), занимает всё это дело порядка 500мб места. Необходимо удалить практический всё, что можно, оставив лишь только некоторые сетевые дела которые установлены и необходимы для нормальной работы с сетью (всё это делается для шлюза). Ну собственно опишу в крации то, что мне необходимо:
iptables, tc, bind, dhcp, microhttpd (небольшой веб сервер), ssh.
всё остальное хотелось бы снести, всё, что занимает место на диске и в той или иной степени потребляет ресурсы процессора. Сносить хочу всё, вплоть до dpkg, apt-get, aptitude, tasksel и т.п. собственно какие пакеты необходимо оставить для работы ос?

#95941
.snif написал:
всё это делается для шлюза
.snif написал:
Сносить хочу всё, вплоть до dpkg, apt-get, aptitude

А обновлять как?

#95942

zerg, а обновлять и не надо smile

#95957

.snif, debootstrap позволяет делать систему размером 195Мб.
это понятное дело без ядра.
если и это много, то нужна встраиваемая система на базе linux ядра, но никак не на базе пакетного дистрибутива.
а ещё проще наверное это сделать с FreeBSD. пару десятков строчек в конфигах, и соберётся урезанный мир и ядро.
всё проще, чем компилять LFS.

#95958
system-root написал:
то нужна встраиваемая система

Согласен, дебиан наверное не лучший выбор в этой ситуации.

#95961

system-root, да о фре я тоже думал. Про ЛФС тоже дамал. Про пару строчек и врю по подробнее можно?)

#95964

.snif, может быстрее всего будет скачать книгу Лукаса "FreeBSD подробное руковдство" и там есть глава "Уменьшение размера FreeBSD" она ответит наверное на все вопросы :-).

#95968

papin-aziat, честно говоря не люблю я книги. Я привык гуглить и спрашивать на форумах smile

#95969
.snif написал:
Про пару строчек и врю по подробнее можно?)

в /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
.....
и т.д.

ну и ядро пересобрать так, чтоб лишнего ничего.

после этого всё это инсталлируется в нужную директорию или переносится на устройство.

#95972

Доступен релиз 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.
#95989
.snif написал:
честно говоря не люблю я книги

Лукас знает эти вопросы лучше любого местного бздуна, почему бы не пообщаться с ним?

#95990
papin-aziat написал:
почему бы не пообщаться с ним?

я бы с ним тоже пивка попил.. =)

#95992

system-root, не в тему, почему твои посты в размер текста, а мои с кучей пустого места?

#96093

Всем спасибо, глянул в сторону фри, скачал книжку немного погуглил ну и собственно пришёл к выводу, что это наиболее разумный вариант. Сейчас отключил все лишние модули и пересобираю ядро.

#96095
text
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.

#96318
Kettler написал:
Ведь так же можно будет поставить софт

в бизибоксе ставить софт? оО
papin-aziat, я не понял вопроса.

#96336
system-root написал:
я не понял вопроса.

#96354

papin-aziat, по месту: а куда информацию, включая аватарку, девать? :rolleyes: .

#96355
SUSE_user написал:
а куда информацию, включая аватарку, девать? rolleyes

мда... нечего сказать oO . Не говори никому, что я это спрашивал! :rolleyes:

Войдите или зарегистрируйтесь, чтобы ответить.