저는 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에 파일 시스템을 생성하는 것입니다. 그러나 원시 장치가 아닌 파티션에 있도록 하려고 하기 때문에 파티션을 참조하기 위한 오프셋 루프 장치를 생성해야 합니다. 이전 출력에서 섹터는 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가 마운트된 상태에서 부팅하면 파일 시스템이 거의 확실히 손상되어 다시 시작해야 한다는 점에 유의하십시오. 그 외에는 작동 방식이 매우 부드럽습니다.