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

젠투.efimg

다시 말하지만, mount [-o loop] iso/gentoo.efimg img/"img/"와 같이 마운트 지점(dir)을 생성한 후입니다. 그러면 다음을 얻게 됩니다:

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

image.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/젠투

]# 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.cfgiso에 있습니다 .

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

lddbash와 4개의 라이브러리/종속성( 위 참조)을 포맷된 파티션에 복사하면 sdXY다음 3개의 부팅 인수를 얻게 됩니다.

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

포인트 3)과 4)(dirs 및 config 파일)은 최소한의 실험을 위한 사소한 것입니다. 그리고 그것이 그다지 작지 않다면 새로운 배포판을 만드는 것과 같습니다.

가장 어려운 점은 부팅 프로세스 자체입니다. MBR과 UEFI의 가능성이 많기 때문입니다. 나는 init/systemd와 로그인을 생략했습니다. 파티셔닝도 가능하지만 어쨌든 설치에서 분리됩니다(또는 논리적으로 분리되어야 합니다). 사실 /bin/bash를 제외한 모든 것을 생략했습니다.


이는 "전통적인 지원 설정"을 피하고 컴파일을 제외한 모든 작업을 처음부터 수행하는 방법입니다.

나는 그것이 제안되었기 때문에 gentoo를 예로 들었습니다. 상단에 나열된 .iso 파일은 크기를 제외하면 매우 유사합니다. 표시된 대로 그 중 하나에서 바이너리를 추출할 수 있습니다.

관련 정보