Bagaimana cara membuat flash drive USB Ubuntu dari terminal?

353

Apakah ada cara untuk membuat flash drive USB Ubuntu bootable dari terminal tanpa menggunakan aplikasi pihak ketiga seperti YUMI , Unetbootin , Startup Disk Creator , dll.

Saya mencoba membuat flash drive Ubuntu yang dapat di-boot dengan ddmetode,

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

Itu membuat file pada disk USB, tetapi ketika saya mencoba untuk boot disk USB itu menunjukkan Operating System Not Foundkesalahan.

Avinash Raj
sumber
Anda harus memastikan bahwa USB flash drive Anda TIDAK terpasang. Periksa dengan lsblk. Jika perlu, lakukan sudo umount / dev / sdb (mungkin sdb1, sdb2). Tambahkan; echo $? setelah perintah copy dd Anda. Jadi: sudo dd if = ... of = ... bs = 4M; echo $? Jika commandd berakhir, nilai yang dikembalikan harus 0.
Saya mengikuti langkah-langkah Anda, tetapi itu juga menciptakan file yang sama seperti sudo umount /dev/sdb sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1Mcreate.It tidak membuat ubninit,ldlinux.sys,etcfile yang terutama penting os linux untuk boot.
Avinash Raj
Saya akan menginstal grub pada MBR disk USB sebagai langkah terakhir.
Penatua Geek
2
Cara termudah dengan alat bawaan menggunakan terminal adalah menggunakan ddseperti yang dijelaskan di sini. Ini bekerja dengan semua file hybrid iso. Tetapi ddini adalah alat yang berbahaya karena alat itu melakukan apa yang Anda perintahkan tanpa harus bertanya. Jadi, jika Anda menyuruhnya menghapus foto keluarga ... dan itu adalah kesalahan mengetik kecil. Banyak alat lebih aman. Mereka membantu Anda mengidentifikasi dan memilih drive target, dan memberikan pos pemeriksaan akhir , tempat Anda dapat memeriksa ulang, bahwa Anda akan menulis ke drive yang benar. Sebagian besar adalah alat GUI, beberapa dapat bekerja dalam mode teks juga, misalnya mkusb-dus.
sudodus
1
Tautan berikut menunjukkan contoh, di mana drive internal ditimpa secara tidak sengaja, ketika baris perintah dengan dddigunakan untuk membuat flash drive USB Ubuntu yang dapat di-boot, askubuntu.com/questions/982552/accidentally-did-dd-dev- sda
sudodus

Jawaban:

431

Anda bisa menggunakannya dd.

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

di mana <?><?>huruf diikuti oleh angka, cari dengan berlari lsblk.

Ini akan terlihat seperti

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 

Saya akan turun sdb1.

Kemudian, selanjutnya (ini adalah perintah yang merusak dan menghapus seluruh USB drive dengan isi iso, jadi berhati-hatilah):

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

di mana input.isofile input, dan /dev/sd<?>perangkat USB tempat Anda menulis (jalankan lsblkuntuk melihat semua drive untuk mengetahui untuk apa <?>USB Anda).

Metode ini cepat dan tidak pernah mengecewakan saya.


EDIT: untuk mereka yang menggunakan Mac yang berakhir di sini, gunakan huruf kecil untuk bs=4m:

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

EDIT: Jika USB drive tidak bisa boot (ini terjadi pada saya), itu karena targetnya adalah partisi tertentu pada drive, bukan drive. Jadi targetnya adalah / dev / sdc dan bukan dev / sdc. <?>Bagi saya itu / dev / sdb.

Referensi: https://superuser.com/a/407327 dan https://askubuntu.com/a/579615/669976

Marc
sumber
13
itu tidak bekerja untuk saya.
Avinash Raj
7
Benarkah? Apakah Anda yakin Anda memiliki nama file .iso yang benar termasuk jalur, dan yang benar / dev untuk drive USB Anda? Bagaimana bisa gagal? Apakah ada pesan kesalahan, atau hanya gagal untuk boot? Apakah Anda yakin .iso tidak rusak?
Marc
8
Anda dapat memiliki .iso yang korup. Sudahkah Anda memeriksanya? Apakah Anda yakin .iso sebenarnya adalah salinan dari sesuatu yang dapat di- boot?
Marc
5
Pertanyaan asli dan jawaban yang paling banyak dipilih adalah orang yang sama yang mengatakan metode ini tidak berhasil untuknya. ;-) Bagi saya jawaban yang disetujui tidak berfungsi dan yang ini tidak. :-) Upvoting.
Drachenfels
20
Menambahkan a status=progresske baris perintah juga membantu, untuk melihat berapa banyak salinan kiri yang tersisa.
Supernormal
101

Anda hampir sampai dd, tetapi Anda kehilangan satu langkah.

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

di mana sdXperangkat usb Anda (ini dapat diverifikasi dengan lsblk).

The syncbit penting karena dddapat kembali sebelum operasi write selesai.

pengguna373766
sumber
17
+1 untuk disebutkan sync. Tanpa itu, Anda tidak tahu apakah konten itu benar-benar disalin. Juga, jika Anda tidak terburu-buru, Anda harus md5sumkedua file hanya untuk menjadi dua kali lipat.
Dave
4
Mungkin layak menyebutkan USB mungkin perlu (kembali) diformat sebagai FAT32 dengan yang sudo mkfs.msdos -F 32 /dev/sdXpertama?
Nemo
10
@Nemo, mungkinkah itu membuat perbedaan? ddke / dev / sdX akan menimpa sistem file yang ada.
mwfearnley
5
synctidak ada gunanya di sini. Ini hanya memengaruhi operasi sistem file.
punund
3
conv=fdatasync- tulis secara fisik data file output sebelum menyelesaikan harus menangani sinkronisasi, tetapi panggilan yang baik untuk memastikan bahwa perangkat dilepas terlebih dahulu.
Johnathon Havens
98

Membuat flash drive USB Ubuntu bootable dari terminal

  • Tempatkan ubuntu.isofile di partisi hard disk.

  • Kemudian pasang ubuntu.isofile dengan perintah di bawah ini di terminal:

    sudo mkdir /media/iso/
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Masukkan USB flash drive Anda. Drive saya /dev/sdd. Berikut screenshotnya:

Tangkapan layar GParted

  • Drive Anda mungkin dipasang di dalam secara otomatis /media/. Mari kita asumsikan sudah terpasang /media/xxx/.

  • Salin semua file dari /media/iso/ke USB flash drive Anda yang terpasang dengan menjalankan perintah di bawah ini (pastikan untuk menyertakan titik):

    cp -a /media/iso/. /media/xxx/
    
  • Selanjutnya, Anda memerlukan ldlinux.sysfile di USB flash drive Anda untuk membuat USB bootable . Partisi USB saya adalah /dev/sdd1; masuk lsblkuntuk melihat apa milikmu. Jalankan perintah di bawah ini:

    sudo apt-get install syslinux mtools
    sudo syslinux -s /dev/sdd1
    
  • Arahkan ke /media/xxxfolder mount dan ganti nama isolinuxdirektori menjadi syslinux. Kemudian masuk ke folder yang diubah namanya dan ganti namanya isolinux.cfgmenjadi syslinux.cfg.

  • Reboot PC Anda dan ubah urutan booting di BIOS untuk memungkinkan booting dari drive USB. Sekarang USB flash drive Ubuntu Anda akan boot dan Anda dapat menginstalnya.

Metode ini akan berfungsi untuk distribusi Linux apa pun, tidak hanya Ubuntu. Anda tidak perlu menginstal perangkat lunak pihak ketiga apa pun untuk membuat USB flash drive Linux .

Avinash Raj
sumber
3
Saya sedang mencobanya saat ini, dapatkah Anda menentukan apa / mengapa Anda menggunakan: cp -a daripada cp -r
moldovean
2
Anda perlu sudountuk syslinuxperintah itu.
Cammy_the_block
9
Metode ini tidak berhasil untuk saya. Cp -a memberikan: 'cp: tidak dapat membuat tautan simbolik' /media/xxx/./ubuntu ': Operasi tidak diizinkan' dan yang sejenisnya, karena targetnya adalah fat32. Saya mencoba mengabaikan itu ... tidak berhasil
sheß
6
Penting untuk dicatat bahwa usb harus berupa sistem file FAT32, jika tidak syslinux tidak akan berfungsi
Ricardo BRGWeb
2
Konsol menunjukkan kesalahan yang sama dengan @ sheß. Saya memverifikasi filesystem (FAT32) dan menandai BOOT.
Chofoteddy
40

Anda punya dua pilihan.

Jika Anda menginginkan antarmuka grafis, gunakan usb-creator (ada di repositori ubuntu)

masukkan deskripsi gambar di sini

Jika Anda menginginkan alat baris perintah, gunakan dd

#Replace X accordingly in both commands

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

Pastikan /dev/sdXsaja flash drive yang ingin Anda gunakan (itu akan menghancurkan data pada flash drive).

Lihat https://help.ubuntu.com/community/Installation/FromUSBStick untuk informasi tambahan.

Harimau kumbang
sumber
1
saya hanya ingin alat-alat baris perintah, bukan alat gui (seperti pencipta disk startup). Menurut ddmetode ini, hanya 3 folder dan 1 file yang dibuat di usb saya. Sementara saya mencoba untuk mem- operating system not foundbootnya mengatakan error. File seperti ubninit,menu.c32,ubnpathl.txt,ubnfilel.txt,ldlinux.syshilang (yang sangat penting untuk mem-boot live ubuntu usb).
Avinash Raj
1
Saya mencoba metode dd dengan ubuntu.iso dan berhasil! namun terlalu banyak waktu untuk ditulis pada USB. Saya ingin tahu apa singkatan bs = 1M. Saya menemukan situs ini manpages.ubuntu.com/manpages/karmic/en/man1/dd.1.html . Sekarang saya bertanya-tanya apakah mengubah nilai akan membuat menyalin ke USB lebih cepat? Dan apa risikonya .. mungkin seseorang tahu.
moldovean
4
Bs adalah ukuran blok. dd akan membaca 1MB data ke dalam memori dan kemudian melanjutkan untuk menuliskannya di disk secara keseluruhan. Menggunakan ukuran blok yang sangat kecil Anda akan mendapatkan banyak overhead CPU. Menggunakan ukuran blok yang sangat besar dapat menyebabkan efek samping yang tidak terduga, misalnya jeda yang lebih lama dari aktivitas disk dan / atau penggunaan RAM yang besar. 1M atau 4M biasanya merupakan nilai yang baik ketika membuat disk dari ISO. Info lebih lanjut tentang ukuran blok: stackoverflow.com/questions/6161823/…
ApolloLV
Saya pikir membuat usb bootable adalah sesuatu yang jarang saya lakukan, tetapi ketika saya melakukannya, saya ingin melakukannya dengan benar. Ukuran blok yang lebih kecil mungkin memakan waktu lebih lama, tetapi apakah itu masalah? Nggak.
Marc
2
@ Mark - Satu-satunya masalah adalah kecepatan, ukuran blok yang lebih kecil tidak lebih atau kurang rawan kesalahan daripada ukuran blok yang lebih besar dan dengan demikian ukuran blok yang lebih kecil! = "Dilakukan dengan benar". Dilakukan dengan benar berarti memeriksa md5sum dari iso dan mengkonfirmasi md5sum dari gambar yang ditulis. Setelah Anda mengkonfirmasi m5dsums, Anda tahu itu dilakukan dengan benar.
Panther
28

Pertama, unmount perangkat USB dan kemudian gunakan lsblkuntuk memverifikasi perangkat.

Kadang-kadang (biasanya file iso yang lebih lama) dd tidak cukup dan pendrive tidak bisa boot. Dalam hal ini, Anda mungkin perlu menginstal syslinux:

sudo apt-get install syslinux

dan kemudian jalankan perintah berikut:

sudo mkfs -t vfat -I /dev/sdX

Anda ingin menjalankan perintah terakhir itu /dev/sdXdan tidak /dev/sdX1 .

Kemudian, lanjutkan dengan perintah berikut:

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

atau, untuk melihat kemajuan penulisan gambar:

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

atau alih-alih dd, Anda bisa menggunakan cat:

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

Ingatlah untuk mengeluarkan perintah sinkronisasi untuk membersihkan cache tulis

sync

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

mchid
sumber
Saya perlu menyebutkan bahwa bagi saya segalanya gagal, tetapi ini berhasil - saya memilih catperintah.
Digital Dracula
Bagi mereka yang bersikeras bahwa itu ddsaja sudah cukup, saya juga membutuhkan ini untuk bekerja.
GuiRitter
Jika Anda menginginkan alat yang digunakan ddketika ISO adalah hybrid dan mount, salin file ISO + instal SYSLINUX ketika ISO tidak, gunakan bootisosaja.
Jules Randolph
1
Bisakah Anda menjelaskan apa yang sebenarnya dilakukan masing-masing perintah ini? apa gunanya membuat sistem file vfat pada perangkat, dan kemudian segera menimpanya dengan isi file iso? Apa yang isohybridsebenarnya dilakukan? apakah itu memodifikasi ISO dalam beberapa cara?
cheshirekow
10

Jika dengan "pihak ketiga" yang Anda maksud "gui", saya sarankan skrip ringan bernama bootiso setelah jawaban Avinash Raj , karena ddtidak selalu berfungsi. Kelebihannya adalah sangat aman (melakukan banyak pemeriksaan keamanan agar tidak mengacaukan sistem), mudah dipasang dan portabel.

Juga, bootisoakan memeriksa file ISO untuk memilih dari dua mode: image-copy ( dd) ketika file ISO adalah hybrid, yang ramah-USB. Dan mode mount-rsync ketika file ISO non-hybrid, dalam hal ini bootloader SYSLINUX akan diinstal secara otomatis jika didukung [informasi lebih lanjut tentang perilaku otomatis ].

Bagaimana cara menggunakannya

Opsi pertama, cukup berikan ISO sebagai argumen pertama dan Anda akan diminta untuk memilih drive di antara daftar yang diekstrak dari lsblk:

bootiso myfile.iso

Atau berikan secara eksplisit perangkat USB:

bootiso -d /dev/sde myfile.iso

Instal cepat

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

Lihat dalam aksi:

Jules Randolph
sumber
1
Saya setuju, ini adalah skrip yang sangat bagus yang mengeluarkan bit menakutkan dari proses. Lebih detail di sini: tecmint.com/create-bootable-usb-in-linux-commandline
kr37
Bahkan memiliki dukungan untuk Windows 10 Okt 2018 karena mendukung "wim splitting" file "install.wim" (menggunakan perintah "wimlib-imagex") yaitu> 4Gb dan sebaliknya tidak dapat disimpan pada FAT32.
mevdschee
7
$ dd if=ubuntu-14.04.1-desktop-amd64.iso of=/dev/sdX bs=1MB

Jangan gunakan jalur untuk menggigit.

  1. Gunakan cdperintah untuk menuju ke folder yang berisi file .iso
  2. gunakan perintah dd if=FILE NAME HERE.iso of=/dev/sdX bs=1MB
  3. Tunggu hingga output konsol terlihat seperti ini:

    1028+1 records in
    1028+1 records out
    1028653056 bytes (1.0 GB) copied, 55.4844 s, 18.5 MB/s
    
  4. Boot dari usb.

Catatan: Pastikan Anda menulis ke perangkat yang benar usb tidak akan selalu dipasang di: di dev/sdXmana X dapat berupa huruf apa pun.

Alexander Stamos
sumber
2
apa pentingnya bs = 1MB dalam perintah dd ???
juggernauthk108
1
@ juggernaut1996 tidak ada. Ini ukuran blok untuk digunakan saat menyalin. Karena tidak ada argumen jumlah yang diberikan, maka akan menyalin seluruh input dalam blok 1MB. Itu bisa dihapus.
sjbx
"Jangan gunakan jalur untuk menggigit" adalah informasi yang salah. Proses itu sendiri tidak memanggang komponen jalur ke dalam gambar yang disalin dalam langkah apa pun, jadi itu tidak relevan jika Anda menavigasi ke direktori yang berisi gambar ISO Anda atau hanya memberikan path lengkap. Selain itu, dd dapat menerima input dari stdin juga, jadi Anda dapat menyalurkan dua dd ke satu sama lain untuk memastikan tidak ada jalur yang dimasukkan ke dalam gambar.
Gabor Garami
Itu hanya akan berfungsi untuk hybrid-ISO, yang mengisi sebagian besar kasus saat ini, tetapi ada beberapa pengecualian seperti UltimateBootCD. Gunakan bootisosebagai gantinya.
Jules Randolph
-5

Coba ini, dan jangan pernah gagal saya untuk 100+ kali:

Format kartu:

$ sudo mkfs.vfat -F32 /dev/sdx

Pasang gambar ISO:

$ sudo mount ubuntu.iso /mnt

Salin konten ke kartu:

$ sudo cp -rvf /mnt/* /SD_CardMountPoint

Kemudian:

  • ganti nama isolinuxfolder menjadisyslinux
  • ganti nama syslinux/isolinux.cfgmenjadisyslinux/syslinux.cfg
  • ganti nama syslinux/isolinux.binmenjadisyslinux/syslinux.bin
  • Lari syslinux -s /dev/sdx
Nooty
sumber
4
-1. Apakah Anda bahkan menguji ini? sudo cp -rvf /mnt/* /dev/sdxtidak akan berfungsi (atau setidaknya tidak melakukan apa yang Anda inginkan). Anda tidak menyalin file ke perangkat mentah ( /dev/). Sebagai gantinya, Anda harus memasang kartu dan menyalin isi file ISO ke kartu (titik mount ke titik mount). Dan apa yang salah dengan jawaban yang diterima saat ini yang memiliki pendekatan yang sama.
gertvdijk