Linux에서 명령 줄을 사용하여 부팅 가능한 ISO에서 부팅 가능한 USB를 만드는 방법은 무엇입니까?


50

plop linux를 통해 Ubuntu의 사용자 정의 버전을 설치하는 데 사용하는 ISO 파일로 작성된 CD가 있습니다.

CD는 제대로 작동하지만 부팅 가능한 USB 드라이브를 대신 사용하고 싶습니다. dd 명령을 사용하여 부팅 가능한 USB를 만들려고했습니다.

dd if=filename.iso of=/dev/sdb1 bs=4k

이제 파일을 복사하고 USB를 부팅 가능하게 만들지 만 "운영 체제 누락"오류가 발생합니다.

어떤 아이디어?


명령 행에만 액세스 할 수 있습니까? Unetbootin과 같은 인터페이스가 아주 잘 작동하고 리눅스에서 실행됩니다.
대시 보드

3
@dashboard 모든 리눅스 컴퓨터에서 사용할 수 있기 때문에 명령 줄을 선호합니다.
xsdf


@dashboard-GUI 도구는 나에게 잘 작동하지 않는 것 같습니다. 커맨드 라인 방법을 알게되어 기쁩니다. 더 쉽고 안정적이라고 생각합니다. 훨씬 덜 좌절입니다!
MountainX

답변:


58

연구를 마친 후에 해결책을 찾았으며 단계별로 살펴 보겠습니다. 문제는 두 가지였다.

  1. USB 플래시 드라이브를 연결하고 다음 명령으로 마운트 된 장치를 확인하십시오.

    sudo fdisk -l
    

    이번에는 / dev / sdc1 이었으므로 예제로 사용하겠습니다.

  2. 장치 마운트 해제

    umount /dev/sdc1
    
  3. 필요한 경우 확실하지 않지만 FAT32로 드라이브를 포맷했습니다.

    sudo mkdosfs -n 'USB-Drive-Name' -I /dev/sdc -F 32
    
  4. 이제 내 ISO는 syslinux가 아닌 isolinux를 사용했습니다. CD와 함께 작동한다는 것을 알았으므로 isohybrid 명령을 호출해야 하드 드라이브의 BIOS에서 ISO를 인식 할 수있었습니다.

     isohybrid filename.iso
    

    이 명령에 대한 자세한 내용은 여기 에서 찾을 수 있지만 이것이 "운영 체제 누락"메시지의 원인입니다. 첫 번째 문제는 해결되었지만 이제 "isolinux.bin이 없거나 손상되었습니다"라고했습니다.

  5. 다음 단계는 iso를 복사하는 것입니다. 두 번째 문제는 여기서 장치가 아닌 파티션 sdc1에 복사하는 sdc1입니다.

    sudo dd if=filename.iso of=/dev/sdc bs=4k
    

    이것은 잘 작동하는 것처럼 보이지만 마지막 수정 사항을 얻은 포럼에서는 장치를 분리하기 전에 다음을 수행하는 것이 좋습니다.

    sync
    sudo eject /dev/sdc
    

3
다음은 DD의 진행을 확인하는 방법 unix.stackexchange.com/a/11264/13011은 .
Nikos Alexandris

3
여기서 가정하면, mkdosfsiso는 이미 블록 장치의 시작 부분으로 복사되는 파일 시스템이 이미있을 수 있기 때문에 (아마도 MBR 포함하지 않음) 명령이 필요하지 않을 것이라고 생각합니다 . 남자, isohybrid멋진 명령입니다, 그것에 대해 몰랐어요!
Ehtesh Choudhury

1
Windows 7 부팅 가능 설치 USB의 경우 superuser.com/questions/256869/…
cwd

7
3 단계는 불필요합니다. dd5 단계 의 명령은 ISO의 내용으로 새로 생성 된 파일 시스템을 제거합니다.
ewhac

나는 12 시간이 가까워서 여기에서 귀하의 게시물을 찾을 때까지 동일한 문제를 찾고 있습니다. (5 단계도 문제였습니다. pro아직 리눅스가 아니므로 감사합니다)
Ismael

3

이것은 SanDisk USB 스틱 또는 FAT32로 포맷되지 않은 스틱의 일반적인 문제입니다.

둘 중 하나가 아닌 경우 스틱 파티션 순서 또는 syslinux.cfg 파일에 문제가있는 것입니다.


USB 플래시 드라이브는 Verbatim에서 가져 왔습니다. FAT32에서 다시 포맷하여 확실하게 동일한 오류가 발생했습니다.
xsdf

1

isohybrid항상 작동하지 않을 수 있습니다. 예를 들어 FreeDOS와 함께 .iso를 사용했으며 isohybrid는 중요한 파일을 찾을 수 없었습니다 (syslinux에 의해 파일을 넣었는지 여부 또는 다른 것을 사용했는지 여부는 알 수 없음). 여기에 몇 가지 대안을 제안합니다.

1) GRUB과 같은 다른 부트 로더를 설치하십시오. 여기에 설명되어 있습니다 :

"USB 스틱의 첫 번째 파티션은 FAT32이고 그 파티션은 / dev / sdy1이라고 가정합니다."( grub2Fedora Core에 있으므로 명령을 약간 변경했습니다.)

# mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb
# grub2-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
# grub2-mkconfig -o /mnt/usb/boot/grub2/grub.cfg

# optional, backup config files of grub.cfg
# mkdir -p /mnt/usb/etc/default
# cp /etc/default/grub /mnt/usb/etc/default
# cp -a /etc/grub.d /mnt/usb/etc

# sync; umount /mnt/usb

2) FreeDOS에 위키는 GRUB와 SYSLINUX와 복합 방법을 제공 여기를 나는 그들이 시작하는 방법을 이해하지 않습니다하지만 ( grub>내가 그 단계에 USB까지에서 부팅 할 수 있음) -.

3) 다음 은 유용 할 수있는 게시물입니다. 'command.com, kernel.sys, syslinux.cfg, ldlinux.sys 및 fat32lba.bss 파일이 드라이브의 루트와 MBR 및 부트에있는 한 섹터를 다시 쓰지 않으면 드라이브를 부팅 가능한 상태로 유지해야합니다. '

4) 여기서는 syslinux 부트 로더로 부팅 가능한 .iso 파일을 생성하는 방법에 대해 설명합니다. 그들은 isohybrid도 사용하지 않습니다. 불행히도 그것은 도움이되지 않았습니다 (아마도 syslinux 때문에).

5 *)를 통해 Windows 프로그램을 사용하십시오 wine. 나는 rufus를 시도했지만 작동하지 않아 장치를 찾을 수 없습니다.

불행히도이 문제를 해결할 수 없으며 내 장치를 부팅 할 수 없지만 다른 사람들 (USB에는 Linux를 설치하지 않으려는 사람들)에게 유용 할 수 있기를 바랍니다. chtaube에 의해 생성 된 USB 이미지는 저에게 효과적이므로 이러한 방법이 올바른 것 같습니다.

UPD : 세 번째 방법은 실제로 작동합니다 ( 사용자 정의 설치 파일을 수정 함 ).

UPD2 : (고정 링크). 문제 isohybrid는 아마도 iso와 내 시스템의 isolinux.bin 버전이 다르기 때문일 것입니다. 여기에genisoimage 제안 된대로 iso를 다시 컴파일했습니다 .

genisoimage -l -r -J -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o fd11new.iso fd11new

또한, 그들은 방법에 의해 해결 된 몇 가지 문제가 있었다 여기 genisoimage하기 전에 :

cp /boot/extlinux/*.c32 fd11new/isolinux/
extlinux --install /boot/isolinux

== UPD2 종료 ==



두 번째 : freedos.sourceforge.net/wiki/index.php/USB#Linux_2 시스템이 저보다 더 많은 것을 신뢰하는 경우 게시물에이 링크를 추가 할 수 있습니다. StackOverflow는 이미 저를 잘 알고 있습니다. 왜 수퍼 유저에게 그러한 문제가 있습니까? 또한이 게시물을 게시하는 데 문제가 있었지만 내 답변이 이미 게시되어 있음을 보여주지 않았습니다.
Yaroslav Nikitenko

수퍼 유저는 참조로 링크를 계산합니다. 즉, 동일한 리소스에 두 번 연결하면 계산됩니다. 이것은 버그 인 것 같습니다. UPD의 해결 방법은 spiderbird.com/tag/fat32lba-bss
Yaroslav Nikitenko

주석의 모든 링크가 수정되었습니다. 이 정책으로 인해 얼마나 많은 문제가 발생했는지 보여주기 위해 여기에 남겨 두었습니다.
Yaroslav Nikitenko

0

bootiso유틸리티를 사용하면 정확히 그렇게 할 수 있습니다 .

bootiso -d /dev/sdb filename.iso

bootiso는 선택된 장치 /dev/sdb가 USB를 통해 연결되어 있는지 확인하고 연결되지 않으면 실패합니다. 이는 큰 보안 이점입니다 . 시스템에 정확히 하나의 USB 드라이브가 연결되어 있으면 USB 장치를 자동 감지합니다. 작동 상태를 확인하십시오.

@xsdf에서 언급 한 문제를 피하기 위해 syslinux bootloader를 설치하려면 -b옵션을 사용하십시오 .

 bootiso -b -d /dev/sdb filename.iso

설치하려면 :

curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
chmod +x bootiso
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.