従来のサポート設定なしでLinuxを手動でインストールする方法のガイドを探しています。
ソースからターゲットメディアにファイルをコピーし、
必要な最小設定を構成するだけです。
(教育用です。)
- パーティションの作成とターゲットドライブのフォーマット...
- ソースドライブからターゲットドライブに最小限のファイルをコピーする(手動コピー、ファイル別)
- 必要な最小フォルダーを作成する(/root /bin /etc ...)
- 最小構成ファイル(/etc/???)を作成します。
- 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
誰かを待っています。
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/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と4つのライブラリ/依存関係(ldd
上記を参照)をフォーマットされたパーティションにコピーすると、次のsdXY
3つの起動パラメータが得られます。
gentoo
root=/dev/sdXY
init=/bin/bash
initrd=gentoo.igz
最小限の実験のために、3)と4)(ディレクトリと設定ファイル)は二次的なものです。そんなに小さくなければ、新しいディストリビューションを作るのと同じだろう…。
MBRとUEFIに加えて、多くの可能性があるため、最大の困難はブートプロセス自体にあります。 init/systemd とログインがありません。パーティション化も可能ですが、いずれにせよ、これはインストールとは別のものです(または論理的に分離する必要があります)。実際、/bin/bashを除いてすべてを省略しました。
これは、「クラシックサポートの設定」を避け、最初からコンパイルを除くすべての操作を実行する方法です。
誰かが提案したので、私はGentooを例として使用しています。上部にリストされている.isoファイルはサイズだけが異なるだけで非常に似ています。示されているように、バイナリの1つからバイナリを抽出できます。