Wie führe ich eine minimale Installation von Linux manuell durch?

Wie führe ich eine minimale Installation von Linux manuell durch?

Ich suche nach einer Anleitung zur manuellen Installation von Linux ...
ohne die klassische unterstützte Installation ...
nur durch Kopieren von Dateien von einem Quell- auf ein Zielmedium ...
und Konfigurieren der erforderlichen Mindesteinstellungen.
(Dies dient Bildungszwecken.)

  1. Partitionen erstellen und das Ziellaufwerk formatieren …
  2. Kopieren der Dateien (mindestens eine Datei) von einem Quell- auf ein Ziellaufwerk (manuelles Kopieren, Datei für Datei)
  3. Erstellen der mindestens erforderlichen Ordner (/root /bin /etc ...)
  4. Erstellen von Mindestkonfigurationsdateien (/etc/???)
  5. Wählen und installieren Sie einen Bootloader für MBR ... und einen anderen für GPT/EFI

Jede moderne Distribution wie Arch/Alpine/Kali/UBUNTU-Minimal/...

?Kann mir jemand ein Dokument/Video zu diesem Thema zeigen?

Danke

Antwort1

Sie können mit den Boot-Images beginnen. Hier sind einige mit unterschiedlichen Namen und Größen.

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

Ein solches ISO-Image kann auch ohne -o loop(aber mit mkdir MNTPOINTeinem ersten Verzeichnis) per Loop gemountet werden:

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

Diese Dateien sind unbedingt erforderlich:

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

Nochmals: mount [-o loop] iso/gentoo.efimg img/nach dem Erstellen eines Einhängepunkts (Verzeichnis), z. B. „img/“. Dann erhalten Sie:

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

Dies sind verschiedene Varianten von EFI-Bootloadern. Eine Alternative ist die Verwendung von Uefi Shell (oder MBR...). Aber hier sind BOOTX64.EFIet al.

Bild.squashfs

Dies ist eine Squashfs filesystemgemäßVerlängerungund fileBefehl. Sie mounten es also (schleifenweise) wie ein ISO-Image.

Es enthält die Dateien für die Root-Partition.

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

Dies zeigt, dass ein normales /bin/bash auch einige Bibliotheken sowie Versionen und Links benötigt.


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

Der Kernel (bzImage). Bei Uefi einfach auf den ESP kopieren. Ansonsten (MBR) in irgendein Verzeichnis und dann grub-...,


iso/isolinux/gentoo.igz

Das komprimierte initrd. Mit xzund cpio -tkönnen Sie auflisten:

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

Auf der ISO befindet sich eins grub/grub.cfg.

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

Nachdem Sie Bash und die vier Bibliotheken/Abhängigkeiten (siehe lddoben) auf eine formatierte Partition kopiert haben sdXY, erhalten Sie diese drei Boot-Argumente:

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

Ihre Punkte 3) und 4) (Verzeichnisse und Konfigurationsdateien) sind geringfügig und dienen einem minimalen Experiment. Und wenn es nicht so minimal ist, läuft es darauf hinaus, eine neue Distribution zu erstellen ...

Die größte Schwierigkeit ist der Bootvorgang selbst, einfach wegen der vielen Möglichkeiten, plus MBR vs. UEFI. Ich habe Init/Systemd und Login weggelassen. Auch die Partitionierung, aber die ist (oder sollte logischerweise) ohnehin von der Installation getrennt sein. Ich habe eigentlich alles weggelassen, außer /bin/bash.


Auf diese Weise können Sie die „klassische unterstützte Einrichtung“ vermeiden und alles außer dem Kompilieren von Grund auf neu erledigen.

Ich habe Gentoo als Beispiel genommen, nur weil es vorgeschlagen wurde. Die oben aufgeführten ISO-Dateien sind bis auf die Größe sehr ähnlich. Sie können die Binärdateien wie gezeigt aus jeder dieser Dateien extrahieren.

verwandte Informationen