Bagaimana saya bisa membuat Raspberry Pi saya menggunakan server NFS untuk sistem file root, bukan kartu SD?
Saya ingin dapat mengatur Raspberry Pi saya untuk memiliki sistem file root pada mesin jarak jauh melalui NFS untuk tujuan kinerja / cadangan / pengembangan. Bagaimana saya bisa melakukan ini?
Jawaban:
Versi singkat
Anda masih memerlukan kartu SD untuk booting tahap awal, tetapi setelah itu tidak ada kecuali / boot yang akan membutuhkan kartu SD.
Detail
Saya hanya melakukan ini pada mesin Linux. Secara teori dimungkinkan pada mesin apa pun yang dapat mengekspor sistem file NFS.
Cara termudah untuk menyiapkan sistem file root adalah menyalin yang disediakan oleh gambar yang ada. Saya menggunakan gambar resmi Debian 6 sebagai titik awal saya:
Pasang partisi root dari gambar itu menggunakan perangkat loopback. Anda perlu offset ke dalam gambar untuk memulai partisi root, dalam hal ini ini adalah partisi kedua dalam gambar:
Partisi kedua dimulai pada blok (atau sektor) 157696 sehingga offsetnya adalah (512 * 157696) = 80740352:
Dengan gambar terpasang Anda mungkin ingin menyalin ini di tempat yang lebih permanen untuk menghindari menggunakan perangkat loopback selamanya. Saya membuat volume LVM2 dan memasangnya di / mnt / rpi-root, jadi saya lakukan:
Kita perlu mengekspor filesystem sekarang, jadi kita perlu menambahkan baris seperti:
ke / etc / ekspor pada server NFS, di mana 192.168.1.2 adalah alamat Raspberry Pi. Setelah menambahkan, jalankan
exportfs -rv
untuk membaca kembali daftar ekspor. (Lihat ekspor (5) untuk opsi lebih lanjut termasuk wildcard / subnet daripada host individual)Anda juga bisa melewatkan langkah ini dan membangun sistem file root dari awal menggunakan sesuatu seperti
multistrap
.Sekarang kita perlu membangun kartu SD yang melakukan booting dan booting tahap awal menggunakan share NFS ini. Saya melakukan ini dengan mengambil partisi pertama dari gambar resmi dan menyalinnya ke kartu SD, di mana kartu SD adalah / dev / sdx:
dan karena ini hanya menyalin partisi pertama yang mengedit tabel partisi dengan fdisk untuk menghapus dua partisi yang tidak kita salin.
Setelah itu saya memasang partisi dari kartu SD dan mengedit file cmdline.txt dari itu untuk membaca:
di mana 192.168.1.1 adalah alamat server NFS. Jika Anda tidak ingin menggunakan DHCP, Anda dapat mengatur cara alternatif alamat IP, lihat dokumen ini untuk rincian lebih lanjut.
Setelah ini selesai, Anda dapat melepas kartu SD dan mem-boot Rapsberry Pi Anda dengan root NFS. Anda juga dapat memanipulasi sistem file dari sisi server, atau klien NFS lain sesuai keinginan Anda (mis. QEMU + binfmt_misc , snapshot LVM, sistem cadangan, dll.)
Hal-hal opsional
Jika Anda menggunakan ip = dhcp Anda mungkin perlu mengomentari baris:
di / etc / network / interfaces (/ mnt / rpi-root / etc / network / interfaces) untuk menghindari situasi di mana swapping antara DHCP booting awal dan yang biasa nanti menyebabkan pesan seperti:
Jika Anda ingin mem-boot banyak perangkat dari root yang sama, Anda perlu menyediakan / "tmp" (mungkin tmpfs) dan seluk-beluk lainnya untuk menghindari masalah dengan beberapa mesin yang mencoba menulis ke file yang sama.
sumber
/home/user/Documents/raspisRootFolder
dan klienfstab
hanya menunggangi semuanya/
?/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
dari/etc/fstab
, meskipun saya pikir itu akan gagal tanpa menyebabkan masalah apapun jika Anda meninggalkannya di.