Pada sistem berbasis ARM dalam kebanyakan kasus, salah satu dari dua format untuk image boot digunakan: a) kernel standar Linux format zImage (“vmlinuz”) bersama dengan ramdisk awal Linux standar (“initrd.gz”) atau b) kernel format uImage (“uImage”) bersama dengan ramdisk awal yang sesuai (“uInitrd”).
uImage/uInitrd adalah format image yang dirancang untuk firmware U-Boot yang digunakan pada banyak sistem berbasis ARM (kebanyakan yang 32-bit). Versi U-Boot yang lebih lama hanya dapat mem-boot berkas dalam format uImage/uInitrd, jadi ini sering digunakan pada sistem armel yang lebih lama. Versi U-Boot yang lebih baru dapat - selain mem-boot uImage/uInitrd - juga mem-boot image kernel Linux standar dan ramdisk, tetapi sintaks perintah untuk melakukan itu sedikit berbeda dari itu untuk mem-boot uImages.
Untuk sistem yang menggunakan kernel multiplatform, selain kernel dan ramdisk awal diperlukan apa yang disebut berkas device-tree (atau blob device-tree, “dtb”). Ini spesifik untuk setiap sistem yang didukung dan berisi deskripsi perangkat keras tertentu. dtb harus disediakan pada perangkat oleh firmware, tetapi dalam praktiknya yang lebih baru sering perlu dimuat.
Tarball netboot (Bagian 5.1.3.2, “Tarball netboot pra-built”), dan image kartu SD penginstal (Bagian 5.1.5, “Menggunakan image kartu SD pra-built dengan penginstal”) menggunakan konsol baku (spesifik platform) yang ditentukan oleh U-Boot dalam variabel “console” . Dalam kebanyakan kasus itu adalah konsol serial, jadi pada platform tersebut Anda secara baku memerlukan kabel konsol serial untuk menggunakan penginstal.
Pada platform yang juga mendukung konsol video, Anda dapat memodifikasi variabel “console” U-Boot yang sesuai jika Anda ingin penginstal memulai di konsol video.
Boot dari jaringan mengharuskan Anda memiliki koneksi jaringan dan server boot jaringan TFTP (dan mungkin juga server DHCP, RARP, atau BOOTP untuk konfigurasi jaringan otomatis).
Pengaturan sisi server untuk mendukung boot jaringan dijelaskan dalam Bagian 4.3, “Mempersiapkan Berkas untuk Boot Jaringan TFTP”.
Boot jaringan pada sistem menggunakan firmware U-Boot terdiri dari tiga langkah: a) mengkonfigurasi jaringan, b) memuat image (kernel/ramdisk awal/dtb) ke dalam memori dan c) benar-benar mengeksekusi kode yang dimuat sebelumnya.
Pertama, Anda harus mengkonfigurasi jaringan, baik secara otomatis melalui DHCP dengan menjalankan
setenv autoload no dhcp
atau secara manual dengan mengatur beberapa variabel
lingkungan setenv ipaddr <alamat ip klien> setenv netmask <netmask> setenv serverip <alamat ip server tftp> setenv dnsip <alamat ip nameserver> setenv gatewayip <alamat ip dari gateway default>
Jika mau, Anda dapat membuat pengaturan ini permanen dengan menjalankan
saveenv
Setelah itu Anda perlu memuat image (kernel/ramdisk awal/dtb) ke dalam memori. Ini dilakukan dengan perintah tftpboot, yang harus dilengkapi dengan alamat di mana image harus disimpan dalam memori. Sayangnya peta memori dapat bervariasi dari sistem ke sistem, sehingga tidak ada aturan umum alamat mana yang dapat digunakan untuk ini.
Pada beberapa sistem, U-Boot menetapkan satu set variabel lingkungan dengan alamat pemuatan yang sesuai: kernel_addr_r, ramdisk_addr_r, dan fdt_addr_r. Anda dapat memeriksa apakah mereka didefinisikan dengan menjalankan
printenv kernel_addr_r ramdisk_addr_r fdt_addr_r
Jika tidak didefinisikan, Anda harus memeriksa dokumentasi sistem Anda untuk nilai yang sesuai dan mengaturnya secara manual. Untuk sistem berbasis SOC ALLWINNER SunXi (misalnya Allwinner A10, nama arsitektur “sun4i” atau Allwinner A20, nama arsitektur “sun7i”), Anda dapat misalnya menggunakan nilai-nilai berikut:
setenv kernel_addr_r 0x46000000 setenv fdt_addr_r 0x47000000 setenv ramdisk_addr_r 0x48000000
Ketika alamat pemuatan ditentukan, Anda dapat memuat image ke dalam memori dari server tftp yang ditentukan sebelumnya dengan
tftpboot ${kernel_addr_r} <nama berkas dari image kernel> tftpboot ${fdt_addr_r} <nama berkas dari dtb> tftpboot ${ramdisk_addr_r} <nama berkas dari image ramdisk awal>
Bagian ketiga adalah mengatur baris perintah kernel dan benar-benar mengeksekusi kode yang dimuat. U-Boot meneruskan konten variabel lingkungan “bootargs” sebagai baris perintah ke kernel, sehingga parameter apa pun untuk kernel dan penginstal - seperti perangkat konsol (lihat Bagian 5.3.1, “Boot konsol serial”) atau opsi preseed (lihat Bagian 5.3.2, “Parameter Pemasang Debian” dan Lampiran B, Mengotomatiskan instalasi menggunakan preseed) - dapat diatur dengan perintah seperti
setenv bootargs console=ttyS0,115200 rootwait panic=10
Perintah yang tepat untuk mengeksekusi kode yang dimuat sebelumnya tergantung pada format image yang digunakan. Dengan uImage/uInitrd, perintahnya adalah
bootm ${kernel_addr_r} ${ramdisk_addr_r} $ dan{fdt_addr_r}
dengan image Linux native itu adalah
bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}
Catatan: Saat mem-boot image linux standar, penting untuk memuat image ramdisk awal setelah kernel dan dtb saat U-Boot mengatur variabel filesize ke ukuran berkas terakhir yang dimuat dan perintah bootz memerlukan ukuran image ramdisk agar berfungsi dengan benar. Dalam hal mem-boot kernel khusus platform, yaitu kernel tanpa device-tree, cukup hilangkan parameter ${fdt_addr_r}.
Debian menyediakan tarball pra-built ( .../images/netboot/netboot.tar.gz ) yang dapat dengan mudah dibongkar di server tftp Anda dan berisi semua berkas yang diperlukan untuk netboot. Ini juga termasuk skrip boot yang mengotomatiskan semua langkah untuk memuat penginstal. Versi U-Boot modern berisi fitur autoboot tftp yang menjadi aktif jika tidak ada perangkat penyimpanan lokal yang dapat di-boot (MMC/SD, USB, IDE/SATA/SCSI) dan kemudian memuat skrip boot ini dari server tftp. Prasyarat untuk menggunakan fitur ini adalah Anda memiliki dhcp server di jaringan Anda yang menyediakan alamat server tftp ke klien.
Jika Anda ingin memicu fitur autoboot tftp dari baris perintah U-Boot, Anda dapat menggunakan perintah berikut:
jalankan bootcmd_dhcp
Untuk memuat bootscript secara manual yang disediakan oleh tarball, Anda dapat menjalankan perintah berikut di prompt U-Boot:
setenv autoload no dhcp tftpboot ${scriptaddr} /debian-installer/armhf/tftpboot.scr source ${scriptaddr}
Banyak versi U-Boot modern memiliki dukungan USB dan memungkinkan boot dari perangkat penyimpanan massal USB seperti flash disk USB. Sayangnya langkah-langkah tepat yang diperlukan untuk melakukan itu dapat bervariasi sedikit dari perangkat ke perangkat.
U-Boot v2014.10 telah memperkenalkan penanganan baris perintah umum dan kerangka autoboot. Hal ini memungkinkan membangun image boot generik yang bekerja pada sistem apa pun yang menerapkan kerangka kerja ini. debian-installer
mendukung instalasi dari flash disk USB pada sistem tersebut, tetapi sayangnya belum semua platform mengadopsi kerangka kerja baru ini.
Untuk membuat flash disk USB yang dapat di-boot untuk menginstal Debian, bongkar tarball media hd (lihat Bagian 4.2.1, “Di Mana Menemukan Berkas Instalasi”) ke flash disk USB yang diformat dengan sistem berkas yang didukung oleh versi U-Boot di perangkat Anda. Untuk versi U-Boot modern, salah satu dari FAT16/FAT32/ext2/ext3/ext4 biasanya berfungsi. Kemudian salin berkas image ISO dari CD atau DVD instalasi pertama Debian ke flash disk.
Kerangka autoboot dalam versi U-Boot modern bekerja mirip dengan opsi urutan boot di PC BIOS/UEFI, yaitu memeriksa daftar perangkat boot yang mungkin untuk image boot yang valid dan memulai yang pertama ditemukannya. Jika tidak ada sistem operasi yang diinstal, mencolokkan flash disk USB dan menyalakan sistem akan menyebabkan dimulainya penginstal. Anda juga dapat memulai proses USB-boot kapan saja dari prompt U-Boot dengan memasukkan perintah “run bootcmd_usb0”.
Salah satu masalah yang bisa muncul saat boot dari flash disk USB ketika menggunakan konsol serial adalah ketidakcocokan baudrate konsol. Jika variabel konsol didefinisikan dalam U-Boot, skrip boot debian-installer
secara otomatis meneruskannya ke kernel untuk mengatur perangkat konsol utama dan, jika berlaku, baudrate konsol. Sayangnya penanganan variabel konsol bervariasi dari platform ke platform - pada beberapa platform, variabel konsol mencakup baudrate (seperti di “console=ttyS0,115200”), sementara pada platform lain variabel konsol hanya berisi perangkat (seperti di “console=ttyS0”). Kasus terakhir mengarah ke keluaran konsol yang kacau ketika baudrate baku berbeda antara U-Boot dan kernel. Versi U-Boot modern sering menggunakan baud 115200 sementara kernel masih baku ke baud 9600 tradisional. Jika ini terjadi, Anda harus mengatur variabel konsol secara manual agar berisi baudrate yang benar bagi sistem Anda dan kemudian memulai penginstal dengan perintah “run bootcmd_usb0”.
Untuk sejumlah sistem, Debian menyediakan image kartu SD yang berisi U-Boot dan debian-installer
. Image ini disediakan dalam dua varian - satu untuk mengunduh paket perangkat lunak melalui jaringan (tersedia di
.../images/netboot/SD-card-images/
) dan satu untuk instalasi luring menggunakan CD/DVD Debian (tersedia di
.../images/hd-media/SD-card-images/
). Untuk menghemat ruang dan bandwidth jaringan, image terdiri dari dua bagian - bagian yang bergantung pada sistem bernama “firmware.<system-type>.img.gz”, dan bagian independen sistem bernama “partition.img.gz”.
Untuk membuat image lengkap dari dua bagian pada sistem Linux, Anda dapat menggunakan zcat sebagai berikut:
zcat firmware.<system-type>.img.gz partition.img.gz > complete_image.img
Pada sistem Windows, Anda harus terlebih dahulu mendekompresi kedua bagian secara terpisah, yang dapat dilakukan misalnya dengan menggunakan 7-Zip, dan kemudian menggabungkan bagian yang didekompresi bersama-sama dengan menjalankan perintah
copy /b firmware.<system-type>.img + partition.img complete_image.img
di jendela CMD.exe Windows.
Tulis image yang dihasilkan ke kartu SD, misalnya dengan menjalankan perintah berikut pada sistem Linux:
cat complete_image.img > /dev/SD_CARD_DEVICE
Setelah mencolokkan kartu SD ke sistem target dan menyalakan sistem, penginstal dimuat dari kartu SD. Jika Anda menggunakan varian hd-media untuk instalasi luring, Anda harus menyediakan installer dengan akses ke CD/DVD Debian pertama pada media terpisah, yang dapat misalnya menjadi CD/DVD image ISO pada flash disk USB.
Ketika Anda sampai pada langkah partisi di penginstal (lihat Bagian 6.3.4, “Partisi dan Pemilihan Titik Kait”), Anda dapat menghapus atau mengganti partisi sebelumnya pada kartu. Setelah penginstal dimulai, ia berjalan sepenuhnya di memori utama sistem dan tidak perlu mengakses kartu SD lagi, sehingga Anda dapat menggunakan kartu lengkap untuk menginstal Debian. Cara termudah untuk membuat tata letak partisi yang tepat pada kartu SD adalah dengan membiarkan penginstal secara otomatis membuatnya untuk Anda (lihat Bagian 6.3.4.2, “Pemartisian Terpandu”).