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.)
- Partitionen erstellen und das Ziellaufwerk formatieren …
- Kopieren der Dateien (mindestens eine Datei) von einem Quell- auf ein Ziellaufwerk (manuelles Kopieren, Datei für Datei)
- Erstellen der mindestens erforderlichen Ordner (/root /bin /etc ...)
- Erstellen von Mindestkonfigurationsdateien (/etc/???)
- 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 MNTPOINT
einem 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.EFI
et al.
Bild.squashfs
Dies ist eine Squashfs filesystem
gemäßVerlängerungund file
Befehl. 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 xz
und cpio -t
kö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 ldd
oben) 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.