LINUX.ORG.RU

Взять Armbian и вырезать всё лишнее. Работа на одноплатнике.

 ,


0

1

Хочется взять armbian последний-предпоследний, загрузиться с него и на живой системе начать вырезать всякое ненужно. Цель - получить минималистичный дистр, наиболее быстро грузящийся с SD карты на одноплатнике, который ничем особо не занят, кроме отправки бекапов куда-то раз в час и кое-каких фоток с камер видеонаблюдения. Девайс стоит на полке в прихожей, его не трогают.

Хочется оставить:

  • systemd как главный запускатор, возможность запускать примерно какие угодно свои скомпиленные под ARM бинарники написанные на сишечке путём написания привычных .service файлов

  • wi-fi дрова и в принципе «всю сеть», но без NetworkManager, а через /etc/interfaces + /etc/wpa_supplicant + ifup + ifdown - такой стиль работы с сетью

  • ядро менять наверное не надо, наоборот будут иногда подливаться свежие, так что поддержка всяких там вебкамер, файловых систем и прочего треша и угара пусть будет.

  • родной apt, чтобы могло что-то установить-проапдейтить из armbian репы родной

Вопрос в том, каких главных жирных злодеев с системе надо убивать и резать первым делом? Что там работает, что является объективно лютым ненужно с точки рения простых челябинских сибирских мужиков? Всякие там менеджеры-архиваторы логов, сообщатели о краше приложений, apparmor-подобная опердень да? Что ещё?

Или какой алгоритм действий - смотрим на каждый стартанувший сервис, гуглим нафиг он нужен и режем его? Но это мне не даст возможности сократить объём хлама на SD карте, который там может лежать просто втихаря незамеченным.

Я тут нашёл контрольную плату от биткоино-майнера какого-то, там на борту zynq-ПЛИС+ARM два ядра, 512мб ОЗУ и флешка какая-то. Включил, оно заргузилось, по dhcp адрес получило, root по ssh пустило - а там

BusyBox v1.25.1 () built-in shell (ash)

   ____            _ _              ______   _____
  |  _ \          (_|_)            /  __  \ /  ___|
  | |_) |_ __ __ _ _ _ _ __  ___  |  |  |  |  (__
  |  _ <| '__/ _` | | | '_ \/ __| |  |  |  |\__  \
  | |_) | | | (_| | | | | | \__ \ |  |__|  |___)  |
  |____/|_|  \__,_|_|_|_| |_|___/  \______/______/  by Braiins for Slush Pool
 -----------------------------------------------------------------------------
  2022-02-18-0-b63a6c87-22.02-plus
 -----------------------------------------------------------------------------

Круто это конечно, но до такой степени я armbian врядли урежу да и apt там никакого нет встроенного, вдруг захочется какие-то либы поставить libusb-dev например…

Корень у меня вообще как RO монтируется и я живу в рамдиске, чтобы SD-карту не портить, да и как-то привычнее и стабильнее - мало ли какая тварь в корне что испортит, а так хоть гарантия что ты сегодня загрузился с того же, с чем в чера.



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

Вопрос в том, каких главных жирных злодеев

ответ:

systemd как главный запускатор

и получится OpenBSD :)

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

systemd может и жирен, но речь о жироте другого порядка - весь этот ARMbian занял то-ли 450, то-ли 600 мегабайт на флешке. Это явно какой-то жирокомбинат, я точно использую только 5% от этой фигни.

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

Это явно какой-то жирокомбинат, я точно использую только 5% от этой фигни.

Тогда debootstrap ?

sanyo1234
()

Хочется...

Разрешаю.

sparkie ★★★★★
()

Опытным путём отрезай, я так на одноплатнике андроид 4.4 в полтора раза усушил.

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

Кстати, интересно было бы увидеть сравнение системы на systemd и на классических, или альтернативных системах. Вот как бы сейчас, на современных системах всё выглядело?

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

Кстати, интересно было бы увидеть сравнение системы на systemd и на классических, или альтернативных системах. Вот как бы сейчас, на современных системах всё выглядело?

Всё было бы так же. Это не та область, которая на что-то там влияет.

lesopilorama
() автор топика

Ну так собери свой armbian c тем что нужно, sysvinit’ом и без avahi.

Ну и всякие другие дистрибутивы есть, которые намного проще минимизировать. Я вот slackware-arm на OrangePi Zero ставил, например. Очень компактненько вышло.

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

Самое компактное с большим набором архитектур - это IMHO Alpine Linux.

sanyo1234
()
Ответ на: комментарий от lesopilorama

Мегабайт 100 где-то. Сеть, баш с перлом, опач и всякая мелочь.

Stanson ★★★★★
()

Заходи не со стороны того, что занимает место, а что запущено.

У systemd довольно богатый (но не очень интуитиный) инструментарий по отслеживанию того какие службы на сколько времени задерживают загрузку и т.п. что вообще запускается и от чего зависит. И в отличии от «просто посомтреть в top» ты увидешь о что при старте просто запустилось и отработало. (в лапше обычного init это понять нереально, имел опыт с такой задачей ещё до systemd)

И сокращаешь список используемых юнитов, удаляя предоставляющие их пакеты. Главное записывай куда-нибкдь список удалённого, потом будет проще потворить\автоматизировать создание такого образа.

После очередной итерации самым тюжёлым становится процесс инициализиации ядра. RO корень всё это переживает вполне нормально. Я делал подобное, только начинал не с armbian, а с какой-то ubuntu с вручную добавленным последним ядром от armbian и для моих целей (устройство без wifi) - список получился примерно такой

unneeded rpi firware services: # rpi firmware is managed by another partition
  file.absent:
    - names:
      - /lib/systemd/system/timers.target.wants/systemd-tmpfiles-clean.timer
      - /etc/systemd/system/basic.target.requires/rpi-set-sysconf.service
      - /etc/systemd/system/rpi-set-sysconf.service
      - /etc/systemd/system/rpi-reconfigure-raspi-firmware.service
      - /etc/systemd/system/sysinit.target.requires/rpi-reconfigure-raspi-firmware.service
      - /etc/systemd/system/multi-user.target.requires/rpi-reconfigure-raspi-firmware.service
      - /etc/systemd/system/multi-user.target.wants/networking.service
      - /etc/fstab

unneeded service groups:
  file.absent:
    - names:
      - /etc/systemd/system/timers.target.wants
      - /etc/systemd/system/sysinit.target.wants

unneeded packages:
  pkg.purged:
    - pkgs:
      - systemd-timesyncd
      - wpasupplicant
      - linux-image-arm64
      - raspi-firmware
      - initramfs-tools-core
      - cron
      - cron-daemon-common
      - lightdm
      - apparmor
      - dbus-user-session
      - libpam-systemd

autoremove unused packages:
  module.run:
    - pkg.autoremove:
      - purge: True

unneeded logs: # rpi firmware is managed by another partition
  file.absent:
    - names:
      - /var/log/alternatives.log
      - /var/log/bootstrap.log
      - /var/log/dpkg.log

unneded log-cache dir:
  file.directory:
    - clean: True
    - names:
      - /var/log/apt
      - /var/cache/apt/archives


/etc/fstab:
  file.managed:
    - contents: ''

/usr/lib/modules:
  file.directory

/etc/systemd/network/ether-dhcp.network:
  file.managed:
    - source: salt://ether-dhcp.network

GPFault ★★★
()

Я бы посмотрел в сторону Archlinux for ARM. Или buildroot.

Slavik763
()
Ответ на: комментарий от GPFault

В общем, сегодня полтора часа занимался этим делом, что-то выпиливал. Под нож пошли gcc-12, python3 и прочее там всякое такое, нах не нужное, NetworkManager (перешёл на ifupdown), потом читал dmesg оказалось systemd графику запускать пытается несколько секунд, а мониторов-то нет. Потом ещё дефолтный таргет на multiuser поставил с graphics. Завтра продолжу читать systemd и смотреть кто сколько секунд пожрал и его прибивать, графика пока не побеждена.

Ну и за совет спасибо этот, подумаю.

В корне всё ещё чего-то лежит на гигабайт. /usr/include что-ли потереть нахрен…

lesopilorama
() автор топика
Последнее исправление: lesopilorama (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.