Nonaktifkan sementara memperluas sistem file saat boot pertama

13

Saya ingin membuat gambar Raspberry Pi internal yang didasarkan pada Raspbian Lite yang sudah dikonfigurasi dengan lokal yang tepat, zona waktu, dll. Sayangnya bagi saya, rilis gambar Raspbian saat ini secara otomatis mengubah ukuran sistem file, kemudian reboot.

Saya ingin menghindari kerepotan perampingan filesystem dengan mencegah pengubahan ukuran dari yang pernah terjadi. Bagaimana saya mengedit gambar setelah pembakaran seperti untuk sementara menonaktifkan ukuran sistem file otomatis?

Diedit untuk memperjelas efek harus dapat dibalik; yaitu, saya ingin gambar khusus saya untuk diperluas saat boot pertama.

patricktokeeffe
sumber
Ini mungkin bukan solusi yang ideal tetapi Anda telah mempertimbangkan untuk menggunakan kartu 4GB kecil di mana ini tidak akan menimbulkan masalah seperti itu.
Steve Robillard
2
Ide yang menarik .. membakar ke kartu kecil, secara efektif membatasi ukuran. Saya lebih suka solusi langsung tetapi ini adalah alternatif yang layak. Terima kasih
patricktokeeffe
2
Itu sangat menjengkelkan. Saya sangat yakin ini dilakukan melalui beberapa skrip boot self-effacing sederhana ala cara raspi-configdijalankan pada boot pertama, dan akan mudah untuk menonaktifkan. Saya dapat melihat tetapi saya harus mengunduh gambar baru, yang terakhir saya miliki adalah dari bulan Mei. Periksa kembali dalam beberapa jam.
goldilocks

Jawaban:

13

Ada dua bagian mekanisme yang bertanggung jawab untuk ini pada Raspbian; kemungkinan ide terbaik adalah merawat kedua bagian jika diaktifkan.

Yang pertama adalah bahwa yang asli /boot/cmdline.txttermasuk ini:

init=/usr/lib/raspi-config/init_resize.sh

Mengacu pada skrip dengan path tersebut pada partisi root, yang akan digunakan sebagai proses init saat boot. Tanpa bit itu, itu akan default ke nilai yang dibangun ke dalam kernel /sbin/init, yang pada Raspbian adalah tautan simbolis /lib/systemd/systemd.

Dengan menghapus bagian itu cmdline.txt, sistem kemudian harus boot secara normal.

Apa yang sebenarnya dilakukan skrip itu adalah mengubah ukuran partisi pada kartu SD. Ini adalah proses yang berbeda dari mengubah ukuran sistem file di partisi, 1 yang adalah apa yang terjadi selanjutnya.

Cara yang terjadi adalah sistem segera reboot secara normal (yaitu, melalui systemd) dan init.dskrip diatur untuk memicu sejak awal, yang harus dihapus dari partisi kedua:

/etc/init.d/resizefs_once

Dan tautan simbolis ke sana, yang juga harus dihapus:

/etc/rc3.d/S01resizefs_once

Anda dapat menyimpan salinan untuk digunakan nanti jika ingin, tetapi raspi-configdapat membuatnya lagi untuk Anda (tertanam di raspi-configskrip shell). Jika ini benar-benar berjalan, itu menghapus dirinya sendiri, jadi itu tidak akan terjadi lagi.

Yang juga dilakukannya adalah mengubah ukuran sistem file di partisi yang baru diubah ukurannya.

Tidak ada salahnya dilakukan jika hanya satu atau bagian lainnya terjadi; dalam kasus pertama Anda berakhir dengan filesystem yang tidak mengisi partisi yang diperbesar, dalam kedua tidak ada yang terjadi, karena filesystem sudah mengisi partisi.

Jika nanti Anda gunakan raspi-configuntuk memperbesar sistem file, itu mengubah ukuran partisi segera, kemudian mengatur skrip init (seperti yang telah disebutkan).

Mengedit cmdline.txtpartisi pertama adalah sederhana di komputer mana pun karena merupakan partisi VFAT. Menghapus init.dfile memerlukan sistem yang dapat mengakses dan mengedit filesystem ext4.

Kedua tugas tersebut dapat dilakukan untuk file gambar itu sendiri sebelum membakar kartu; untuk memasang dan memodifikasi gambar Raspbian pada sistem GNU / Linux, lihat di sini . Ada T&J paralel untuk Windows .

Ini juga dapat dibalik, tetapi Anda harus mengembalikan kedua bagian mekanisme seperti yang baru saja dijelaskan, karena yang pertama tidak termasuk pementasan yang otomatis.


  1. Meskipun pesan kesalahan dari skrip itu bisa dibilang membingungkan istilah-istilah tersebut dengan mengklaim gagal mengubah ukuran sistem file root , ketika apa yang sebenarnya gagal dilakukan adalah mengubah ukuran partisi dengan sistem file root berada. Melakukan satu tidak secara otomatis mencapai yang lain.
goldilocks
sumber
1
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Ghanima
@ goldilock menonaktifkan init=/usr/lib/raspi-config/init_resize.shdari /boot/cmdline.txtkarya di mate ubuntu juga dan tampaknya cukup dengan sendirinya. Saya memiliki gambar ubuntu mate 4GB yang dipasangkan ke kartu sd 32 GB dan memegang ukuran partisi pada ukuran gambar aslinya. Juga /etc/init.d/resizefs_oncedan /etc/rc3.d/S01resizefs_oncejangan ada setelah boot pertama di mate ubuntu.
sejak
Hanya untuk konfirmasi, akan memulihkan baik cmdline.txtdan init.ddan rc3.dberkas dan link yang memungkinkan boot berikutnya untuk mengubah ukuran dengan sendirinya atau akan aku untuk menjalankan raspi-configdan menjalankannya secara manual?
Oxwivi
@Oxwivi Seharusnya, ya. Saya telah mengklarifikasi seluruh posting ini dan membuat komentar eksplisit tentang itu di bagian akhir.
goldilocks
Ya terima kasih. Juga dari catatan, IDK sejak versi mana tetapi setidaknya versi terbaru tidak membawa referensi skrip ukuran yang Anda sebutkan di luar cmdline.txt. Saya mem-boot gambar Raspbian menggunakan systemd-nspawndan masih mendapat log kesalahan yang mencoba mengubah ukuran setelah menghapus cmdline.txtsesuatu.
Oxwivi