Jak utworzyć bootowalny dysk flash USB Ubuntu z terminala?


353

Czy istnieje sposób na utworzenie rozruchowego dysku flash USB Ubuntu z terminala bez korzystania z aplikacji innych firm, takich jak YUMI , Unetbootin , Startup Disk Creator itp.

Próbowałem utworzyć bootowalny dysk flash Ubuntu ddmetodą,

sudo umount /dev/sdb
sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1M

Tworzy pliki na dysku USB, ale kiedy próbuję uruchomić dysk USB, pojawia się Operating System Not Foundbłąd.


Musisz upewnić się, że pamięć flash USB NIE jest zamontowana. Sprawdź za pomocą lsblk. W razie potrzeby wykonaj sudo umount / dev / sdb (prawdopodobnie sdb1, sdb2). Dodaj; echo $? po twoim poleceniu kopiowania dd. Więc: sudo dd if = ... of = ... bs = 4M; echo $? Jeśli polecenie zakończy się, zwracana wartość powinna wynosić 0.

Postępowałem zgodnie z Twoimi krokami, ale tworzy też te same pliki, co sudo umount /dev/sdb sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1Mtworzy. Nie tworzy żadnych ubninit,ldlinux.sys,etcplików, które są głównie ważne dla systemu Linux.
Avinash Raj

Jako ostatni krok zainstalowałbym grub na MBR dysku USB.
Starszy Geek

2
Najprostszym sposobem z wbudowanego narzędzia za pomocą terminala jest wykorzystanie ddjak opisano tutaj. Działa ze wszystkimi hybrydowymi plikami ISO. Ale ddjest niebezpiecznym narzędziem, ponieważ robi to, co mu każesz, bez pytań. Więc jeśli powiesz mu, aby wyczyściło zdjęcia rodzinne ... i to jest mały błąd w pisaniu. Wiele narzędzi jest bezpieczniejszych. Pomagają zidentyfikować i wybrać dysk docelowy oraz zapewniają końcowy punkt kontrolny , w którym możesz dwukrotnie sprawdzić, czy będziesz pisać na właściwy dysk. Większość z nich to narzędzia GUI, niektóre mogą również działać w trybie tekstowym, np mkusb-dus.
sudodus

1
Poniższy link pokazuje przykład, w którym przez pomyłkę nadpisano wewnętrzny dysk, gdy dddo utworzenia rozruchowego dysku flash USB Ubuntu USB użyto wiersza polecenia , askubuntu.com/questions/982552/accidentally-did-dd-dev- sda
sudodus

Odpowiedzi:


431

Możesz użyć dd.

 sudo umount /dev/sd<?><?>  

gdzie <?><?>jest litera, po której następuje cyfra, wyszukaj ją, uruchamiając lsblk.

Będzie to wyglądać jak

sdb      8:16   1  14.9G  0 disk 
├─sdb1   8:17   1   1.6G  0 part /media/username/usb volume name
└─sdb2   8:18   1   2.4M  0 part 

Zsiadłem z sdb1.

Następnie, dalej (jest to destrukcyjne polecenie i czyści cały dysk USB zawartością ISO, więc bądź ostrożny):

 sudo dd bs=4M if=path/to/input.iso of=/dev/sd<?> conv=fdatasync  status=progress

gdzie input.isojest plik wejściowy i /dev/sd<?>urządzenie USB, na którym piszesz (uruchom, lsblkaby zobaczyć wszystkie dyski, aby dowiedzieć się, co <?>jest dla twojego USB).

Ta metoda jest szybka i nigdy mnie nie zawiodła.


EDYCJA: w przypadku komputerów Mac, które kończą tutaj, użyj małych liter, aby bs=4m:

sudo dd if=inputfile.img of=/dev/disk<?> bs=4m && sync

EDYCJA: Jeśli dysk USB nie uruchamia się (tak się stało), to dlatego, że celem jest konkretna partycja na dysku zamiast napędu. Więc celem musi być / dev / sdc, a nie dev / sdc. <?>Dla mnie był to / dev / sdb.

Odniesienie: https://superuser.com/a/407327 i https://askubuntu.com/a/579615/669976


13
to nie działa dla mnie.
Avinash Raj

7
Naprawdę? Czy na pewno masz prawidłową nazwę pliku .iso, w tym ścieżkę, i prawidłowy / dev dla dysku USB? Jak to się nie udaje? Czy pojawia się komunikat o błędzie, czy nie uruchamia się? Czy na pewno .iso nie jest uszkodzony?
Marc

8
Możesz mieć uszkodzony plik .iso. Sprawdziłeś to? Czy jesteś pewien, że .iso jest w rzeczywistości kopią czegoś, co można uruchomić?
Marc

5
Oryginalne pytanie i najbardziej pozytywna odpowiedź to ta sama osoba, która powiedziała, że ​​ta metoda nie działa dla niego. ;-) Dla mnie zatwierdzona odpowiedź nie działa i ta działa. :-) Upvoting.
Drachenfels

20
Dodanie a status=progressdo wiersza poleceń jest również pomocne, aby zobaczyć, ile pozostała górna kopia.
Supernormal

101

Już prawie jesteś dd, ale brakuje ci kroku.

sudo umount /dev/sdX
sudo dd if=/path/to/ubuntu.iso of=/dev/sdX bs=4M && sync

gdzie sdXznajduje się twoje urządzenie USB (można to zweryfikować za pomocą lsblk).

Ten syncbit jest ważny, ponieważ ddmoże powrócić przed zakończeniem operacji zapisu.


17
+1 za wzmiankę sync. Bez tego nie masz pojęcia, czy treść została skopiowana. Ponadto, jeśli się nie spieszysz, powinieneś md5sumoba pliki, aby mieć podwójną pewność.
Dave

4
Może warto wspomnieć, że USB może wymagać (ponownego) sformatowania jako FAT32 z sudo mkfs.msdos -F 32 /dev/sdXpierwszym?
Nemo

10
@Nemo, czy to może coś zmienić? dddo / dev / sdX nadpisze każdy istniejący system plików.
mwfearnley

5
syncnie ma tu sensu. Wpływa tylko na operacje systemu plików.
piątek

3
conv=fdatasync- fizycznie zapisz dane pliku wyjściowego przed zakończeniem, powinno zająć się synchronizacją, ale dobrze zadzwoń, upewniając się, że urządzenie najpierw nie jest zamontowane.
Johnathon Havens

98

Tworzenie rozruchowego dysku flash USB Ubuntu z terminala

  • Umieść ubuntu.isoplik na dowolnej partycji dysku twardego.

  • Następnie zamontuj ubuntu.isoplik za pomocą poniższych poleceń w terminalu:

    sudo mkdir /media/iso/
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Włóż dysk flash USB. Mój dysk to /dev/sdd. Oto zrzut ekranu:

GParted zrzut ekranu

  • Twój napęd może zostać automatycznie zamontowany w środku /media/. Załóżmy, że został zamontowany /media/xxx/.

  • Skopiuj wszystkie pliki z /media/iso/zamontowanego napędu flash USB, uruchamiając poniższe polecenie (pamiętaj o dodaniu kropki):

    cp -a /media/iso/. /media/xxx/
    
  • Następnie potrzebujesz ldlinux.syspliku na dysku flash USB, aby można było uruchomić dysk USB . Moja partycja USB to /dev/sdd1; wejdź, lsblkaby zobaczyć, co jest twoje. Uruchom poniższe polecenia:

    sudo apt-get install syslinux mtools
    sudo syslinux -s /dev/sdd1
    
  • Przejdź do /media/xxxfolderu montowania i zmień nazwę isolinuxkatalogu na syslinux. Następnie przejdź do folderu o zmienionej nazwie i zmień nazwę pliku isolinux.cfgna syslinux.cfg.

  • Uruchom ponownie komputer i zmień kolejność rozruchu w systemie BIOS, aby umożliwić rozruch z dysku USB. Teraz dysk flash USB Ubuntu uruchomi się i możesz go zainstalować.

Ta metoda będzie działać dla dowolnej dystrybucji Linuksa, nie tylko Ubuntu. Nie musisz instalować oprogramowania innych firm, aby utworzyć dysk flash USB z systemem Linux .


3
Próbuję tego w tej chwili, czy mógłbyś sprecyzować, czego / dlaczego używasz: cp -a zamiast cp -r
moldovean

2
Trzeba sudona syslinuxkomendę.
Cammy_the_block

9
Ta metoda nie działała dla mnie. Cp -a daje: „cp: nie można utworzyć dowiązania symbolicznego” /media/xxx/./ubuntu ”: Operacja niedozwolona” i tym podobne, ponieważ celem jest fat32. Próbowałem zignorować to ... nie zadziałało
sheß

6
Ważne, aby pamiętać, że USB musi być systemem plików fat32, w przeciwnym razie syslinux nie będzie działać
Ricardo BRGWeb

2
Konsola wyświetla ten sam błąd co @ sheß. Sprawdziłem system plików (FAT32) i oznaczyłem BOOT.
Chofoteddy

40

Masz dwie możliwości.

Jeśli potrzebujesz interfejsu graficznego, użyj kreatora USB (znajduje się w repozytoriach ubuntu)

wprowadź opis zdjęcia tutaj

Jeśli potrzebujesz narzędzia wiersza poleceń, użyj dd

#Replace X accordingly in both commands

sudo umount /dev/sdX
sudo dd if=/path/to/ubuntu.iso of=/dev/sdbX bs=1M

Tylko upewnij /dev/sdXsię, że chcesz użyć dysku flash (spowoduje to zniszczenie danych na dysku flash).

Dodatkowe informacje można znaleźć na stronie https://help.ubuntu.com/community/Installation/FromUSBStick .


1
chcę tylko narzędzia wiersza poleceń, a nie narzędzie GUI (takie jak kreator dysku startowego). Zgodnie z ddmetodą, tylko 3 foldery i 1 plik został utworzony w moim usb. Podczas próby rozruchu wyświetla się komunikat o operating system not foundbłędzie Brakuje podobnych plików ubninit,menu.c32,ubnpathl.txt,ubnfilel.txt,ldlinux.sys(które są bardzo ważne, aby uruchomić live Ubuntu USB).
Avinash Raj,

1
Próbowałem metody dd z ubuntu.iso i zadziałało! jednak jest zbyt dużo czasu, aby napisać na USB. Zastanawiam się, co oznacza bs = 1M. Znalazłem tę stronę manpages.ubuntu.com/manpages/karmic/en/man1/dd.1.html . Teraz zastanawiam się, czy zmiana wartości spowoduje szybsze kopiowanie na USB? A jakie jest ryzyko ... może ktoś wie.
moldovean

4
Bs to rozmiar bloku. dd wczyta 1 MB danych do pamięci, a następnie przystąpi do zapisu na dysku jako całości. Stosując bardzo mały rozmiar bloku, uzyskasz duże obciążenie procesora. Użycie bardzo dużego rozmiaru bloku może spowodować nieoczekiwane skutki uboczne, np. Dłuższe przerwy w braku aktywności dysku i / lub duże użycie pamięci RAM. 1M lub 4M zwykle jest dobrą wartością przy tworzeniu dysku z ISO. Więcej informacji na temat rozmiarów bloków: stackoverflow.com/questions/6161823/...
ApolloLV

Wydaje mi się, że tworzenie bootowalnego USB jest czymś, co robię rzadko, ale kiedy to robię, chcę, żeby to zrobiło się dobrze. Mniejszy rozmiar bloku może potrwać dłużej, ale czy to problem? Nie.
Marc

2
@Marc - Jedynym problemem jest szybkość, mniejszy rozmiar bloku nie jest mniej lub bardziej podatny na błędy niż większy rozmiar bloku, a zatem mniejszy rozmiar bloku! = „Zrobione dobrze”. Wykonane w prawo oznacza sprawdzenie sumy md5 ISO i potwierdzenie sumy md5 zapisanego obrazu. Po potwierdzeniu m5dsums wiesz, że zostało to zrobione poprawnie.
Panther

28

Najpierw odmontuj urządzenie USB, a następnie użyj go lsblkdo weryfikacji urządzenia.

Czasami (zwykle starsze pliki ISO) dd nie jest wystarczające i pendrive nie uruchamia się. W takim przypadku może być konieczne zainstalowanie syslinux:

sudo apt-get install syslinux

a następnie uruchom następujące polecenia:

sudo mkfs -t vfat -I /dev/sdX

Chcesz uruchomić to ostatnie polecenie /dev/sdXi nie /dev/sdX1 .

Następnie wykonaj następujące polecenia:

isohybrid /path/to/file.iso --entry 4 --type 0x1c
dd if='/path/to/file.iso' of=/dev/sdX bs=8M

lub, aby zobaczyć postęp zapisu obrazu:

pv -tpreb /path/to/file.iso | dd of=/dev/sdX bs=8M

lub zamiast tego ddmożesz użyć catzamiast:

sudo -s
cat /path/to/file.iso > /dev/sdX

Pamiętaj, aby wydać polecenie synchronizacji, aby opróżnić pamięć podręczną zapisu

sync

web.archive.org/web/20140327085331/https://tails.boum.org/doc/first_steps/installation/manual/linux/index.en.html


Muszę wspomnieć, że dla mnie wszystko inne zawiodło, ale to zadziałało - wybrałem catpolecenie.
Digital Dracula,

Dla tych, którzy twierdzą, że ddsam wystarczy, potrzebowałem tego również do działania.
GuiRitter,

Jeśli potrzebujesz narzędzia, które używa, ddgdy ISO jest hybrydowe i montuje, skopiuj plik ISO + instaluje SYSLINUX, gdy ISO nie jest, użyj bootisozamiast tego.
Jules Randolph,

1
Czy potrafisz wyjaśnić, co właściwie robi każde z tych poleceń? po co tworzyć system plików VATAT na urządzeniu, a następnie natychmiast nadpisywać go zawartością pliku ISO? Co isohybridwłaściwie robi? czy w jakiś sposób modyfikuje ISO?
cheshirekow

10

Jeśli przez „podmiot zewnętrzny” masz na myśli „gui”, sugeruję lekki skrypt o nazwie bootiso po odpowiedzi Avinash Raj , ponieważ ddnie zawsze działa. Dużym plusem jest to, że jest bardzo bezpieczny (wykonuje wiele kontroli bezpieczeństwa, aby nie zepsuć się z systemem), jest łatwy w instalacji i przenośny.

Ponadto bootisosprawdzi plik ISO, aby wybrać jeden z dwóch trybów: image-copy ( dd), gdy plik ISO jest hybrydowy, czyli jest przyjazny dla USB. I tryb mount-rsync, gdy plik ISO nie jest hybrydowy, w którym to przypadku bootloader SYSLINUX zostanie automatycznie zainstalowany, jeśli jest obsługiwany [ więcej szczegółów na temat automatycznego zachowania ].

Jak tego użyć

Pierwsza opcja, wystarczy podać ISO jako pierwszy argument, a pojawi się monit o wybranie dysku spośród listy wyodrębnionej z lsblk:

bootiso myfile.iso

Lub podaj wyraźnie urządzenie USB:

bootiso -d /dev/sde myfile.iso

Szybka instalacja

curl -L https://git.io/bootiso -O
chmod +x bootiso

Zobacz to w akcji:


1
Zgadzam się, to bardzo fajny skrypt, który usuwa przerażające fragmenty procesu. Więcej szczegółów tutaj: tecmint.com/create-bootable-usb-in-linux-commandline
kr37

Obsługuje nawet system Windows 10 października 2018 r., Ponieważ obsługuje „dzielenie wim” pliku „install.wim” (przy użyciu polecenia „wimlib-imagex”), który ma> 4 Gb, a poza tym nie może być przechowywany na FAT32.
mevdschee

7
$ dd if=ubuntu-14.04.1-desktop-amd64.iso of=/dev/sdX bs=1MB

Nie używaj ścieżki do bitów.

  1. Użyj cdpolecenia, aby przejść do folderu zawierającego plik .iso
  2. użyj polecenia dd if=FILE NAME HERE.iso of=/dev/sdX bs=1MB
  3. Poczekaj, aż dane wyjściowe konsoli będą wyglądać mniej więcej tak:

    1028+1 records in
    1028+1 records out
    1028653056 bytes (1.0 GB) copied, 55.4844 s, 18.5 MB/s
    
  4. Uruchom z USB.

Uwaga: Upewnij się, że piszesz na odpowiednim urządzeniu, w którym USB nie zawsze będzie montowane w: dev/sdXgdzie X może być dowolną literą.


2
jakie jest znaczenie bs = 1 MB w poleceniu dd ???
juggernauthk108

1
@ juggernaut1996 none. Jest to rozmiar bloku używany podczas kopiowania. Ponieważ nie podano argumentu licznika, skopiuje on całość danych wejściowych w 1 MB blokach. Można to usunąć.
sjbx

„Nie używaj ścieżki do bitu” jest dezinformacją. Sam proces nie piecze składników ścieżki w kopiowanym obrazie w żadnym kroku, więc nie ma znaczenia, jeśli przejdziesz do katalogu zawierającego obraz ISO lub po prostu podasz pełną ścieżkę. Co więcej, dd może również akceptować dane wejściowe ze standardowego wejścia, więc możesz po prostu połączyć dwa dd ze sobą, aby upewnić się, że żadna ścieżka nie zostanie wypalona na obrazie.
Gabor Garami,

Będzie to działać tylko w przypadku hybrydowych układów ISO, które wypełniają dziś znaczną większość przypadków, ale istnieją zauważalne wyjątki, takie jak UltimateBootCD. Użyj bootisozamiast tego.
Jules Randolph,

-5

Spróbuj tego i nigdy nie zawiodłem mnie ponad 100 razy:

Sformatuj kartę:

$ sudo mkfs.vfat -F32 /dev/sdx

Zamontuj obraz ISO:

$ sudo mount ubuntu.iso /mnt

Skopiuj zawartość na kartę:

$ sudo cp -rvf /mnt/* /SD_CardMountPoint

Następnie:

  • zmień nazwę isolinuxfolderu nasyslinux
  • zmień nazwę syslinux/isolinux.cfgnasyslinux/syslinux.cfg
  • zmień nazwę syslinux/isolinux.binnasyslinux/syslinux.bin
  • biegać syslinux -s /dev/sdx

4
-1. Czy w ogóle to przetestowałeś? sudo cp -rvf /mnt/* /dev/sdxnie zadziała (a przynajmniej nie zrobi tego, co zamierzasz). Nie kopiujesz plików na surowe urządzenie ( /dev/). Zamiast tego należy zamontować kartę i skopiować zawartość pliku ISO na kartę (punkt podłączenia do punktu montażu). I co jest nie tak z obecną akceptowaną odpowiedzią, która ma takie samo podejście.
gertvdijk
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.