従来のアシスト セットアップを使用せずに、
ソースからターゲット メディアにファイルをコピーし
、必要最小限の設定を行うだけで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
et al.があります。
イメージ.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 つからバイナリを抽出できます。