2013-05-03 20:11:23 +0000 2013-05-03 20:11:23 +0000
50
50

Jak utworzyć bootowalne USB z bootowalnego ISO z wiersza poleceń w Linuksie?

Mam płytę CD, która jest tworzona z pliku ISO, którego używam do instalacji niestandardowej wersji Ubuntu poprzez plop linux.

Płyta działa dobrze, ale chciałbym użyć bootowalnego dysku USB zamiast niej. Użyłem polecenia dd, aby spróbować stworzyć bootowalny dysk USB:

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

Teraz to kopiuje pliki i czyni USB bootowalnym, ale dostaję błąd “Brakujący system operacyjny”

Jakieś pomysły?

Odpowiedzi (4)

58
58
58
2013-05-07 16:46:56 +0000

Ok po kilku badaniach znalazłem rozwiązanie, i przejdę przez to krok po kroku. Problem był dwojaki.

  1. Podłącz pendrive i określ urządzenie, na którym jest zamontowany za pomocą komendy:

  2. Odmontuj urządzenie

  3. Nie jestem pewien czy to konieczne, ale sformatowałem dysk w FAT32, tak na wszelki wypadek

  4. Teraz moje ISO używało isolinux a nie syslinux. Wiedziałem, że działa on z płytami CD, więc doszedłem do wniosku, że muszę wywołać komendę isohybrid, która pozwala na rozpoznanie ISO przez BIOS z dysku twardego.

  5. Następnym krokiem jest skopiowanie iso. Mój drugi problem leżał tutaj, gdzie kopiowałem na partycję, sdc1, a nie na urządzenie, sdc.

3
3
3
2013-05-03 20:25:22 +0000

Jest to częsty problem z pamięciami USB SanDisk, lub pamięciami niesformatowanymi w FAT32.

Jeśli nie jest to żadna z tych rzeczy, to z pewnością jest to problem z kolejnością partycji w pamięci lub plikiem syslinux.cfg.

1
1
1
2016-01-20 13:42:39 +0000

isohybrid może nie zawsze działać. Na przykład, miałem .iso z FreeDOS i isohybrid nie był w stanie znaleźć tam kilku ważnych plików (nie wiem, czy powinny być one umieszczone tam przez syslinux, którego też używałem, czy cokolwiek innego). Proponuję tutaj kilka alternatywnych rozwiązań.

1) Zainstaluj tam inny bootloader, taki jak GRUB. Jest to wyjaśnione tutaj :

“Assume your USB stick’s first partition is FAT32 and its partition is /dev/sdy1” (na moim Fedora Core miałem grub2, więc trochę pozmieniałem komendy):

# 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 wiki oferuje metodę złożoną z GRUB'a i syslinux'a tutaj (choć nie rozumiem jak uruchomili grub> - ja do tego etapu nie mogłem bootować z usb).

3) tutaj jest post, który może być przydatny - mówi “Tak długo jak pliki command.com, kernel.sys, syslinux.cfg, ldlinux.sys i fat32lba.bss są w korzeniu dysku i MBR i boot sektor nie są przepisane, dysk powinien pozostać bootowalny.

4) Tutaj jest wyjaśnione jak wygenerować bootowalny plik .iso za pomocą bootloadera syslinux. Oni nawet nie używają isohybrid. Niestety to mi nie pomogło (może z powodu syslinuxa).

5) Użyj programu windowsowego przez wine. Próbowałem rufusa, ale to nie zadziałało, nie mógł znaleźć urządzenia.

Uprzedzam, że niestety nie udało mi się rozwiązać tego problemu, moje urządzenie było nie do uruchomienia, ale mam nadzieję, że może się to przydać innym osobom (również tym, które chcą zainstalować nie linuxa na usb). Obraz usb wygenerowany przez chtaube jednak działał dla mnie, więc myślę, że te metody są poprawne.

UPD: Trzecia metoda naprawdę działa (z korektą dla niestandardowego pliku instalacyjnego).

UPD2: (naprawione linki). Problem z isohybrid był prawdopodobnie spowodowany tym, że wersje isolinux.bin na iso i moim systemie były różne. Przekompilowałem iso używając genisoimage zgodnie z sugestią tutaj :

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

Były też pewne problemy, rozwiązano je metodą tutaj przed genisoimage:

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

== end UPD2 ==.

0
0
0
2018-04-09 23:44:32 +0000

Możesz użyć bootiso utility , który robi dokładnie to, bezpiecznie:

bootiso -d /dev/sdb filename.iso

bootiso sprawdzi czy wybrane urządzenie /dev/sdb jest podłączone przez USB i zawiedzie jeśli nie, co jest dużym plusem bezpieczeństwa. Będzie również autodetekcja urządzenia USB jeśli do systemu podłączony jest dokładnie jeden dysk USB, zobacz jak to działa:

Jeśli chcesz zainstalować bootloader syslinuxa, aby obejść problemy wspomniane przez @xsdf, użyj opcji -b:

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

Aby go zainstalować:

curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
chmod +x bootiso