
여기에 질문하기 전에 SU/SE와 Google에서 검색을 시도했지만 성공하지 못했습니다.이것이 내가 얻은 가장 가까운 것입니다.
기본적으로 다음을 수행하려고 합니다.
- 약 128MB의 디스크 이미지를 생성합니다.
- GPT를 생성합니다.
- 처음 32MB에 FAT32 파티션을 생성합니다(UEFI라고 부르겠습니다).
- 나머지 바이트에 FAT32 파티션을 생성합니다(SYSTEM이라고 부르겠습니다).
- UEFI 파티션에 다음 하위 디렉터리를 생성합니다: /EFI/BOOT/;
- 하위 디렉토리에 파일을 복사합니다.
- SYSTEM 파티션에 다른 파일을 복사합니다.
지금까지 내가 한 일은 다음과 같습니다.
dd if=/dev/zero of=disk.img bs=1M 개수=128
parted disk.img
(parted) mktable gpt
(parted) mkpart Primary fat32 2048s 65535s
(parted) mkpart Primary fat32 65536s 100%
(parted) 정렬 확인 최적 1
(parted) 정렬 확인 최적 2
(parted) 이름 1 UEFI
(parted ) ) 이름 2 SYSTEM
이것은 내 결과입니다.
디스크 disk.img: 134MB 섹터 크기(논리적/물리적): 512B/512B 파티션 테이블: gpt 디스크 플래그: 번호 시작 끝 크기 파일 시스템 이름 플래그 1 1049kB 33,6MB 32,5MB UEFI msftdata 2 33,6MB 134MB 101MB 시스템 msftdata
또 다른 방법은 두 개의 서로 다른 파티션을 만들고 나중에 병합하는 것입니다.
dd if=/dev/zero of=uefi.img bs=1M 개수=32 mformat -i uefi.img -v UEFI -f 1440 -c 1 :: mmd -i uefi.img ::/EFI mmd -i uefi.img ::/EFI/BOOT mcopy -i uefi.img BOOTX64.EFI ::/EFI/BOOT
dd if=/dev/zero of=system.img bs=1M 개수=100 mformat -i system.img -v UEFI -f 1440 -c 1 :: mcopy -i system.img myawesomeOS ::
이전 방식에서는 "파일 시스템" 열이 비어 있는 이유(fat32라고 표시되어야 함)와 하위 디렉터리를 만들고 파일을 복사하는 방법을 알 수 없습니다.
후자의 경우 mformat에 -F를 추가하면 두 이미지에 대해 적절한 FAT32 파일 시스템을 만들 수 없습니다.
이 뚱뚱한 크기에 비해 클러스터가 너무 적습니다. /etc/mtools.conf 또는 .mtoolsrc 파일에서 16비트 fat을 선택하십시오.
성공하더라도 GPT를 설정하고 두 이미지를 단일 파일로 병합하는 방법을 여전히 모릅니다.
어떻게 이를 달성할 수 있나요? 도움이나 힌트를 주시면 감사하겠습니다.
답변1
몇시간 고생한 끝에 혼자서 해결했습니다. 다음과 같은 경우에 대비하여 여기에 해결책을 게시하겠습니다.
# 256MB의 빈 디스크 이미지를 생성하고 GPT를 생성한 다음 # 두 개의 파티션: 첫 번째 파티션은 약 60MB, 두 번째 파티션은 채워집니다. # 남은 바이트. 두 파티션이 모두 정렬됩니다. dd if=/dev/zero of=disk.img bs=1M 개수=256 분리된 disk.img mktable gpt mkpart 기본 fat32 2048s 131071s mkpart 기본 fat32 131072s 100% 정렬 확인 최적 1 정렬 확인 최적 2 이름 1 UEFI 이름 2 시스템 그만두다 # 33MB의 빈 디스크 이미지를 생성합니다. dd if=/dev/zero of=uefi.img bs=1M 개수=33 # 디스크 이미지를 FAT32로 포맷합니다. mkfs.vfat uefi.img -F 32 # 요청된 하위 디렉터리를 생성합니다. mmd -i uefi.img ::/EFI mmd -i uefi.img ::/EFI/BOOT # 부팅 파일을 복사합니다. mcopy -i uefi.img BOOTX64.EFI ::/EFI/BOOT # 100MB의 빈 디스크 이미지를 생성합니다. dd if=/dev/zero of=system.img bs=1M 개수=100 # 디스크 이미지를 FAT32로 포맷합니다. mkfs.vfat system.img -F 32 # OS 파일을 복사합니다. mcopy -i system.img SYSTEM.EFI :: # 만일의 경우에 kpartx가 요청한 커널 모듈을 활성화합니다. sudo modprobe dm-mod # disk.img의 두 파티션을 /dev/mapper/loop0p1에 매핑하고 마운트합니다. # /dev/mapper/loop0p2 sudo kpartx -av disk.img # UEFI 부분을 디스크 이미지에 복사합니다. sudo dd if=uefi.img of=/dev/mapper/loop0p1 bs=1M # SYSTEM 부분을 디스크 이미지에 복사합니다. sudo dd if=system.img of=/dev/mapper/loop0p2 bs=1M # 두 파티션을 마운트 해제합니다. sudo kpartx -dv disk.img