Raspbian является рекомендуемым дистрибутивом для всех, кто начинает своё знакомство с Raspberry Pi, проблема лишь в том, что по умолчанию в него включено множество пакетов. А так как очень не многие используют малинку в качестве десктопа, то эти пакеты вряд ли можно считать необходимыми. На просторах Интернета можно найти образы минималистичных версий (например, из этой статьи), но к сожалению 2 представленные там версии (Raspbian Server Edition и Raspbian Minimal) не обновлялись уже более 2 лет.

В связи с этим было решено самостоятельно вырезать из установленной системы все ненужные компоненты. На просторах Интернета была найдена только одна более менее полная статья на английском языке. Большая часть взята из неё с моими небольшими исправлениями и дополнениями.

P.S. У знатоков Linux систем с этим вряд ли возникнут проблемы, а новичкам может быть полезно.

Что имеется


Произведена чистая установка системы (на момент написания статьи была установлена NOOBS LITE version 1.4 Release date 2015-02-18).

Установка производилась на флешку 8 ГБ, согласно инструкции: www.raspberrypi.org/help/noobs-setup.

В итоге после установки мы имеем:

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
rootfs           7338472 2521720   4420928  37% /
/dev/root        7338472 2521720   4420928  37% /
devtmpfs          470416       0    470416   0% /dev
tmpfs              94944     240     94704   1% /run
tmpfs               5120       0      5120   0% /run/lock
tmpfs             189880       0    189880   0% /run/shm
/dev/mmcblk0p5     61302   19164     42138  32% /boot

Как видно занято 2 521 720 Байт, то есть 2,5 ГБ. Также при загрузке малинка пожирает около 200 МБ оперативной памяти.

Перед началом можно запустить raspi-config и сделать необходимые настройки. Вот, что изменил я:
  • Локаль (4 Internationalisation Options -> I1 Change Locale -> ru_RU.UTF-8 UTF-8)
  • Часовой пояс (4 Internationalisation Options -> I2 Change Timezone)
  • Настройки производителности (7 Overclock -> Pi2 1000MHz ARM, 500MHz core, 500MHz SDRAM, 2 overvolt)
  • Уменьшена память для графической подсистемы (8 Advanced Options -> A3 Memory Split -> 16)
  • Включен SSH (8 Advanced Options -> A4 SSH -> Enable)

Для просмотра списка установленных пакетов можно воспользоваться двумя командами:
# dpkg --get-selections
# aptitude search '~i'

Вторая команда, помимо названия, выведет описание пакетов.

Приступаем к удалению


Удаляем графический интерфейс и среду рабочего стола:
# aptitude purge x11-common lxde gconf2-common gnome-desktop3-data

Удаляем хвосты LXDE
# aptitude purge lxappearance lxde-common lxde-icon-theme lxinput lxmenu-data lxpanel lxpanel-data lxpolkit lxrandr lxsession lxsession-edit lxshortcut lxtask lxterminal

Удаляем питон:
# aptitude purge python python-minimal python2.7 python2.7-minimal python3 python3-minimal python3.2 python3.2-minimal

Удалим пакеты для разработчиков:
# aptitude purge `sudo dpkg --get-selections | grep "\-dev" | sed s/install//`

Удалим raspi-config, он нам больше не понадобится:
# aptitude purge raspi-config

Удалим поддержку звука. На сервере ни к чему
# aptitude purge `sudo dpkg --get-selections | grep -v "deinstall" | grep sound | sed s/install//`

После иксов всё еще много мусора. Его тоже неплохо бы удалить:
# aptitude purge `sudo dpkg --get-selections | grep -v "deinstall" | grep x11 | sed s/install//`

Оставим только последнюю версию GCC:
# dpkg --get-selections | grep gcc\-
gcc-4.5-base:armhf                              install
gcc-4.6                                         install
gcc-4.6-base:armhf                              install
gcc-4.7-base:armhf                              install
gcc-4.8-base:armhf                              install

Последняя установленная версия 4.8, остальные три удаляем:
# aptitude purge gcc-4.5-base:armhf gcc-4.6-base:armhf gcc-4.7-base:armhf

Теперь можно удалить пакеты, которые вам не нужны. Список минимально необходимых пакетов для Debian приведен ниже. Также, при попытке удаления некоторых пакетов вы получите предупреждение от системы. Такие пакеты также удалять не стоит.

Вот что вышло у меня:
# aptitude purge xkb-data xdg-utils xarchiver weston epiphany-browser-data gconf-service gconf2-common gnome-desktop3-data gnome-icon-theme gnome-icon-theme-symbolic gnome-themes-standard gnome-themes-standard-data libgconf-2-4 libgnome-keyring-common libgnome-keyring0 libsoup-gnome2.4-1 libxml2 gconf-service gconf2-common aspell bash-completion binutils bzip2 ca-certificates cgroup-bin cifs-utils console-setup-linux cups-common dbus debian-reference-common desktop-file-utils dictionaries-common ed fbset file fontconfig fontconfig-config fonts-freefont-ttf freepats fuse gdbserver gir1.2-glib-2.0 gsfonts gstreamer1.0-libav gstreamer1.0-omx gstreamer1.0-plugins-base hicolor-icon-theme init-system-helpers initramfs-tools isc-dhcp-client isc-dhcp-common java-common keyboard-configuration klibc-utils krb5-locales less logrotate lua5.1 luajit make makedev menu menu-xdg mime-support module-init-tools  ncdu ncurses-term  netsurf-common nfs-common openresolv parted pciutils perl pkg-config psmisc qdbus strace tasksel usbutils v4l-utils xz-utils zenity-common libaspell15 libasyncns0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-gobject0 libavcodec53 libavutil51 libavutil52 libbluetooth3 libbluray1 libboost-iostreams1.46.1 libboost-iostreams1.48.0 libboost-iostreams1.49.0 libboost-iostreams1.50.0 libbsd0 libcap2 libcdio-cdda1 libcdio-paranoia1 libcdio13 libchromaprint0 libck-connector0 libcups2 libcurl3 libcwidget3 libdatrie1 libdca0 libdirac-encoder0 libdrm-nouveau1a libdrm-radeon1 libdrm2 libdvdnav4 libdvdread4 libedit2 libenca0 libept1.4.12 libexif12 libexpat1 libfaad2 libffi5 libfftw3-3 libflac8 libfontenc1 libfreetype6 libfribidi0 libfuse2 libgcrypt11 libgdbm3 libgdk-pixbuf2.0-common libgif4 libgirepository-1.0-1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 libglib2.0-data libgme0 libgnutls26 libgomp1 libgpg-error0 libgphoto2-port0 libgpm2 libgraphite2-2.0.0 libgsm1 libgssapi-krb5-2 libgtk2.0-common libgtop2-7 libgtop2-common libharfbuzz-icu0 libharfbuzz0a libhunspell-1.3-0 libid3tag0 libident libidn11 libilmbase6 libiw30 libjack-jackd2-0 libjasper1 libjavascriptcoregtk-3.0-0 libjbig0 libjpeg8 libjson0 libk5crypto3 libkate1 libkeyutils1 libklibc libkrb5-3 libkrb5support0 liblcms1 libldap-2.4-2 libltdl7  libmagic1 libmimic0 libmms0 libmng1 libmodplug1 libmp3lame0 libmpg123-0 libnettle4 libnewt0.52 libnih-dbus1 libnih1 libnspr4 libnss3 libofa0 libogg0 libopenal-data libopenal1 libopencv-calib3d2.4 libopencv-core2.4 libopencv-features2d2.4 libopencv-flann2.4 libopencv-imgproc2.4 libopencv-ml2.4 libopencv-photo2.4 libopencv-stitching2.4 libopencv-ts2.4 libopencv-video2.4 libopenexr6 libopenjpeg2 libopts25 liborc-0.4-0 libp11-kit0 libpipeline1 libpixman-1-0 librtmp0 libsamplerate0 libsasl2-2 libsasl2-modules libsbc1 libschroedinger-1.0-0 libsecret-1-0 libsecret-common libwebkitgtk-3.0-common libwebp2 libwildmidi-config libwildmidi1 libwnck-3-common libx264-123 libxapian22 libxau6 libxcb-glx0 libxcb-render0 libxcb-shm0 libxcb-util0 libxcb1 libxdmcp6 libxfont1 libxvidcore4 libpng12-0 libpolkit-agent-1-0 libpolkit-backend-1-0 libpolkit-gobject-1-0 libqt4-xml libqtcore4 libqtdbus4 libsigc++-1.2-5c2 libsigc++-2.0-0c2a libsndfile1 libspandsp2 libspeex1 libsqlite3-0 libsrtp0 libswscale2 libsysfs2 libsystemd-login0 libtasn1-3 libthai-data libthai0 libtheora0 libtiff4 libva1 libvorbis0a libvorbisenc2 libvpx1

Выполнением верхней команды мы также удалили SSH сервер, вместо него мы поставим более легковесный dropbear:
# apt-get install dropbear

Очищаем оставшиеся файлы конфигураций:
# apt-get purge `dpkg-query -f '${Package} ${Status}\n' -W | grep config-files$ | cut -d" " -f1`

Очистим кеши:
# apt-get clean

Удалим каталог с образцом видео (/opt/vc/src/hello_pi/hello_video/test.h264):
# rm -rf /opt

Удалим игрушки, которые лежат в домашней директории:
# rm -rf /home/pi/python_games

Далее очищаем логи:
# cd /var/log/
# rm `find . -type f`

На этом всё. Проверяем свободное место:
# df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
rootfs             7,0G         430M  6,3G            7% /
/dev/root          7,0G         430M  6,3G            7% /
devtmpfs           484M            0  484M            0% /dev
tmpfs               98M         204K   98M            1% /run
tmpfs              5,0M            0  5,0M            0% /run/lock
tmpfs              195M            0  195M            0% /run/shm
/dev/mmcblk0p5      60M          19M   42M           32% /boot

Итого у нас осталось занятым 330 МБ (100 МБ занимает swap) на флешке и 42 МБ занятой оперативки. Можно считать, что наш Raspbian Mini готов.

Debian - Рекомендуемые пакеты
adduser
apt
apt-utils
aptitude
bsdmainutils
cpio
cron
debian-archive-keyring
debian-backports-keyring
debian-multimedia-keyring
dhcp3-client
dhcp3-common
dmidecode
ed
gnupg
gpgv
groff-base
ifupdown
info
install-info
iproute
iptables

base-files
base-passwd
bash
bsdutils
coreutils
debconf
debconf-i18n
debianutils
diffutils
dpkg
e2fslibs
e2fsprogs
findutils
gcc-4.2-base
gcc-4.3-base
gcc-4.4-base
grep
gzip
hostname
initscripts
libacl1
libattr1
libblkid1
libc-bin
libc6
libcomerr2
libgcc1
liblocale-gettext-perl
libncurses5
libpam-modules
libpam-runtime
libpam0g
libselinux1
libsepol1
libslang2
libss2
libstdc++6
libtext-charwidth-perl
libtext-iconv-perl
libtext-wrapi18n-perl
libunwind7
libuuid1
libvolume-id1
login
lsb-base
lzma
mawk
mount
ncurses-base
ncurses-bin
passwd
perl-base
procps
sed
sensible-utils
sysv-rc
sysvinit
sysvinit-utils
tar
tzdata
util-linux
zlib1g


Спасибо статье от cnxsoft

Комментарии (12)


  1. GreyCat
    07.08.2015 15:18
    +8

    230 МБ — минимальная система? Вы шутите?..

    Зачем идти по пути удаления из overbloated general-purpose системы, когда можно просто хотя бы тем же debootstrap'ом собрать именно то, что нужно?

    Да и в целом там у вас еще масса всего ненужного осталось. Локали, я так понял, вы не удаляли. База таймзон у вас опять же полная. Документация вся как лежала, так и лежит. Базы dpkg и apt (да и сами dpkg и apt) у вас остались установлены. Для чего в «минимальной» системе gcc — я так и не понял (особенно если вы сносите все -dev пакеты, без которых ничего им не соберете).

    Далее очищаем логи:
    # cd /var/log/
    # rm `find. -type f`

    Это вообще из категории «вредные советы». На живой системе (особенно если это новый Debian с systemd) может привести к чему угодно, он улетевшего в космос journald, до невозможности логина в систему из-за нерабочего *tempter.


    1. Vooon
      07.08.2015 18:23

      А не знаете ли вы как дебутстрапу передать настройку прокси (apt-cacher-ng)?
      Я сейчас использую сборку убунты для второй малинки, но было бы удобно собирать свой образ.


      1. GreyCat
        08.08.2015 12:54

        А в чем проблемы-то? Самое простое — тот же apt-cacher-ng имеет вариант кэширования, когда репозитарий становится доступен по новому URL типа 127.0.0.1:3142/имя.хоста.миррора/debian/ — и debootstrap'у можно его и передавать в третьем параметре, т.е. что-то типа:

        debootstrap sid путь-к-root http://127.0.0.1:3142/ftp.ru.debian.org/debian/


    1. kAIST
      09.08.2015 01:00

      Тем более, насколько я помню, там /var/log вообще на tmpfs, так что смысла удалять нет.


  1. agrrh
    07.08.2015 16:05
    +2

    На сайте Raspberry Pi предлагается образ для обучения, а не для постройки роутера/торрентокачалки. Там априори много «лишнего».

    В качестве альтернативы могу предложить стандартный установщик Raspbian, который позволяет пользователю самому выбрать необходимый набор пакетов:

    https://www.raspbian.org/RaspbianInstaller


    1. Wedmer
      07.08.2015 17:00
      +1

      Вот здесь слегка поактуальнее будет.


  1. mariner
    07.08.2015 16:42
    +1

    альтернативно, можно поставить арч и получить из коробки минимальную систему.


  1. Dima_Sharihin
    07.08.2015 17:46

    А для продвинутых я бы посоветовал воспользоваться утилитой по типу buildroot или других, а не пытаться урезать ОС общего назначения


    1. Wedmer
      07.08.2015 18:53

      Тогда уж OpenWrt.


  1. CRImier
    08.08.2015 00:52
    +3

    Raspbian-ua-netinst и не морочьте себе голову. Установщик чистой системы, вроде даже вверху уже посоветовали. Работает отлично, можно указать релиз Дебиана для установки, указать дополнительные пакеты, дать скрипты, поставить логины/пароли, затем воткнуть СД-карточку в Распберри и наслаждаться видом бегущей командной строки, а через несколько часов получить рабочую систему.


  1. slonopotamus
    08.08.2015 12:06
    +1

    Вот поэтому мне нравится генту — в ней установлено именно то, что я в явном виде заказал, без лишнего мусора.


  1. esinev
    08.08.2015 22:11

    Можно наоборот, поставить ubuntu-core и сделать минимальные настройки для сервера:
    1. Скачать vинимальный образ ubuntu 14.04 mirror.yandex.ru/ubuntu-cdimage/ubuntu-core/releases/14.04.2/release/ubuntu-core-14.04.2-core-armhf.tar.gz (60MB)
    2. Создать на sd-карте разделы /boot и /
    3. Разархивировать корневую систему
    4. Добавить загрузчик и ядро

    Занимает около 20 секунд скопировать все на sd-карту.
    Мы так создаем образы для odroid-xu3(4) и cubox.