Berkas ISO yang sudah terverifikasi tidak berguna selama masih berbaring di harddisk, karena firmware komputer tidak tahu cara mengeksekusinya dari sana. Tugas kita sekarang adalah menyalin isi ISO ke flashdisk sehingga firmware membacanya sebagai perangkat boot. Ada banyak alat untuk ini; kita mulai dari dd yang tersedia di semua sistem Linux, lalu alternatif grafis balenaEtcher, dan Ventoy yang mampu menampung banyak ISO sekaligus. Karena salah satu langkah menimpa seluruh isi flashdisk, kita juga akan berlatih mengenali perangkat target dengan cermat sebelum menulis.

Mengenal Isi Sebuah Berkas ISO #

Berkas ISO bukan sekadar folder ter-zip; format ISO 9660 adalah citra piringan optik yang memuat tabel partisi, bootloader, dan berkas sistem secara berurutan. Penanda standarnya berupa teks CD001 yang selalu berada di offset 32769 (heksadesimal 0x8001) — posisi tetap yang diperiksa firmware dan berbagai alat. Kita bisa mengecek penanda itu pada berkas apa pun dengan file:

bash
truncate -s 1M iso-latihan.iso
printf 'CD001' | dd of=iso-latihan.iso bs=1 seek=32769 conv=notrunc
file iso-latihan.iso

Output yang Dihasilkan:

text
iso-latihan.iso: ISO 9660 CD-ROM filesystem data

Mari kita telaah baris-baris di atas:

  1. Baris 1 (truncate -s 1M ...): membuat berkas kosong 1 MiB yang berperan sebagai ISO mini; truncate membuat berkas tipis (sparse) yang tidak benar-benar memakan ruang.
  2. Baris 2 (printf 'CD001' | dd ...): menulis lima karakter penanda ke offset 32769. Opsi seek=32769 melompat ke offset tersebut, conv=notrunc menjaga ukuran berkas tidak terpotong.
  3. Baris 3 (file ...): mengenali isi berkas dan menyimpulkan formatnya ISO 9660 dari penanda yang barusan kita tanam.

Membuat bootable USB berarti menyalin citra seperti ini dari byte pertama sampai terakhir ke flashdisk — bukan menyalin berkas ISO ke dalam flashdisk seperti menyalin lagu. Firmware membaca sektor awal perangkat, dan salinan mentah adalah satu-satunya cara menempatkan bootloader tepat di sektor itu.

Mengenali Flashdisk dengan lsblk #

Sebelum menulis apa pun, kita harus yakin perangkat mana yang menjadi target. Perintah lsblk (bisa dijalankan langsung di terminal kita) mendaftar seluruh block device yang tersambung. Berikut contoh tampilan lsblk pada komputer dengan satu harddisk (sda) dan satu flashdisk (sdb) yang baru dicolokkan:

text
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 476.9G  0 disk
├─sda1   8:1    0   512M  0 part /boot/efi
└─sda2   8:2    0 476.4G  0 part /
sdb      8:16   1  14.9G  0 disk
└─sdb1   8:17   1  14.9G  0 part /media/budi/FLASHDISK

Dua petunjuk menunjuk sdb sebagai flashdisk: kolom RM bernilai 1 (removable) dan ukurannya 14.9G yang cocok dengan flashdisk 16 GB. Nama sdb berlaku untuk seluruh disk, sedangkan sdb1 adalah satu-satunya partisi di dalamnya. Bila flashdisk sedang ter-mount, lepas dulu mount-nya agar tidak ada proses lain yang menulis ke sana:

bash
sudo umount /dev/sdb1

Perintah dd menyalin berkas blok demi blok dari masukan ke keluaran. Bentuk yang dipakai untuk membuat bootable USB:

bash
sudo dd if=ubuntu-24.04.5-desktop-amd64.iso of=/dev/sdb bs=4M status=progress oflag=sync

Bedah tiap bagiannya:

  1. if=... (input file): berkas ISO sumber yang sudah diverifikasi pada Chapter Persiapan Instalasi.
  2. of=/dev/sdb (output file): seluruh flashdisk — bukan partisi sdb1 — karena bootloader harus ditempatkan mulai sektor pertama disk.
  3. bs=4M: ukuran blok penyalinan 4 MiB; blok besar membuat proses jauh lebih cepat daripada satu byte demi satu byte.
  4. status=progress: menampilkan perkembangan penyalinan di layar, karena tanpa opsi ini dd bekerja dalam diam total.
  5. oflag=sync: memaksa setiap blok benar-benar ditulis ke perangkat sebelum lanjut, mencegah isi tertinggal di cache saat kita mencabut flashdisk.

Karena dd sungguhan menimpa perangkat fisik, mari kita amati mekanismenya secara aman dengan berkas biasa sebagai pengganti flashdisk:

bash
printf 'byte-byte image iso contoh\n' > iso-sumber.iso
dd if=iso-sumber.iso of=usb-tiruan.img bs=4M status=progress oflag=sync
sha256sum iso-sumber.iso usb-tiruan.img

Output yang Dihasilkan:

text
22c180fc80c3567d2370bfe0513592a3bbbfa90ba8e94779b9f28fdf7aa3fbf0  iso-sumber.iso
22c180fc80c3567d2370bfe0513592a3bbbfa90ba8e94779b9f28fdf7aa3fbf0  usb-tiruan.img

Baris pertama membuat ISO mini, baris kedua menyalinnya ke usb-tiruan.img yang berperan sebagai flashdisk, dan baris ketiga menghitung checksum kedua berkas. Hash yang sama persis membuktikan salinan identik byte demi byte — persis yang dd lakukan pada flashdisk asli. Statistik records in/out yang dd cetak di layar tidak muncul di sini karena dicetak ke stderr, bukan stdout. Setelah proses nyata selesai, jalankan sync sekali lagi lalu cabut flashdisk; dokumentasi resmi dd ada di https://man7.org/linux/man-pages/man1/dd.1.html .

Alternatif Grafis: balenaEtcher dan Ventoy #

dd universal tetapi tanpa belas kasihan pada kesalahan ketik. balenaEtcher membungkus pekerjaan yang sama dalam tiga tombol: Flash from file untuk memilih ISO, Select target untuk memilih perangkat (daftar targetnya sudah disaring dari disk sistem), lalu Flash! — verifikasi hasil bahkan dijalankan otomatis setelah penyalinan.

Ventoy bekerja dengan cara yang berbeda: alat ini dipasang sekali ke flashdisk, dan setelah itu kita tinggal menyalin berbagai ISO ke flashdisk sebagai berkas biasa. Saat boot, menu Ventoy menampilkan daftar ISO tersebut untuk dipilih.

AlatCara kerjaKelebihan
ddmenyalin mentah dari terminalada di setiap Linux tanpa aplikasi tambahan
balenaEtcheraplikasi GUI tiga tombolmenyaring disk sistem, verifikasi otomatis
Ventoymemasang bootloader ke flashdiskmenampung banyak ISO sekaligus, cukup salin berkas

Flashdisk yang berisi ISO siap boot kini menunggu di saku. Langkah berikutnya adalah menyalakan komputer darinya dan menjalani alur instalasi sungguhan — materi Chapter Instalasi Linux di Komputer.