Как выполнить минимальную установку Linux вручную?

Как выполнить минимальную установку Linux вручную?

Я ищу руководство по ручной установке Linux...
без классической вспомогательной настройки...
просто скопировав файлы с исходного носителя на целевой...
и настроив минимально необходимые параметры.
(это в образовательных целях)

  1. создание разделов и форматирование целевого диска...
  2. копирование минимального количества файлов с исходного на целевой диск (ручное копирование, файл за файлом)
  3. создание минимально необходимых папок (/root /bin /etc ...)
  4. создание минимальных файлов конфигурации (/etc/???)
  5. выбрать и установить загрузчик для MBR... и другой для GPT/EFI

Любой современный дистрибутив, например Arch/Alpine/Kali/UBUNTU-Minimal/...

?может кто-нибудь указать мне на какой-нибудь документ/видео по этой теме

Спасибо

решение1

Вы можете начать с загрузочных образов. Вот некоторые из них с разными названиями и размерами.

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

Такой ISO-образ можно смонтировать по циклу даже без него -o loop(но с mkdir MNTPOINTуказанием каталога):

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

Эти файлы имеют важное значение:

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

Опять же: mount [-o loop] iso/gentoo.efimg img/после создания точки монтирования (dir), например "img/". Тогда вы получите:

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

Это разные вариации загрузчиков EFI. Альтернативой является использование Uefi Shell (или MBR...). Но вот BOOTX64.EFIи др.

изображение.squashfs

Это Squashfs filesystemсогласнорасширениеи fileкоманду. Так что вы (цикл) монтируете его так же, как образ iso.

Он содержит файлы для корневого раздела.

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

Это показывает, что для обычного /bin/bash также нужны некоторые библиотеки, версии и ссылки.


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

Ядро (bzImage). С Uefi вы просто копируете его в ESP. В противном случае (MBR) в какой-то каталог, а затем grub-...,


iso/isolinux/gentoo.igz

Сжатый initrd. С помощью xzи cpio -tвы можете вывести список:

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

grub/grub.cfgНа 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

После копирования bash и четырех библиотек/зависимостей (см. lddвыше) на отформатированный раздел sdXYвы получите следующие 3 аргумента загрузки:

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

Ваши пункты 3) и 4) (каталоги и файлы конфигурации) являются второстепенными, для минимального эксперимента. А если он не такой уж и минимальный, то это равносильно созданию нового дистрибутив...

Основная сложность — сам процесс загрузки, просто из-за множества возможностей, плюс MBR против UEFI. Я пропустил init/systemd и login. Разбиение на разделы тоже, но оно (или должно быть, по логике) в любом случае отделено от установки. Я пропустил все, кроме /bin/bash.


Это способ избежать «классической вспомогательной настройки» и сделать все с нуля, за исключением компиляции.

Я взял gentoo в качестве примера только потому, что это было предложено. Файлы .iso, перечисленные вверху, очень похожи, за исключением размера. Вы можете извлечь двоичные файлы из любого из них, как показано.

Связанный контент