Boot dari USB stick / drive eksternal?

44

Saya tahu itu tidak mungkin untuk langsung boot dari USB stick / drive eksternal, tetapi Anda harus boot dari kartu SD dan kemudian perangkat eksternal dapat mengambil alih. Apa cara termudah dan disukai untuk mengatur ini, karena itu boot dari kartu SD dan kemudian biarkan perangkat eksternal mengambil alih?

stefan.at.wpf
sumber

Jawaban:

37

Jika Anda memiliki OS yang sudah berjalan pada Pi, maka pertama-tama akan berguna untuk mengetahui apakah perangkat USB didukung. Anda dapat melakukan ini dengan memasangnya seperti biasa:

mount /dev/sda1 /mnt 

Jika itu gagal maka Anda tidak akan dapat menggunakan perangkat USB sebagai partisi root tanpa mengaktifkan modul kernel untuk itu. Dan untuk itu Anda perlu mengkompilasi kernel Anda sendiri.

Jika sudah mencukupi maka harus berfungsi dengan baik dengan mengutak-atik parameter boot yang digunakan Pi:

Pada gambar yang ada, buka cmdline.txt, yang dapat ditemukan di partisi boot, dan masukkan baris berikut:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 
root=/dev/sda1 rootfstype=ext4 rootwait text

Yang harus Anda lakukan adalah mem-flash gambar itu ke kartu SD dan boot Pi. Jika semuanya baik-baik saja, /dev/sda1haruslah lokasi drive USB saat Pi melakukan booting, dan karenanya harus berusaha menggunakan lokasi itu sebagai root. The rootwaitparameter yang penting karena akan membuat proses boot menggantung sampai USB drive diakui. Tanpanya Pi mungkin mengeluh bahwa lokasi itu tidak ada.

Saya sarankan Anda menyalin partisi root dari gambar Raspberry Pi yang ada ke drive USB Anda dan menggunakannya untuk boot dari.

Beri tahu saya jika Anda membutuhkan informasi lebih lanjut.

Jivings
sumber
+1 Jawaban bagus. Bukankah seharusnya console=...sudah ada di sana?
Alex Chamberlain
2
Juga, dapatkah Anda menggunakan UUID di baris perintah?
Alex Chamberlain
Ya saya berikan seluruh file dan di mana Anda berbicara tentang menggunakan UUID?
Jivings
3
Terima kasih banyak Jivings, saya "mem-flash" gambar resmi ke stik USB saya, lalu menyalin barang-barang dari partisi FAT ke kartu SD dan menyesuaikan cmdline.txt. Dalam kasus saya, partisi root adalah / dev / sda2, karena / dev / sda1 adalah partisi boot (tidak terpakai) pada usb stick. Saya tidak perlu rootwait dalam kasus saya, tetapi senang mengetahui parameter ini!
stefan.at.wpf
@ stefan.at.wpf (dan Jivings) Anda dapat menggunakan UUID alih-alih /dev/sdx- setidaknya di /etc/fstab/- maka tidak masalah jika xperubahannya.
Alex Chamberlain
4

Cara termudah untuk mengatur ini adalah dengan menggunakan BerryBoot . Ini mendukung instalasi ke, atau dari, satu atau lebih gambar pada stik USB (atau pada kartu SD itu sendiri) di luar kotak melalui antarmuka GUI yang bagus.

Untuk mengaturnya, yang harus Anda lakukan adalah menyalin ~ 70MB file instal ke kartu SD yang diformat FAT32, masukkan ke perangkat Anda dan boot. Bahkan memiliki daftar gambar yang telah dikonfigurasikan yang dapat secara otomatis diunduh dan diinstal untuk Anda melalui koneksi ethernet atau wi-fi.

Anda kemudian memilih OS yang Anda ingin boot secara default dari gambar yang tersedia, dan jika Anda ingin menambahkan gambar baru atau mengubah default di kemudian hari Anda cukup tekan enter selama proses boot untuk mengkonfigurasi ulang!

Nathan Dunn
sumber
pindahkan gambar ke kartu SD? Saya pikir kami ingin menginstalnya pada USB stick?
Suhaib
Seperti yang dikatakan OP, tidak mungkin untuk boot langsung dari stik USB pada Raspberry Pi - Anda memerlukan kartu SD dengan bootloader terpasang yang dapat menyerahkan prosesnya ke perangkat lain setelah dihidupkan.
Nathan Dunn
2

ok, untuk mengklarifikasi -

lebih lanjut ke jawaban @Jivings -

Ada beberapa cara yang dapat Anda gunakan untuk merujuk ke disk di fstab. Menggunakan / dev / sdXX mungkin tidak selalu aman, karena urutan yang muncul disk scsi mungkin tidak dijamin.

Apa yang saya tidak tahu, adalah jika konfigurasi boot mengerti apa pun kecuali label perangkat dasar. "root = / dev / sda1" adalah abstraksi, jadi dalam teori root = LABEL = TEST mungkin bekerja. Saya perlu menyelidiki.

Saya minta maaf jika saya tidak jelas. Saya punya beberapa keahlian yang harus saya lakukan dalam menjelaskan linux kepada orang baru, tentu saja.

Nox
sumber
1
Jivings: bisakah Anda menjelaskan beberapa parameter dalam contoh baris perintah Anda untuk kami nubies? Terima kasih.
Michael Moriarty
Dia tidak pernah menyebut fstab. Nama perangkat / partisi target adalah parameter kernel. Saya percaya konvensi penamaan lain seperti UUID dimungkinkan dengan kernel modern, terutama jika mereka memiliki modul initrd / initramfs.
jiggunjer