Como fazer uma instalação mínima do Linux manualmente?

Como fazer uma instalação mínima do Linux manualmente?

Estou procurando um guia sobre como instalar manualmente o Linux...
sem a configuração assistida clássica...
apenas copiando arquivos de uma mídia de origem para uma mídia de destino...
e definindo as configurações mínimas necessárias.
(isso é para fins educacionais)

  1. criando partições e formatando a unidade de destino...
  2. copiar os arquivos mínimos de uma unidade de origem para a unidade de destino (cópia manual, arquivo por arquivo)
  3. criando pastas mínimas necessárias (/root /bin /etc ...)
  4. criando arquivos de configuração mínimos (/etc/???)
  5. selecione e instale um bootloader para MBR... e outro para GPT/EFI

Qualquer distro moderna como Arch/Alpine/Kali/UBUNTU-Minimal/...

?alguém pode me indicar algum documento/vídeo sobre esse assunto

Obrigado

Responder1

Você pode começar com as imagens de inicialização. Aqui estão alguns com nomes e tamanhos diferentes.

]# ls *.iso -dsh
607M OL-x86_64-boot-uek.iso
603M archlinux-2019.01.01-x86_64.iso
258M install-gentoo_minimal.iso
2.6G slackware64-14.2-install-dvd.iso
882M ubuntu-18.10-live-server-amd64.iso

Essa imagem ISO pode ser montada em loop, mesmo sem -o loop(mas mkdir MNTPOINTprimeiro, ou seja, um diretório):

]# mount install-gentoo_minimal.iso iso
mount: /root/sda1/LINUX/iso: WARNING: device write-protected, mounted read-only.

]# ls iso
README.txt  boot  gentoo.efimg  grub  image.squashfs  isolinux  livecd

Esses arquivos são essenciais:

]# ls -lh iso/isolinux/gentoo* iso/gentoo.efimg iso/image.squashfs 
-rw-r--r-- 1 root root 6.4M Jan  9  2019 iso/gentoo.efimg
-rw-r--r-- 1 root root 236M Jan  9  2019 iso/image.squashfs
-rw-r--r-- 1 root root 3.8M Jan  9  2019 iso/isolinux/gentoo
-rw-r--r-- 1 root root 5.1M Jan  9  2019 iso/isolinux/gentoo.igz

gentoo.efimg

Novamente: mount [-o loop] iso/gentoo.efimg img/depois de criar um ponto de montagem (dir), por exemplo, "img/". Então você obtém:

]# file img/EFI/BOOT/*
img/EFI/BOOT/BOOTIA32.EFI: PE32 executable (EFI application) Intel 80386 (stripped to external PDB), for MS Windows
img/EFI/BOOT/BOOTX64.EFI:  PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows
img/EFI/BOOT/grubia32.efi: PE32 executable (EFI application) Intel 80386 (stripped to external PDB), for MS Windows
img/EFI/BOOT/grubx64.efi:  PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows
img/EFI/BOOT/mmia32.efi:   PE32 executable (EFI application) Intel 80386 (stripped to external PDB), for MS Windows
img/EFI/BOOT/mmx64.efi:    PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows

Estas são diferentes variações de bootloaders EFI. Uma alternativa é usar Uefi Shell (ou MBR...). Mas aqui estão BOOTX64.EFIet al.

imagem.squashfs

Isto é de Squashfs filesystemacordo comextensãoe filecomando. Então você (loop) monta-o como uma imagem iso.

Ele contém os arquivos da partição raiz.

]# ldd sq/bin/bash
        linux-vdso.so.1 (0x00007fffe97ef000)
        libreadline.so.7 => not found
        libc.so.6 => /usr/lib/libc.so.6 (0x00007f0d4e221000)
        /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f0d4e6c5000)
]# ./sq/bin/bash
./sq/bin/bash: error while loading shared libraries: libreadline.so.7: cannot open shared object file: No such file or directory

Isso mostra que um /bin/bash normal também precisa de algumas bibliotecas, versões e links.


iso/isolinux/gentoo

]# file iso/isolinux/gentoo
iso/isolinux/gentoo: Linux kernel x86 boot executable bzImage, version 4.14.83-gentoo (root@catalyst) #1 SMP Wed Jan 9 01:58:22 UTC 2019, RO-rootFS, swap_dev 0x3, Normal VGA

O kernel (bzImage). Com o Uefi, basta copiar para o ESP. Caso contrário (MBR) para algum diretório e depois grub-...,


iso/isolinux/gentoo.igz

O initrd compactado. Com xze cpio -tvocê pode listar:

]# xz -cd iso/isolinux/gentoo.igz | cpio -t lib/modu\* 
lib/modules
lib/modules/4.14.83-gentoo
lib/modules/4.14.83-gentoo/modules.order
lib/modules/4.14.83-gentoo/modules.symbols
...

Há um grub/grub.cfgno iso.

menuentry 'Boot LiveCD (kernel: gentoo)' --class gnu-linux --class os {
    linux /isolinux/gentoo root=/dev/ram0 init=/linuxrc  dokeymap looptype=squashfs loop=/image.squashfs
    initrd /isolinux/gentoo.igz

Depois de copiar o bash e as quatro bibliotecas/dependências (veja lddacima) para uma partição formatada, sdXYvocê obtém estes 3 argumentos de inicialização:

gentoo 
root=/dev/sdXY 
init=/bin/bash
initrd=gentoo.igz

Seus pontos 3) e 4) (dirs e arquivos de configuração) são menores, para um experimento mínimo. E se não for tão mínimo, equivale a criar uma nova distro...

A principal dificuldade é o próprio processo de inicialização, simplesmente pelas muitas possibilidades, além de MBR vs. UEFI. Deixei de fora um init/systemd e login. Particionamento também, mas isso é (ou deveria ser, logicamente) separado da instalação de qualquer maneira. Na verdade, deixei tudo de fora, exceto /bin/bash.


Esta é uma forma de evitar a "configuração assistida clássica" e de fazer tudo do zero, exceto compilar.

Tomei o gentoo como exemplo só porque foi sugerido. Os arquivos .iso listados no topo são muito semelhantes, exceto o tamanho. Você pode extrair os binários de qualquer um deles, conforme mostrado.

informação relacionada