私はDebianを理解しようとしています「ハードディスクから起動」導入手引き。
手順は以下のとおりです。インストーラー付きのkernel image
、ramdisk initrd
、 をISO
ハードドライブにコピーし、カーネルとramdiskを起動するようにGRUBを設定しますが、カーネルがルートをそこに移動できるように、ルートファイルシステムがどこにあるか(ISOにあるはずです)をGRUBに伝える必要があります。しかし、Debian 提供の GRUB 設定ハードドライブ全体をルートファイルシステムとして指定しているようですが、その中の ISO ファイルは指定していないようです。
GRUB1:
title New Install
root (hd0,0)
kernel /boot/newinstall/vmlinuz
initrd /boot/newinstall/initrd.gz
GRUB2:
menuentry 'New Install' {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
linux /boot/newinstall/vmlinuz
initrd /boot/newinstall/initrd.gz
}
なぜそれが機能するのでしょうか? GRUB は、ハードディスク全体ではなく、ISO ファイルをルートファイルシステムとしてハードディスクにマウントするほど賢いのでしょうか? それとも、dd
ISO の内容をハードディスクに直接マウントする必要があるのでしょうか? Debian はこの点について曖昧です。
答え1
frostshutz のコメントからコピー:
initrd.gz (initramfs) には、busybox ユーザーランドと、その目的のために書かれた Debian スクリプトが含まれています。GRUB2 は ISO を直接ループマウントすることもサポートしていますが、通常は ISO 自体からカーネル/initrd を取得するだけであり、それが再度ロードされると、カーネル/initrd によって ISO が検出され、ループマウントされる必要があります。