Пытаюсь водрузить в качестве раутера на ITX с тремя сетевыми ( ага :) ) оптимизированную генту.
Поскольку sys-apps/baselayout-2.0.1 с openrc работали некорректно, приходится работать с baselayout-1. Из-за того, что в качестве диска на этой системе используется CF, волей-неволей приходится использовать ro root.
Система разделена на два раздела, используется ext2 на каждом. Ядро собрано таким образом, что можно грузить эту машинку как по сети, так и с диска, т.о. вся отладка может делаться на сборочном хосте, проверяться по сети, а потом, простым копированием, всё необходимое переносится на CF.
На данный момент система загружается без проблем, при необходимости подхватывает динамический адрес по dhcp или из собственного файла конфигурации /etc/net.xxx. Сделано это было вот как:
1. ядро пропатчено и собрано с поддержкой unionfs;
2. отредактирован скрипт /sbin/rc:
# Setup initial $PATH just in case
PATH="/bin:/sbin:/usr/bin:/usr/sbin:${PATH}"
# добавлено 4 строки
/bin/mount -n -t tmpfs tmpfs /unionfs/etc -o size=1M
/bin/mount -n -t unionfs unionfs /etc -o dirs=/unionfs/etc=rw:/etc=ro
echo "tmpfs /unionfs/etc tmpfs rw,size=1M 0 0" >> /etc/mtab
echo "unionfs /etc unionfs rw,dirs=/unionfs/etc=rw:/etc=ro 0 0" >> /etc/mtab
3. создан каталог /unionfs/ с нужными подкаталогами, например, /unionfs/etc/ и т.д.;
4. В /etc/fstab прописано:
tmpfs /unionfs/var/lock tmpfs size=20K,nodev,nosuid,noexec 0 0
tmpfs /unionfs/var/log tmpfs size=3M,nodev,nosuid,noexec 0 0
tmpfs /unionfs/var/run tmpfs size=200K,nodev,nosuid,noexec 0 0
tmpfs /unionfs/var/spool tmpfs size=10M,nodev,nosuid,noexec 0 0
tmpfs /unionfs/var/lib tmpfs size=1M,nodev,nosuid,noexec 0 0
tmpfs /unionfs/tmp tmpfs size=1M,nodev,nosuid,noexec 0 0
unionfs /var/lock unionfs dirs=/unionfs/var/lock=rw:/var/lock=ro 0 0
unionfs /var/log unionfs dirs=/unionfs/var/log=rw:/var/log=ro 0 0
unionfs /var/run unionfs dirs=/unionfs/var/run=rw:/var/run=ro 0 0
unionfs /var/spool unionfs dirs=/unionfs/var/spool=rw:/var/spool=ro 0 0
unionfs /var/lib unionfs dirs=/unionfs/var/lib=rw:/var/lib=ro 0 0
unionfs /tmp unionfs dirs=/unionfs/tmp=rw:/tmp=ro 0 0
5. ну и, наконец, в том же fstab корневой раздел переключен на ro (для варианта загрузки по nfs, nfs-сервер раздаёт корень в режиме ro):
/dev/sda2 / ext2 noatime,ro 0 1
Итак, загрузка проходит прекрасно, нужные сервисы стартуют и вроде бы всё ок. Но при перезагрузке/выключении компьютера, после выдачи сообщения
процесс завершения работы прекращается, появляется сообщение, что переключен уровень init и что
Could not kill process <номер>: No such process
. Поначалу я подумал, что этот процесс можно отловить с помощью
и последущим сравнением номера бажащего процесса с теми, что были запущены, но нет, таковых в списке не оказалось. Видимо, это процесс порождается при завершении работы. Конкретнее сказать нельзя. Ну а поскольку процесс завершения работы останавливается, то это несколько напрягает: получается, что удалённо этот компьютер не перезагрузить, только с кнопки или с помощью Magic keys.
Кто-нибудь боролся с такой задачей? Есть ли возможность где-нибудь посмотреть уже изобретённые велосипеды? Поиск, к сожалению, не показал ничего на эту тему, народ, наоборот, в основном не понимает, отчего у него система в ro (обычно из-за ошибок). А мне нужно именно вот так.