現在のOSセッションを終了せずにchrootで起動するにはどうすればよいですか?

現在のOSセッションを終了せずにchrootで起動するにはどうすればよいですか?

私はLinuxシステムを構築し、それをISOに変換し、仮想マシンでテストしています。

しかし、このステップは数分かかりますので、開発中はこのステップを避けたいと思います。

デフォルトでは、chrootを構成するファイルをインポートしてホストを再起動せずに起動する方法はありますか?

編集する:

私がやりたいことは、chrootのカーネルを使って基本的に仮想マシンで起動することです。仮想マシンに起動するものを提供するためにISOを構築する必要がある手順を避けたいと思います。

答え1

これにより、すべてをISOで構築することになりますので、作業が始まると作業が完了したのです。これを行うには、まず空のISOを生成する必要があります。

truncate -s 100M image.iso

次に、パーティションテーブルとパーティションテーブルがあることを確認します(通常は自動的に作成されます)。

# fdisk -l image.iso
Disk image.iso: 100 MiB, 104857600 bytes, 204800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x602a438a

Device     Boot Start    End Sectors Size Id Type
image.iso1       2048 204799  202752  99M 83 Linux

次にやりたいことは、.isoにファイルシステムを作成することです。ただし、rawデバイスではなくパーティションにする必要があるため、パーティションを参照するためのオフセットループデバイスを作成する必要があります。前の出力では、セクタは512バイトで、パーティションはセクタ2048で始まることに注意してください。次のステップに必要なオフセットを計算するには、512 * 2048 = 1048576バイトを実行します。その後、オフセットループデバイスを作成します。

losetup --offset 1048576 /dev/loop2 image.iso

これでファイルシステムを作成してマウントする準備が整いました。

mkfs.ext4 -O dir_index /dev/loop2
mount /dev/loop2 /mnt/temp

最後のステップは、起動できるように元のISOにgrubをインストールすることです。

grub-install image.iso

/mnt/temp単にテストしumount /mnt/temp、ISOから起動する仮想マシンを作成する準備ができたらシステムを構築します。 isoがマウントされた状態で起動すると、ファイルシステムがほとんど確実に破損し、再起動する必要があることに注意してください。それ以外の操作方法は非常に滑らかです。

関連情報