ルート権限を必要とせずにsyslinux / extlinuxをディスクイメージファイルにインストールする方法


13

自作のLinuxディストリビューションを構築しましたが、ブートローダーのインストールを除き、完全なディスクイメージファイルを非ルートユーザーとして作成できます。syslinux(実際にはextlinux)を使用しています。インストールするには、ブートパーティションをループバックマウントする必要があります。これには、root / sudo特権が必要です。コマンドはメイクファイルから実行され、変数名はそれらを置き換えるものを明確に示す必要があります。

sudo losetup -o $(BOOT_FS_PARTITION_OFFSET) $(LOOP_DEVICE) $(IMAGE_FILE_NAME)
sudo mount $(LOOP_DEVICE) $(LOOP_MOUNT_POINT)
sudo $(EXTLINUX) -S $(DISK_SECTORS) -H $(DISK_HEADS) -i $(LOOP_MOUNT_POINT)
sudo umount $(LOOP_MOUNT_POINT)
sudo losetup -d $(LOOP_DEVICE)

root権限を必要とせずにsyslinuxまたはextlinuxをディスクイメージファイルに書き込む方法はありますか?


rootなしでこれらのコマンドをすべて実行できるかどうか疑問に思っていますか?それともextlinuxコマンドだけですか?
BenjiWiebe

@BenjiWiebe別の方法があれば、どんなコマンドも必要ですが、私が理解しているように、extlinuxを実行するにはマウントされたファイルシステムが必要です。

回答:


8

これは可能ですsyslinux

syslinux ~/floppy.ima

syslinuxインストーラは、アンマウントしたファイルシステム上で実行するための十分な魔法が含まれています。(実際には、それを行うように設計されています。)extlinuxインストーラーは、マウントされたファイルシステム上で実行されることを期待しています。

extlinuxインストーラーを、ファイルをコピーする部分(まれではある存在するように見えますが、それらを直接統合することもできますが)をコピーする部分と、ブートセクターをインストールする部分に分割することはほぼ確実に可能です(私はこれを一緒にまとめることができるかもしれません)。genext2fs

GRBR 2に対してこのようなことを行いました。GRUB2は、MBRと最初のパーティションの間のスペースにインストールされます。GRUBはSYSLINUXとは異なり、ブートセクターからそれほど多くを必要としないため、これは実際には簡単でした。基本的には、より広範な要件に依存します。SYSLINUXに関する上記の部分が役に立たない場合は、私に連絡してください。


この情報をありがとう。私はgenext2fsを使用しているので、あなたの提案は最良の選択肢のように聞こえます。単にextlinuxコードをMBRに追加し、ファイルをfsにコピーするだけの問題ですか、それともファイルをfs内の特定のブロックに入れる必要がありますか?

私はまだEXTLINUXを詳細に調べていません(そうしてからこのコメントを削除しますが、少し時間をくれます)が、SYSLINUX、LILO、GRUB、その他のブートローダーの場合、通常はコードがPBRにコピーされるようになっています(パーティションブートレコード、MBRではなく、vulgoブートセクター)、次にコードを編集して、ファイルの位置をハードコーディングします(したがって、インストーラーが必要です)。あなたのために何かを一緒に作ります。
ミラビロス

@Patrickこれについて議論する必要があるので、チャット
ミラビロス

grubを使用してこれを実装するように指示できますか?現在、を持ってgrub-installいますが、ブートパーティションをマウントする必要があります。
コピー

@copy これはOpenADK での使用方法です。OpenADKはGrml(ISO 9660ファイルシステムを作成するだけでよい)よりも柔軟な画像生成を備えています。おそらくそれは役立ちますか?そうでない場合は、直接私に連絡してください。-編集:ああ、いや、core.img世代…レンメ参照... ここgrub-mkimage呼び出しを確認してください。これは、ターゲット環境に大きく依存しています(基本的に、他のモジュールを動的にロードするために必要なモジュール。GRUB1の方がはるかに簡単でした)。
ミラビロス

5

次の/etc/fstabようなことを言う行を追加する場合:

/dev/loop0      /mnt                                    ext4    defaults,user   0 0

その後/dev/loop0、通常のユーザーとしてマウント/アンマウントできます。

あなたが行う場合とchown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>、その後extlinuxlosetupmkfs、などのように行うことができますyouruser


これを一般的なビルドプロセスの一部にしたいので、イメージファイルとマウントポイントの場所はユーザーごとに変えることができます。ユーザーごとにfstabを編集する必要はありません。

@Patrick Editing fstabはグローバルです。
BenjiWiebe

しかし、losetupはルートのみのままです。
bmargulies

@bmarguliesユーザーがアクセスできるようにループデバイスがchown'dまたはchmod'edされたときではありません...または、少なくともFedoraでは、ユーザーをdiskグループに追加するだけです。(またはloopグループを作成して使用...)
BenjiWiebe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.