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)
- creando particiones y formateando la unidad de destino...
- copiar los archivos mínimos desde una fuente a la unidad de destino (copia manual, archivo por archivo)
- creando las carpetas mínimas requeridas (/root /bin /etc...)
- creando archivos de configuración mínimos (/etc/???)
- 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 MNTPOINT
primero, 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.EFI
et al.
imagen.squashfs
Esto es Squashfs filesystem
segúnextensióny file
mando. 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 xz
y cpio -t
puedes 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.cfg
en 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 ldd
arriba) en una partición formateada, sdXY
obtienes 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.