Shino's Bar

走れパピーPuppy Linux core logo

Go to走れパピー 目次
2024-07-28 冒頭部分を改稿

Windows、Ubuntuとパピーのトリプルブート

インストーラー LICKを用いての Windowsとパピーリナックスとのデュアルブートを紹介した。 ここに Ubuntu系Linuxをインストールすると、Ubuntuと Windowsは起動メニューで選べるが、Puppy Linuxはメニューに出てこない。

何らかの方法で Puppy Linuxを起動し、Grub2Config を実行することで Windows、Ubuntu、パピーのトリプルブートができる。 起動がUEFIではなく(legacy)BIOSならば Grub4DosCondigでも良い。→ Grub2かGrub2Dosか(ブログ記事) なお、FrugalPupなどに同梱されている FrugalPupはWindowsやUbuntuなどとのマルチブートをサポートしていないので使ってはならない。

すでに Ubuntu系Linuxを運用しており、その起動メニューを温存したい場合、Grub2起動メニューの設定にパピーを加えることで Puppy Linuxも起動できる。

Ubuntu下でパピーをインストールするスクリプト pupisoinstall for Ubuntu がある。 これでうまくいかない場合、以下の手作業を試みる。

custom.cfg を書き換える

この記事は Lubutuや Linux Mintなど Ubuntu系のLinuxならそのまま通用する。複数のUbuntu系Linuxをインストールしている場合は、最後にインストールした Linuxがインストールされているパーティションの /boot/grub/custom.cfg を操作対象とする。

日本語フォーラムの Zstepさんの記事は custom.cfgを用いる方法で、Ubuntu側の更新の影響を受けないメリットがある。 Ubuntuがインストールされたドライブに /boot/grub/custom.cfg ファイルを作成あるいは追記するというものだが、そこにどう記述するのか、いくつかの例を紹介する。

作業はパピー上で行うのが便利だが、パピーが起動できず Ubuntu上で作業する場合は、とりあえず自分のホームディレクトリ上に custom.cfg を作成し、その後に仮想端末上で次のコマンドを実行する。

sudo cp custom.cfg /boot/grub

その1: パーティション番号を指定

Grub2ではディスクの番号は「0」から始まり、パーティションの番号は「1」から始まるので注意が必要。たとえば sda1は (hd0,1)となる。 次は sdb2 にパピーがインストールされている場合。

menuentry "Biopup64 8.0"{
		set root='(hd1,2)'
		linux /bionicpup64/vmlinuz psubdir=buonicpup64 pmedia=atahd pfix=fsck
		initrd /bionicpup64/initrd.gz
	}

その2: searchコマンドを使う

パーティション指定の混乱を避けるために、次のような書き方がある。

menuentry "Biopup64 8.0"{
		search --set=root --no-floppy --file /bionicpup64/vmlinuz
		linux /bionicpup64/vmlinuz psubdir=buonicpup64 pmedia=atahd pfix=fsck
		initrd /bionicpup64/initrd.gz
	}

その3: frugal installerでインストール

frugalinstaller を使ってパピーをフルーガルインストールすると、/root/my-documents/tmp/menuentry.txt というファイルが残される。 その中の grub2 用の記述がそっくり custom.cfg に使える。次は pmediaと pfixを追記したもの。

menuentry "bionicpup64 8.0"{
	search --no-floppy --fs-uuid --set=root 5c5be8b1-e46c-4975-ae90-942af2d57fb6
	linux /bionicpup64/vmlinuz psubdir=bionicpup64 pmedia=atahd pfix=fsck
	initrd /bionicpup64/initrd.gz
}

上記で使われている UUID は、Linux上なら次のようなコマンドで知ることができる。

 blkid /dev/sdb2
('sdb2'はパピーがインストールされているパーティション。)
上記コマンドで UUIDを知れば、Frugalinstallerを用いなくても、この書式は使える。

その4: LICKでインストールした場合

LICKを用いて Windowsパーティション上にとパピーをインストールした場合、 Windowsの C: に相当するパーティション、たとえば sda3 上に lickgrub.cfg が作られている。その中のパピーに関する記述をそっくり custom.cfg に流用できる。

## start section bionic64-simple-r1
menuentry 'bionic64 simple r1' {
search --set=root --file /bionic64-simple-r1/vmlinuz
linux /bionic64-simple-r1/vmlinuz pfix=fsck dofsck psubdir=bionic64-simple-r1
initrd /bionic64-simple-r1/initrd.gz
}

menuentry 'bionic64 simple r1 (no save file)' {
search --set=root --file /bionic64-simple-r1/vmlinuz
linux /bionic64-simple-r1/vmlinuz pfix=ram savefile=none psubdir=bionic64-simple-r1
initrd /bionic64-simple-r1/initrd.gz
}
## end section bionic64-simple-r1

その5: LICKへ chainload

BIOSがUEFIの場合、LICKのローダーにバトンタッチする方法がある。Ubuntu上の /boot/grub/grub.cfg にある、Windowsを起動するメニューを参考にした。 custom.cfgに次のように書いておく。

menuentry 'Puppy Linux(LICK)' {
   insmod chain
	insmod part_gpt
	insmod fat
	set root='hd0,gpt1'
	chainloader /EFI/LICK/shim.efi
}

以上