¿Cómo hacer una instalación mínima de Linux manualmente?

¿Cómo hacer una instalación mínima de Linux manualmente?

Estoy buscando una guía sobre cómo instalar Linux manualmente...
sin la configuración asistida clásica...
simplemente copiando archivos desde un origen a un medio de destino...
y configurando los ajustes mínimos requeridos.
(esto es para fines educativos)

  1. creando particiones y formateando la unidad de destino...
  2. copiar los archivos mínimos desde una fuente a la unidad de destino (copia manual, archivo por archivo)
  3. creando las carpetas mínimas requeridas (/root /bin /etc...)
  4. creando archivos de configuración mínimos (/etc/???)
  5. seleccionar e instalar un gestor de arranque para MBR... y otro para GPT/EFI

Cualquier distribución moderna como Arch/Alpine/Kali/UBUNTU-Minimal/...

¿Alguien puede señalarme algún documento/vídeo sobre este tema?

Gracias

Respuesta1

Puedes comenzar con las imágenes de arranque. A continuación te mostramos algunos con diferentes nombres y tamaños.

]# 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

Una imagen ISO de este tipo se puede montar en bucle, incluso sin -o loop(pero mkdir MNTPOINTprimero, es decir, con un directorio):

]# 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

Estos archivos son esenciales:

]# 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

Nuevamente: mount [-o loop] iso/gentoo.efimg img/después de crear un punto de montaje (dir), por ejemplo, "img/". Entonces obtienes:

]# 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 son diferentes variaciones de los cargadores de arranque EFI. Una alternativa es utilizar Uefi Shell (o MBR...). Pero aquí están BOOTX64.EFIet al.

imagen.squashfs

Esto es Squashfs filesystemsegúnextensióny filemando. Entonces lo montas (en bucle) como una imagen iso.

Contiene los archivos para la partición raíz.

]# 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

Esto muestra que un /bin/bash normal también necesita algunas bibliotecas, versiones y enlaces.


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

El núcleo (bzImage). Con Uefi, simplemente lo copias al ESP. De lo contrario (MBR) a algún directorio y luego grub-...,


iso/isolinux/gentoo.igz

El initrd comprimido. Con xzy cpio -tpuedes enumerar:

]# 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
...

Hay una grub/grub.cfgen la 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

Después de copiar bash y las cuatro bibliotecas/dependencias (ver lddarriba) en una partición formateada, sdXYobtienes estos 3 argumentos de arranque:

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

Sus puntos 3) y 4) (directorios y archivos de configuración) son menores, para un experimento mínimo. Y si no es tan mínimo, equivale a crear una nueva distro...

La principal dificultad es el proceso de arranque en sí, simplemente por las muchas posibilidades, además de MBR frente a UEFI. Dejé de lado un init/systemd e inicio de sesión. La partición también, pero eso está (o debería estar, lógicamente) separado de la instalación de todos modos. De hecho, omití todo, excepto /bin/bash.


Esta es una forma de evitar la "configuración asistida clásica" y de hacer todo desde cero excepto compilar.

Tomé gentoo como ejemplo sólo porque me lo sugirieron. Los archivos .iso enumerados en la parte superior son muy similares, excepto el tamaño. Puede extraer los binarios de cualquiera de ellos, como se muestra.

información relacionada