Posso criar um ISO do Ubuntu a partir de um manifesto?

12

Esta resposta fala sobre os manifestos da ISO - um exemplo está aqui. .

É possível construir um ISO a partir de um arquivo de manifesto, ou é o arquivo de manifesto apenas dpkg --get-selections colocado em um arquivo de texto?

Relacionado, sorta:

por jrg 29.11.2011 / 03:55

1 resposta

19

O filesystem.manifest é gerado com o comando:

dpkg-query -W --showformat='${Package} ${Version}\n' > casper/filesystem.manifest

A sintaxe é, portanto, package_name version , Exemplo:

 xserver-xorg-video-nouveau  1:0.0.16+git20110411+8378443-1

O formato de dpkg --get-selections é um pouco diferente, package_name install

Exemplo

xserver-xorg-video-nouveau  install 

Assim, você pode usar o arquivo, provavelmente em mais de uma maneira,

apt-get install -y $(awk '{print }' filesystem.manifest)

Para ser honesto, depois de fazer algumas iso personalizadas ao longo dos anos, há uma curva de aprendizado sobre como isso funciona. Uma vez que você entenda algumas coisas, não é muito difícil, é apenas o conhecimento necessário é moderadamente grande e não há uma fonte única e atualizada de informações.

Você usa dois diretórios de compilação

~/custom - build directory for the iso
~/rootfs - build directory for the root file system.

custom - este diretório contém todos os arquivos que irão para o iso final. Ele contém o sistema de arquivos raiz, um kernel, um initramfs e o isolinux.

rootfs - este diretório contém o sistema de arquivos live CD e você compacta esse diretório (usando mksquashfs) e o inclui no CD. Você pode construir isso com o debootstrap (live D do zero) ou extrair o sistema de arquivos do ubuntu-desktop.iso (personalize um live CD). Veja os links do wiki do ubuntu abaixo para detalhes.

pontos-chave

1) Entenda o mksquashfs - você usa o mksquashfs para compactar o sistema de arquivos raiz em casper/filesystem.squashfs

sudo mksquashfs /home/bodhi/rootfs custom/casper/filesystem.squashfs

2) Entenda o isolinux - isso torna o iso inicializável, assim como o seu menu de CD (boot). Veja Arch Linux Wiki syslinux .

Você pode usar o grub2 como uma alternativa ao isolinux, mas você precisará entender como o grub2 funciona;). A maioria dos CDs ao vivo ainda usa o isolinux.

3) Como criar um initramfs. O initramfs é um segundo sistema de arquivos, usado para inicializar. Muitas vezes, quando você está tendo um problema (a imagem de inicialização personalizada não está funcionando, módulos do kernel não estão sendo carregados) e você não consegue entender por que está olhando seu sistema de arquivos raiz, a resposta é muito provável no initramfs.

#extract to a working_directory , I use ~/initrd
cd ~/initrd
lzma -dc -S .lz ../initrd.lz | cpio -imvd --no-absolute-filenames

# Make your edits / adjustments
# Package
cd ~/initrd
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../custom.initrd.lz

Você então move seu novo initrd.lz para o seu diretório de compilação personalizado, custom/casper/initrd.lz

4) casper. Casper, e os scripts do casper estão localizados em 3 locais, e todos os 3 podem desempenhar um papel. Eles são todos scripts bash, e em algum momento você quase certamente vai querer olhar através deles.

host - /usr/share/initramfs-tools/scripts/casper

sistema de arquivos raiz - customizado / usr / share / initramfs-tools / scripts / casper

C. no initramfs - Veja o diretório / scripts.

Veja casper do homem do Ubuntu

5) Você faz personalizações na interface do usuário / aplicativos em /usr/share , /usr/share/gnome* , por exemplo, os locais exatos variam com o lançamento, /usr/share/gnome-background-properties/ubuntu-wallpapers.xml é um clássico e bastante padronizado nas versões.

6) Se você não puder fazer personalizações em /usr/share/ , use /etc/skel , aqui /etc/skel/.bashrc é um clássico, esse arquivo é copiado para ~ / .bashrc. Você pode colocar vários arquivos confg lá, para o firefox ou gnome ou não, mas / usr / share é melhor se for possível (varia de acordo com a configuração).

7) mkisofs - você usa o mkisofs para converter seu diretório de construção para um iso

cd ~/custom
sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-12.04-custom.iso .

8) Persistência. Você pode usar persistência com muitos CDs ao vivo, incluindo o cd ubuntu-desktop e um cd customizado, isso é implementado pelo casper.

root - casper montará uma partição ou arquivo rotulado como casper-rw como uma sobreposição de vaca em /. Se você instalar um pacote ou modificar um arquivo de configuração, as alterações persistirão durante a reinicialização.

Use isso com moderação. Se você atualizar todos os pacotes, será necessário muito espaço. Eu também acho que este método é por vezes buggy.

Home - peitoril casper montar uma partição ou arquivo rotulado aas home-rw como uma sobreposição de vaca em / home.

Prefiro isso, pois os favoritos e os dados privados do Firefox serão preservados em todas as inicializações e eu acho mais confiável.

Casa persistente (mude para casper-rw para uma persistente /)

# this is a 1 Gb file, increase or decrease the count to make it larger or smaller
dd if=/dev/zero of=home-rw bs=1M count=1000

# make a file system
mkfs.ext4 home-rw
mke2fs 1.41.14 (22-Dec-2010)
home-rw is not a block special device.
Proceed anyway? (y,n) y <-- ANSWER 'y' here

#tune the file system to remove reserved blocks and label it 'home-rw'
tune2fs -m 0 -L home-rw home-rw

Coloque home-rw em / (no diretório raiz de uma partição) ou em uma unidade flash (não em um subdiretório).

Quando você inicializa o live CD, pressione a tecla F6 , eles Esc , adicione a opção persistent aos parâmetros de inicialização, na frente do '- '

quiet splash persistent --

Os scripts de inicialização do casper então localizam uma montagem automaticamente.

Veja Persistência do wiki do Ubuntu - A página wiki do ubuntu abordou apenas o casper-rw, mas o home-rw é referenciado nos scripts casper e funciona da mesma forma, apenas o nome foi alterado.

Veja Esta postagem nos fóruns do Ubuntu para ver uma captura de tela (embora com diferentes opções).

C. Você pode ativar a persistência com várias das ferramentas gráficas, unetbootin por exemplo. As ferramentas gráficas (até onde eu sei) usam casper-rw .

OK, agora que você entendeu tudo isso, essas duas páginas começarão a fazer mais sentido

Wiki do Ubuntu ao vivo do zero

O wiki do Ubuntu personaliza o CD ao vivo

Google

Você precisará do google. Você encontrará fragmentos de conselhos por toda a Internet.

Exemplo: Como alterar a tela inicial do Live CD

Debian Live

Agora que você entende tudo isso, use os scripts Debian Live . Não deixe o nome enganá-lo, esses scripts funcionam muito bem em qualquer sistema .deb, incluindo Mint e Ubuntu.

Para instalar

sudo apt-get install live-build

Existe uma interface gráfica

sudo apt-get install live-magic

Entenda que o gui da magia ao vivo pode falhar, assim como as remastersys e outros guis falham. Nesse caso, você volta para os scripts de construção ao vivo (live-magic gerará um diretório de construção).

Demora um tempo para aprender os scripts de compilação ao vivo e o layout / estrutura do diretório

Veja o Debian Live Manuel Sim, é longo, apenas trabalhe nele um iso de cada vez.

A vantagem dos scripts live-build, uma vez que você entende os componentes de um live CD, os scripts automatizam mais de 90% da build, e fazer uma mudança é uma simples edição em um arquivo de configuração (geralmente) ou um initramfs.

Demasiado longo

Se isso for muito longo para você, respire fundo, relaxe e trabalhe com a informação em uma parte de cada vez. Eu prometo que vai começar a fazer algum sentido e você vai achar que o tempo vale a pena.

Se você começar com outro conjunto de ferramentas, volte a este conjunto de ferramentas e depois de alguns iso você apreciará este conjunto de instruções;)

Minha versão customizada do 12.04, ela suporta o gma500, apenas 2d (sem 3D) (estará tornando a iso publicamente disponível para o público do gma 500 nos próximos dias).

    
por bodhi.zazen 13.04.2017 / 14:24