UEFI가 아닌 부팅 가능한 USB 설치를 어떻게 생성합니까? (오픈수세 15.3)

UEFI가 아닌 부팅 가능한 USB 설치를 어떻게 생성합니까? (오픈수세 15.3)

제목은 기본적으로 모든 것을 요약합니다. OpenSuSE가 설치된 오래된 컴퓨터(12.x, IIRC)가 있고 이를 업데이트하고 싶습니다. UEFI BIOS가 없습니다. 부팅 가능한 USB 설치를 만들고 싶지만 OpenSuSE 이미지 작성기 프로그램부터 썸 드라이브에 직접 dd 복사를 시도하는 모든 것 아래에 BOOT가 있는 EFI 디렉터리가 생성됩니다. 이는 대상 컴퓨터에서 부팅되지 않습니다. 실제로 인식되지도 않습니다.

현재 openSUSE-Leap-15.3-NET-x86_64.iso 설치를 사용하고 15.0 및 15.2를 실행하는 몇 가지 다른 컴퓨터에서 설치를 생성해 보았습니다. 일반적인 문제 없이 본질적으로 동일한 프로세스를 사용하여 두 컴퓨터에 모두 설치했습니다.

또한 시스템 중 하나도 UEFI가 아니므로 생성된 USB 스틱이 제대로 작동합니다. 둘 다 2007년의 BIOS 날짜를 가지고 있습니다. 유일한 차이점은 하나는 IBM BIOS(ThinkPad T60p)를 사용하고 다른 하나는 AMI BIOS를 사용한다는 것입니다.

추신: BIOS를 USB로만 부팅하도록 설정했지만 이로 인해 부팅 시 다음 메시지와 함께 시스템이 중단됩니다. 부팅 가능한 드라이브를 찾을 수 없습니다. 설치된 Linux로 부팅한 후 머신도 스틱을 마운트하고 읽으므로 단순히 USB 하드웨어 불량의 문제는 아닙니다.

답변1

썸 드라이브에 기록된 이미지는 다음과 같이 나타나야 합니다.파티션: 첫 번째 파티션은 실제로 EFI 디렉터리에 루트가 있는 FAT32 파티션이지만, 두 번째 파티션은 유형 ID 17(Debian 10에 따르면 "숨겨진 HPFS/NTFS" fdisk)로 표시되어 있지만 실제로 ISO9660 파일 시스템을 포함하고 있습니다. ISO 내용의. 이는 BIOS+UEFI 부팅 가능 하이브리드 부팅 미디어의 매우 일반적인 구조입니다.

# sha256sum openSUSE-Leap-15.3-NET-x86_64-Current.iso
54fb3a488e0fececf45cdaeefaccfb64437745

파티션 지원이 활성화된 루프백 장치를 사용하여 USB 썸 드라이브에 쓰기를 시뮬레이션하겠습니다.

# losetup -fP --show openSUSE-Leap-15.3-NET-x86_64-Current.iso
/dev/loop0

# fdisk -l /dev/loop0
Disk /dev/loop0: 146 MiB, 153092096 bytes, 299008 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: 0x1d9b6617

Device       Boot Start    End Sectors   Size Id Type
/dev/loop0p1        276   7331    7056   3.5M ef EFI (FAT-12/16/32)
/dev/loop0p2 *     7332 299007  291676 142.4M 17 Hidden HPFS/NTFS

# file -s /dev/loop0p2
/dev/loop0p2: ISO 9660 CD-ROM filesystem data 'openSUSE-Leap-15.3-NET-x86_64160' (bootable)

그러나 문제 시스템이 "공장 기본값 복원" 시스템 이미징과 같은 일부 내부 목적으로 파티션 유형 ID 0x17을 사용하거나 사용할 수 있는 경우 시스템이 해당 파티션 유형 ID 0x17 스타일 지침에서 BIOS를 거부하는 이유를 설명할 수 있습니다. . 분할.설치 프로그램 썸 드라이브의 두 번째 파티션의 파티션 유형을 다른 값으로 변경해 볼 수 있습니다."확장 파티션" 유형 이외의 모든 값은 작동해야 합니다. RedHat은 일부 혼합 ISO 이미지에 파티션 유형 0x00을 사용했다고 생각합니다.

MBR 내용의 16진수 덤프는 ISOLINUXBIOS 부트로더가 설치되어 있음을 보여줍니다.

# dd if=openSUSE-Leap-15.3-NET-x86_64-Current.iso bs=512 count=1 | xxd -g 1
1+0 records in
1+0 records out
512 bytes copied, 9.4268e-05 s, 5.4 MB/s
00000000: 33 ed 90 90 90 90 90 90 90 90 90 90 90 90 90 90  3...............
00000010: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  ................
00000020: 33 ed fa 8e d5 bc 00 7c fb fc 66 31 db 66 31 c9  3......|..f1.f1.
00000030: 66 53 66 51 06 57 8e dd 8e c5 52 be 00 7c bf 00  fSfQ.W....R..|..
00000040: 06 b9 00 01 f3 a5 ea 4b 06 00 00 52 b4 41 bb aa  .......K...R.A..
00000050: 55 31 c9 30 f6 f9 cd 13 72 16 81 fb 55 aa 75 10  U1.0....r...U.u.
00000060: 83 e1 01 74 0b 66 c7 06 f1 06 b4 42 eb 15 eb 00  ...t.f.....B....
00000070: 5a 51 b4 08 cd 13 83 e1 3f 5b 51 0f b6 c6 40 50  ZQ......?[Q...@P
00000080: f7 e1 53 52 50 bb 00 7c b9 04 00 66 a1 b0 07 e8  ..SRP..|...f....
00000090: 44 00 0f 82 80 00 66 40 80 c7 02 e2 f2 66 81 3e  [email protected].>
000000a0: 40 7c fb c0 78 70 75 09 fa bc ec 7b ea 44 7c 00  @|..xpu....{.D|.
000000b0: 00 e8 83 00 69 73 6f 6c 69 6e 75 78 2e 62 69 6e  ....isolinux.bin
000000c0: 20 6d 69 73 73 69 6e 67 20 6f 72 20 63 6f 72 72   missing or corr
000000d0: 75 70 74 2e 0d 0a 66 60 66 31 d2 66 03 06 f8 7b  upt...f`f1.f...{
000000e0: 66 13 16 fc 7b 66 52 66 50 06 53 6a 01 6a 10 89  f...{fRfP.Sj.j..
000000f0: e6 66 f7 36 e8 7b c0 e4 06 88 e1 88 c5 92 f6 36  .f.6.{.........6
00000100: ee 7b 88 c6 08 e1 41 b8 01 02 8a 16 f2 7b cd 13  .{....A......{..
00000110: 8d 64 10 66 61 c3 e8 1e 00 4f 70 65 72 61 74 69  .d.fa....Operati
00000120: 6e 67 20 73 79 73 74 65 6d 20 6c 6f 61 64 20 65  ng system load e
00000130: 72 72 6f 72 2e 0d 0a 5e ac b4 0e 8a 3e 62 04 b3  rror...^....>b..
00000140: 07 cd 10 3c 0a 75 f1 cd 18 f4 eb fd 00 00 00 00  ...<.u..........
00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001b0: 50 39 00 00 00 00 00 00 17 66 9b 1d 00 00 00 08  P9.......f......
000001c0: 15 00 ef 25 04 03 14 01 00 00 90 1b 00 00 80 25  ...%...........%
000001d0: 05 03 17 3f 20 91 a4 1c 00 00 5c 73 04 00 00 00  ...? .....\s....
000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa  ..............U.

두 번째 파티션(BIOS 스타일 부팅 가능으로 올바르게 표시됨)을 검색하면 다음을 찾을 수 있습니다 isolinux.bin.

# mount -o ro /dev/loop0p2 /mnt
# find /mnt -name isolinux.bin
/mnt/boot/x86_64/loader/isolinux.bin

/boot/x86_64/loader/전형적인 SuSE 스타일의 부트로더 설치 경로입니다. 따라서 BIOS 스타일 부팅을 위한 모든 기본 구성 요소가 제자리에 있는 것처럼 보이지만 문제 시스템의 BIOS는 어떤 이유로 이를 거부하는 것으로 보입니다. 위에서 말했듯이 ISO9660 파티션에 대한 파티션 유형 ID 선택이 귀하의 문제와 관련이 있을 수 있다고 생각됩니다.

관련 정보