Como eu construo um sistema Linux somente de leitura que apenas grava na RAM?

5

Esta é a minha estrutura de partições atual:

Filesystem            1K-blocks      Used Available Use% Mounted on
tmpfs                   127428         0    127428   0% /lib/init/rw
udev                    122976        96    122880   1% /dev
tmpfs                   127428         0    127428   0% /dev/shm
rootfs                  127428     11008    116420   9% /
/dev/sda1              1827534    933144    800029  54% /ro
rootfs.tmpfs            127428     11008    116420   9% /rw
rootfs.aufs             127428     11008    116420   9% /

Eu quero configurar outro sistema exatamente assim, ou pelo menos fechar. O outro disco se parece com isso, como mostrado por df :

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda3               678551    594050     84501  88% /
tmpfs                   124004         0    124004   0% /lib/init/rw
udev                     10240       520      9720   6% /dev
tmpfs                   124004         4    124000   1% /dev/shm
/dev/hda1                19515     15940      3575  82% /boot
/dev/hda2               253807      7002    246805   3% /var/log_compressed
tmpfs                   124004         0    124004   0% /tmp
tmpfs                   124004      3552    120452   3% /var/log
tmpfs                   124004         0    124004   0% /var/tmp
tmpfs                   124004        20    123984   1% /var/run
tmpfs                   124004         0    124004   0% /var/lock
tmpfs                   124004         0    124004   0% /var/spool

Eu leio muito, mas não sei como configurá-lo usando unoinfs ou initramfs.

Eu realmente aprecio a ajuda e explico que li muito e não sei como fazer isso com o unoinfs ou o initramfs.

    
por mado saif 25.02.2013 / 15:08

3 respostas

1

Eu não sei a distro de bruxa em que você está. No gentoo, estou acostumado a escrever um script de init initramfs. O Initramfs é apenas um pequeno root fs com apenas ferramentas essenciais instaladas nele para montar sua partição root e switch_root para seus rootfs reais e executar o init real para assumir.

Para um sistema básico ro root, sugiro usar o squashfs . Tem suporte de kernel de linha principal completo e faz seu sistema rápido. Para sua sobreposição de RAM, você pode usar tmpfs , também suportado pelo kernel.

Então você precisa "unificá-los" para ser um único sistema de arquivos. Eu uso aufs . Não é suportado pelo kernel da linha principal e, se não for suportado nas correções de kernel da sua distro, você precisa fazer o patch você mesmo. (Não há um único sindicato FS apoiado na linha principal)

Você provavelmente é o melhor de escrever um você mesmo. (Eu tentei dracut e genkernel, mas eles não fornecem os módulos necessários para lidar com qualquer um dos meus casos)

  • Crie um diretório (eu uso /usr/src/initramfs )
  • Faça o download do busybox estático para o diretório acima. Este é um shell estático fornecendo todos os linux_utils necessários para fsck, mount etc.

  • mkdir /usr/src/initramfs/{bin,dev,lib,mnt,sbin,tmp,etc,proc,sys} Para a estrutura base

  • Crie um script / usr / src / initramfs / init e coloque todos os comandos para montar suas partições, sistema de arquivos ro e sobreposição de rw
  • Unifique o ro e o rw com a sintaxe de montagem do aufs .
  • Não se esqueça de --move seu ponto de montagem para a raiz recém-criada e umount das coisas que você não precisa mais
  • exec switch_root /sbin/init limpa (exclui) tudo no initramfs carregado e alterna a raiz para continuar sua inicialização.
  • Se você tem algum módulo do kernel que não pode compilar no kernel, mas ainda precisa (como aufs ): copie-o para /usr/src/initramfs/lib
  • Crie um arquivo compactado com o conteúdo de /usr/src/initramfs , você pode usar gz, xz, cpio ou quantos quiser
  • Coloque o arquivo criado em seu diretório / boot e edite o grub para carregá-lo como initrd.

Para garantir que seu sistema seja inicializado com sua imagem customizada, compile seu próprio kernel também. (Realmente não é difícil): Documentação do kernel do Gentoo . No momento em que você tiver que instalar as fontes, basta substituir o comando pelo seu gerenciador de pacotes. A maioria das distribuições fornece pacotes de fontes do kernel.

Se você estiver disposto a mudar distros para fazê-lo, sugiro mudar para o Gentoo ou Arch. Eles são mais flexíveis para o "material manual" do que os outros, e ambos fornecem excelente documentação para hacká-lo em qualquer forma que você desejar.

    
por 30.09.2013 / 18:36
0

Embora possa não ser uma solução perfeita para o seu problema principal (criar um sistema Linux somente para leitura), você pode explorar usando Lethe . Você pode encontrar um guia de instalação aqui , mas a tradução automática não é ótima e eu não tenho tempo para postar uma tradução completa no momento. Embargo pecado, para resumir:

1) Instale as dependências necessárias:

sudo aptitude install aufs-modules-'uname-r' aufs-tools

2) Instale o pacote em aqui , se houver uma versão para sua distribuição.

3) Por padrão, Lethe congela todas as partições, mas você pode editar o arquivo de configuração para alterá-lo (veja o guia de configuração ao qual fiz a ligação)

4) A instalação do pacote adiciona aufs = tmpfs à sua linha de kernel em seu menu GRUB, que inicializa o sistema em um estado congelado (onde todas as alterações são descartadas na reinicialização). Para fazer alterações em seu sistema, pressione e quando vir o menu GRUB e remover essa linha ou removê-la de dentro do sistema e atualizar o GRUB.

    
por 25.02.2013 / 15:26
0

Este trecho é de /etc/initramfs-tools/scripts/init-bottom/__rootaufs :

# This is a simple overview of the steps needed to use aufs on the root file system and see the /rw and /ro  branches.
# initramfs init-botton script 
# move the root file system to aufs/unionfs readonly /ro
# root is mounted on ${rootmnt}
# create tmpfs on /rw
# create a aufs using /ro and /rw
# put some files on the tmpfs to fix mtab and fstab 
# move aufs to rootmnt to finish the init process.
# No changes to the root file system are made by this script.
#
#  Why!
#  This will allow you to use a usb flash drive and control what is written to the drive.
#  no need to rebuild the squashfs file just to add a program. 
#  boot to single user mode.  The system works the way you expect. boot aufs=tmpfs and no changes are written to the flash.
#  run ubuntu on an eeePC .

# Install 
# Install ubuntu 8.04 Hardy. Hardy has aufs installed by default
# apt-get update
# apt-get dist-upgrade
# apt-get install aufs-tools
# echo aufs >> /etc/initramfs-tools/modules
# put this file in /etc/initramfs-tools/scripts/init-bottom/rootaufs
# chmod 0755 rootaufs
# # clean up menu.lst 
# update-grub
# update-initramfs -u
# vi /boot/grub/menu.lst
# add aufs=tmpfs to the default entry. 
# do not add this line to single user mode.
# boot to single user mode in order to install software. 
# note: if your home account is on the root file system, your files are in ram and not saved.
# 
    
por 06.06.2015 / 03:34