GRUBでオペレーティングシステムエントリの名前を変更するにはどうすればよいですか?

GRUBでオペレーティングシステムエントリの名前を変更するにはどうすればよいですか?

私自身のオペレーティングシステムを作りたいので、Archisoを使って配布用のイメージを作りました。本当に素敵ですね!

ディストリビューションのインストールを自動化するのに役立つPythonファイルを作成しました。

ファイルをchrootに転送した後にGRUBをインストールする部分もあります。動作しますが、再起動してインストールされたシステムに「Arch Linux」と表示されます。

Pythonで作成したインストールファイルで、次の行を使用してos.system("COMMAND LINUX")Linuxコマンドを実行します。

Arch Linuxの名前を展開名に変更するには、コマンドまたはファイルを変更する必要がありますか? GRUBをインストールしたら、インストール自動化ファイルに入れて再起動し、「マイオペレーティングシステム」がすでに表示されるようにします。

PS:/boot/grub/grub.cfgのメニュー項目を変更するように言わないでください。メニュー項目は自動的に上書きされるためです。

答え1

/boot/grub/grub.cfgどのように生成されるのかご存知ですか?

ファイルを生成する/etc/grub.d/ために実行されるスクリプトのセットがあります。通常、指定されたスクリプトは現在のディストリビューションの実際の起動メニュー項目を生成するのに役立ちます。複数のオペレーティングシステムがインストールされている場合は、他のオペレーティングシステムのメニュー項目を生成するスクリプトです。grub2-mkconfiggrub.cfg10_linux30_os-prober

少なくとも Debian では、10_linuxディストリビューション名はディストリビューションの変数セットから取得されます。ただし、そこでもコマンドを使用して値を間接的に設定します。GRUB_DISTRIBUTOR/etc/default/grublsb_release -i -s

したがってGRUB_DISTRIBUTOR、変数の設定方法を変更するだけで、/etc/default/grubGRUBに表示される展開名をすばやく変更できます。

しかし、実際のコマンドを確認したいかもしれません/usr/bin/lsb_release(Archにもコマンドがあるとします)。これはPythonスクリプトであることがわかりました。このスクリプトが展開名を取得する方法を変更して「My OS」という結果を出力すると、GRUBに表示される名前は自動的に変更されますが、コマンドはlsb_releaseさまざまな場所で使用できるため、スクリプトを変更すると次のことができます。 GRUBメニューだけでなく、さまざまな場所から「My OS」の名前を取得します。

ただし、パッケージ管理システムがこのコマンドで提供する情報も使用している場合は、オペレーティングシステムのlsb_release名前を変更すると、カスタムディストリビューションでArchパッケージを使用するのが難しくなる可能性があります。ディストリビューションが「Archの事前カスタマイズバージョン」になりたい場合は、おそらくそうしません。

関連情報