Grub2config 開発ノート

以上のフォーラム以外の開発者の話題

モデレータ: YoN, nyu

アバター
ルビー
記事: 1282
登録日時: 14/11/24(月) 12:12

Re: Grub2config 開発ノート

投稿記事 by ルビー »

シノバー さんが書きました: 24/08/30(金) 00:35 本家フォーラムで話題になっていて、 grub2 のバグらしいです。grub 2.0.6 にバージョンアップすると治るんだとか。
実験で本家の記事を参考に、grub2config-2.0.2でGRUB2化したPC(LIFEBOOK A577/R)にDebianのGRUB 2.06をコピーしてみたら、GRUB2のUSBメモリを挿しっぱなしでも、PC内蔵ハードディスクのgrub.cfgで起動するようになりました。

具体的には、debian-12.7.0-amd64-netinst.iso の /EFI/boot/grubx64.efi をPC内蔵ハードディスクの /sda1/EFI/Puppy/grubx64.efi と差し替えました。
起動したGRUBのバージョンは GNU GRUB version 2.06-13+deb12u1 となっています。
USBメモリはさわらずに、GRUB 2.03のままです。

なお、GRUBなどのブート関係は簡単な知識しか持っていないので、実験だけで、PCのGRUBはまた元に戻しました(^^;。
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

grub2config-2.0.9.pet

投稿記事 by シノバー »

v2.0.8からはマイナーアップデートとなります。現在 v2.0.8 を使っていて不都合がなければアップデートの必要はありません。

grub2config-2.0.9.pet
http://shinobar.server-on.net/puppy/opt/
↑からダウンロードください。
日本語化は同じ所から grub2config_NLS-2.0.8_ja.pet
また frugalinstaller-2.2.7.pet と frugalinstaller_NLS-2.2.7-ja.pet も同じ所から。

変更点:
・一部のパピーで関数 guess_fstype がインストールされていない場合があるので、これを使用しないようにしました。(他の方法で代用できる。)
・BookwormPupでGUIを gtkdialogに代えて gtk2dialogに変更しました。レイアウトや見た目にとくに変化はないようです。
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

grub-2.06

投稿記事 by シノバー »

本家フォーラムで gyrogさんが grub2 version 2.06 へのアップデーターを昨年の12月に公開
(https://forum.puppylinux.com/viewtopic.php?t=10028)しているのですが、
これを用いた FrugalPup(v42?)はいまだ公開されていません。
UEFI Secure boot への対応ができていないということなのでしょう。
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

直接に .iso から起動

投稿記事 by シノバー »

DVDやUSBメモリに .iso ファイルを展開してライブ。メディアを作るのではなく、HDDやUSBメモリに置いた .iso ファイルを grub2 などのブートローダーがループマウントして直接起動する方法があるそうです。昔試したら、できる場合とできない場合があった。
本家フォーラム gyrogさんの記事→ https://forum.puppylinux.com/viewtopic. ... 080#p22080
によると、最近のパピーはたいていこれに対応しているとのこと。
grub2config の次のバージョンでサポートしようかな...。
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

MBRにGrub2をインストールする

投稿記事 by シノバー »

UEFIでなくLegacy BIOSの場合、MBRにはGrub4Dosをインストールし、Grub4Dosが起動して Grub2 にチェインする。これが grub2configのやり方。FrugalPupを踏襲したもの。
この場合、起動パーティションが vfatまたはNTFS、また ext2やext3は問題がない。起動パーティションが ext4(64bit)のときは、為す術が無い。
ext4(64bit)の場合だけ Grub4Dosに代えて Extlinuxを使おうか?
しかしなぜチェインが必要か? grub2を直接MBRに書き込めば良いのではないか。その方法が分からなかった。
もちろん、grub-installコマンドでそれはできる。そのために複雑なGrub2の全体をインストールしなければならないので、簡素を旨とするパピーにそれはやりたくない。

次の方法を考えました。じっさいの作業は VirtualBox上で。
1. BionicPup32をライブ起動、あるいはHDDにインストール。
2. grub2_2.0.2 をインストール。Puppyパッケージマネージャーから。
3. USBメモリを差し第一パーティションをマウント。/mnt/sdb1 となった。
4. 次のコマンドを実行。
grub-install --no-floppy --modules="ext2 fat ntfs part_msdos" --boot-directory=/mnt/sdb1/boot.pup --target=i386-pc /dev/sdb
/mnt/sdb1 に boot.pup フォルダができた。boot.pup/grub/grub2.cfg とフォントを加えて tar.xz にアーカイブ。
5. /dev/sdb のMBRに grub2のIPLがあるはずなので、それを取り出す。
dd count=100 if=/dev/sdb of=grub2.mbr
ブロックサイズはデフォルトの512byteなので、count=100というのは 50kB。さきのコマンドで作られた core.imgは 32kBなので、たぶんMBR先頭50kB内にIPLは収まっているだろうという推測(希望?)

こうして取り出した grub2.mbr の先頭部分にはパーティション・テーブルが含まれているので、これを別のディスクにそのまま書き込むと、そのディスクのパーティション・テーブルを壊してしまう。
ターゲット、ここでは /dev/sdx への書き込みはひと手間かかる。
dd bs=446 if=grub2.mbr of=/dev/sdx ;# IPLの先頭部分
(残り64byteがパーティション・テーブル)
dd bs=1 count=2 seek=510 skip=510 if=grub2.mbr of=/dev/sdx ;#先頭セクタ512byte中最後の2byteで、IPL有効の印 (0xAA55)
dd seek=1 skip=1 if=grub2.mbr of=/dev/sdx ;# IPLの続き
ネット上で見つけた参考記事→ https://www.hazymoon.jp/OpenBSD/arch/i3 ... cture.html

grb2config-2.1 で実装しました→ https://sakurapup.com/forum1/viewtopic. ... 312#p29312
最後に編集したユーザー シノバー [ 24/09/15(日) 15:46 ], 累計 2 回
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 直接に .iso から起動

投稿記事 by シノバー »

シノバー さんが書きました: 24/09/13(金) 21:30 DVDやUSBメモリに .iso ファイルを展開してライブ。メディアを作るのではなく、HDDやUSBメモリに置いた .iso ファイルを grub2 などのブートローダーがループマウントして直接起動する方法があるそうです。昔試したら、できる場合とできない場合があった。
本家フォーラム gyrogさんの記事→ https://forum.puppylinux.com/viewtopic. ... 080#p22080
によると、最近のパピーはたいていこれに対応しているとのこと。
BookwormPu@64 で試すとうまく起動します。
しかし F95-Ce の.iso では、SFSファイルを読んでくれません。
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 直接に .iso から起動

投稿記事 by シノバー »

シノバー さんが書きました: 24/09/13(金) 21:30 DVDやUSBメモリに .iso ファイルを展開してライブ。メディアを作るのではなく、HDDやUSBメモリに置いた .iso ファイルを grub2 などのブートローダーがループマウントして直接起動する方法があるそうです。昔試したら、できる場合とできない場合があった。
本家フォーラム gyrogさんの記事→ https://forum.puppylinux.com/viewtopic. ... 080#p22080
によると、最近のパピーはたいていこれに対応しているとのこと。
BookwormPu@64 で試すとうまく起動します。

コード: 全て選択

menuentry 'BookwormPup (sda3/*.iso)' --class puppylinux{
	set isofile="/BookwormPup64_10.0.7.iso"
	search --no-floppy --set --fs-uuid 0c17217e-4723-4d30-a4bf-3da1636875b8
	loopback loop $isofile
	set root=(loop)
    linux (loop)/vmlinuz pmedia=cd iso_dev=$pup_id find_iso=$isofile pfix=fsck
    initrd (loop)/initrd.gz
}
しかし F95-Ce の.iso では、SFSファイルを読んでくれません。
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
thinkpadnerd
記事: 2483
登録日時: 15/10/25(日) 14:00

Re: Grub2config 開発ノート

投稿記事 by thinkpadnerd »

シノバー さんが書きました: 24/09/15(日) 02:24 F95-Ce の.iso では、SFSファイルを読んでくれません。
gyrog さんの記事からの引用です。
1. There hae been changes to the Puppy 'init' script in woof-ce to support grub2 booting iso's, it is not surprising that older Puppies that do not have these changes, will not work in this environment.
F96-CE は今年になって公式 puppy に採択されたものの、リリースは 2023年なので、この件に関する woof-CE の仕様変更前だったと思われます。
CD に焼かずに usb メモリにインストールする、あるいは、LICK で HDD にインストールする方法があるので、iso ファイルから直接起動するというオプションは、個人的には必要ないと考えます。

F96-CE でも、iso の中身を単純に usb にコピーして起動するという裏技(?)があります。(当フォーラムでも既出)
ThinkPad X121e (Bionic32 / Bionic64 / F96-CE)
CPU AMD C-50 1.0GHz, RAM 4GB
Arrows Tab Q508/SE (BW32 / BW64 / Easy Daedalus)
CPU intel Atom x7-z8700 2.4GHz, RAM 4GB
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

Re:.isoファイルからの起動

投稿記事 by シノバー »

thinkpadnerd さん、情報ありがとう。
.isoファイルからの起動、そんなに便利かなあと、私も思ってます。
まあ、今回の更新ではパスします。
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

Grub2config-2.1

投稿記事 by シノバー »

いちおうメジャー・アップデートになります。
grub2config-2.1.pet
http://shinobar.server-on.net/puppy/opt ... ig-2.1.pet
日本語化は grub2config_NLS-2.1_ja.pet
http://shinobar.server-on.net/puppy/opt ... 2.1_ja.pet

また frugalinstaller-2.2.7.pet と frugalinstaller_NLS-2.2.7-ja.pet も
↓からダウンロードください。
http://shinobar.server-on.net/puppy/opt/

メジャー・アップデートたる所以は、MBR起動においてこれまで grub4dosからgrub2へチェインしていたのを、MBRにインストールした grub2から直接起動するようにしたことです。これにより、従来サポート外だった第1パーティションが ext4フォーマットの場合にも対応しました。
参考記事→ https://sakurapup.com/forum1/viewtopic. ... 304#p29304

v2,0,1 では省略した pdrv 起動オプションを復活させました。ntfs上に BookwormPupをインストールした場合、このオプションが必須になるようです。
その他のパピーで必須ではないですが、指定パーティション決め打ちで他を探すことがないので、起動が少し速くなるようです。
最後に編集したユーザー シノバー [ 24/09/15(日) 21:25 ], 累計 1 回
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
thinkpadnerd
記事: 2483
登録日時: 15/10/25(日) 14:00

Re: Grub2config 開発ノート

投稿記事 by thinkpadnerd »

シノバー さんが書きました: 24/09/15(日) 15:16 いちおうメジャー・アップデートになります。
grub2config-2.1.pet
F96-CE にてテストしました。
usb メモリを ext4 64bit でフォーマットし、boot フラグを付けました。
frugalinstaller にて F96-CE をコピー、続いてブートローダのインストール。

マシンは ThinkPad X121e -- UEFI 対応ですが、出荷時のOSは Windows 7 で legacy BIOS モードがデフォルトです。

無事に起動しました。
ThinkPad X121e (Bionic32 / Bionic64 / F96-CE)
CPU AMD C-50 1.0GHz, RAM 4GB
Arrows Tab Q508/SE (BW32 / BW64 / Easy Daedalus)
CPU intel Atom x7-z8700 2.4GHz, RAM 4GB
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

Re: Grub2config 開発ノート

投稿記事 by シノバー »

thinkpadnerd さんが書きました: 24/09/15(日) 18:07マシンは ThinkPad X121e -- UEFI 対応ですが、出荷時のOSは Windows 7 で legacy BIOS モードがデフォルトです。
そうですが、そこがちょうど過渡期。
早速のテストありがとうございました。
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
アバター
シノバー
記事: 3328
登録日時: 09/03/21(土) 00:05
連絡する:

Grub2config-2.1 のバグ

投稿記事 by シノバー »

早速のバグ :oops:
生成された「RAM mode」の menuentry が間違えてます。
生成された grub.cfg を編集してください。
「RAM mode」の menuentry の中「pfix=fsck」→「pfix=ram」に修正ください。
走れパピー(新ブログ)https://shinobar.net/linux/blog
New Downloads https://shinobar.net/puppy/
アバター
ルビー
記事: 1282
登録日時: 14/11/24(月) 12:12

Re: Grub2config 開発ノート

投稿記事 by ルビー »

UEFI Windows PC(OptiPlex 3070)で、Fossapup64 9.6をUSBメモリからRAMモード起動して、grub2config-2.1 + frugalinstaller-2.2.7 のテストを行いました。
テスト用のUSBメモリをパーティションテーブルがmsdosで、ext4 + vfatの2つのパーティションを作り、sdb1(ext4)にパピーとブートローダー(MBR)をインストールしました。
PCをLegacy起動して、Fossapup64の起動が成功しました。

起動は成功したのですが、pupsaveの保存に問題が起こりました。
問題の原因がどこにあるのか不明で、grub2configとは無関係かもしれませんが、いちおう現象を書きます。
pupsaveはフォルダ形式です。
パピーをシャットダウンすると、通常ならばpupsaveの書き出しが始まりますが、ブルースクリーンになり中央に下記のダイアログが表示されます。

Press ENTER key to save session...
Or, press TAB then ENTER to not save session...
Or, wait 8 seconds to shutdown without saving
session...
  <SAVE>  <NO SAVE>

「SAVE」を押せば手動でpupsaveが保存されますが、押さないとそのまま保存されずに終わります。
初回起動時のpupsave保存はできたのですが、2回目以降でこうなりました。
試しにと、パーティションテーブルをgptで実験してみましたが、MBR、UEFI共にブートローダーがインストールできませんでした。
ext4パーティションなので、UEFIが入らないのは当然として、MBRも入らないのは仕様なのですよね。

普段はUEFI起動で使っているので、Legacy起動はあまりやりませんが、Legacy起動ではBionicpup64がシャットダウンしても正常終了できずpupsaveも保存されません。
Fossapup64は正常終了して、pupsaveも保存されます。

もう1つは、grub2configの文字表示で文字化けのような箇所がありました。
ブートローダーのインストール先で「nブート・パーティション:sdb1(ext4)」となり、行頭に「n」が入ります。

最後にもう1つですが、パピーをUSBメモリからRAMモード起動すると、USBメモリはマウントされない状態で起動します。
この状態でfrugalinstallerを動かすと、USBメモリの中のパピーのファイル検出には成功しますが、ファイルのコピー時にエラーが出て止まりました。
frugalinstaller.logには下記のメッセージが書かれていました。

cp: cannot stat '/mnt/sda1/fossapup64-9.6/vmlinuz': No such file or directory

USBメモリをマウントしてからfrugalinstallerを起動すれば、正常に動作しました。
以前もCD起動やハードディスクのRAMモード起動で、frugalinstallerのテストをしたときは、ソースデバイスがアンマウント状態でもファイルコピーに問題はなかったと記憶しているのですが、私の勘違いでしたらすみません。
添付ファイルを見るにはパーミッションが必要です
thinkpadnerd
記事: 2483
登録日時: 15/10/25(日) 14:00

Re: Grub2config 開発ノート

投稿記事 by thinkpadnerd »

ルビー さんが書きました: 24/09/18(水) 17:40 Press ENTER key to save session...
Or, press TAB then ENTER to not save session...
Or, wait 8 seconds to shutdown without saving
session...
  <SAVE>  <NO SAVE>

「SAVE」を押せば手動でpupsaveが保存されますが、押さないとそのまま保存されずに終わります。
usb メモリからの起動ですよね?
現行の puppy では、このようになると思います。

イベントマネージャで「保存間隔」を設定すれば、終了時に自動保存されます。
ThinkPad X121e (Bionic32 / Bionic64 / F96-CE)
CPU AMD C-50 1.0GHz, RAM 4GB
Arrows Tab Q508/SE (BW32 / BW64 / Easy Daedalus)
CPU intel Atom x7-z8700 2.4GHz, RAM 4GB
返信する