Atualização:
Parece que há duas outras maneiras mais simples de fazer isso no Ubuntu (pelo menos nas versões posteriores):
-
sudo apt-get install overlayroot
seguido pela definição deoverlayroot="tmpfs:swap=1,recurse=0"
in/etc/overlayroot.local.conf
. -
sudo apt-get install fsprotect
seguido pela passagem defsprotect
como parâmetro do kernel
Eu finalmente descobri como fazer isso com o sistema de arquivos raiz (no Ubuntu 11.04)!
As etapas para tornar um sistema inicializável são simples. Eu usei este guia em combinação com este guia e um monte de pesquisas na web para descobrir como fazê-lo funcionar corretamente, sem erros.
Resumo:
-
Executar:
sudo apt-get install fsprotect apparmor-utils
-
Salve isso em
/etc/initramfs-tools/scripts/init-bottom/__rootaufs
. Eu não acho que o nome realmente importa, mas o começo__
pode ser usado para fins de ordenação, então se você mudar o nome, você pode querer manter os sublinhados. (Esta é uma cópia do este arquivo .)#!/bin/sh -e case $1 in prereqs) exit 0 ;; esac for x in $(cat /proc/cmdline); do case $x in root=*) ROOTNAME=${x#root=} ;; aufs=*) UNION=${x#aufs=} case $UNION in LABEL=*) UNION="/dev/disk/by-label/${UNION#LABEL=}" ;; UUID=*) UNION="/dev/disk/by-uuid/${UNION#UUID=}" ;; esac ;; esac done if [ -z "$UNION" ]; then exit 0 fi # make the mount points on the init root file system mkdir /aufs /ro /rw # mount read-write file system if [ "$UNION" = "tmpfs" ]; then mount -t tmpfs rw /rw -o noatime,mode=0755 else mount $UNION /rw -o noatime fi # move real root out of the way mount --move ${rootmnt} /ro mount -t aufs aufs /aufs -o noatime,dirs=/rw:/ro=ro # test for mount points on union file system [ -d /aufs/ro ] || mkdir /aufs/ro [ -d /aufs/rw ] || mkdir /aufs/rw mount --move /ro /aufs/ro mount --move /rw /aufs/rw # strip fstab off of root partition grep -v $ROOTNAME /aufs/ro/etc/fstab > /aufs/etc/fstab mount --move /aufs /root exit 0
-
Em
/etc/default/grub
, localize a linha que começa comGRUB_CMDLINE_LINUX_DEFAULT
e, dentro das cotações a seguir, adicione o parâmetroaufs=tmpfs
.Bônus: Se você precisar desabilitar o redirecionamento temporariamente, simplesmente remova este argumento da lista de parâmetros do kernel. Você provavelmente pode fazer isso segurando a tecla Shift quando o sistema estiver inicializando, para mostrar o menu do GRUB; em seguida, pressione e para editar os parâmetros e apenas apague o parâmetro
aufs=...
da lista. -
Anexe estas linhas a
/etc/sysctl.conf
. ( Aviso : risco de segurança potencial.)kernel.yama.protected_nonaccess_hardlinks = 0 kernel.yama.protected_sticky_symlinks = 0
-
Execute estas linhas:
sudo aa-complain dhclient3 sudo chmod 0755 /etc/initramfs-tools/scripts/init-bottom/__rootaufs sudo update-initramfs -k all -u sudo update-grub
Se tudo correr bem, quando você reiniciar, você estará fazendo isso em um sistema de arquivos temporário. A parte da RAM estará em /rw
e a imagem do disco estará em /ro
, mas é claro que será somente leitura.
No entanto, se você inicializou em um sistema temporário, mas precisa fazer uma alteração permanente, é possível montar novamente o sistema de arquivos /ro
dizendo
sudo mount -o remount,rw /ro
para torná-lo gravável e, em seguida, você pode fazer as modificações necessárias para esse diretório.