Я хочу настроить Ubuntu 16.04 как live CD. Это отлично работало в Ubuntu 12.04, но с 16.04 возникли проблемы. Службы зависают, CRON не работает, X не работает, я даже не могу войти в оболочку. Так что я думаю, что 16.04 нуждается в некоторой модификации. Если я монтирую корневой диск как чтение/запись, все работает как надо. Так что сама ОС в порядке.
Чтобы Ubuntu загружалась в режиме только для чтения, я заменяю параметр ядра «rw» на «ro» и использую скрипт в initramfs:
/etc/initramfs-tools/scripts/init-bottom/ro_root
#!/bin/sh
PREREQ=''
prereqs() {
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
ro_mount_point="${rootmnt%/}.ro"
rw_mount_point="${rootmnt%/}.rw"
# Create mount points for the read-only and read/write layers:
mkdir "${ro_mount_point}" "${rw_mount_point}"
# Move the already-mounted root filesystem to the ro mount point:
mount --move "${rootmnt}" "${ro_mount_point}"
# Mount the read/write filesystem:
mount -t tmpfs root.rw "${rw_mount_point}"
# Mount the union:
mount -t aufs -o "dirs=${rw_mount_point}=rw:${ro_mount_point}=ro" root.union "${rootmnt}"
# Correct the permissions of /:
chmod 755 "${rootmnt}"
# Make sure the individual ro and rw mounts are accessible from within the root
# once the union is assumed as /. This makes it possible to access the
# component filesystems individually.
mkdir "${rootmnt}/ro" "${rootmnt}/rw"
mount --bind "${ro_mount_point}" "${rootmnt}/ro"
mount --bind "${rw_mount_point}" "${rootmnt}/rw"
# ro_root end
Как правильно настроить Ubuntu 16.04 с корневым диском ro и файловой системой rw?
решение1
Используйте стандартный пакет Ubuntu "overlayroot". В Ubuntu 16.04 этот пакет устанавливается автоматически. Вам просто нужно включить его, отредактировав /etc/overlayroot.conf и добавив следующую настройку:
overlayroot="tmpfs"
Перезагрузите систему Ubuntu 16.04, и все готово. Возможно, вы захотите добавить запись загрузки ядра в конфигурацию grub, чтобы упростить временное отключение корневой файловой системы только для чтения для патчей и т. д. Это можно сделать, добавив запись grub, которая передает аргумент ядра следующим образом:
overlayroot=disabled
Подробнее см. здесь:https://spin.atomicobject.com/2015/03/10/protecting-ubuntu-root-filesystem/