Linux dalam RAM: cara debirf
Apakah Anda ingin memiliki kecepatan disk absolut saat ini, bukan? Mari kita merevisi bagaimana hal itu dapat dilakukan dengan versi dan otomatisasi pada tahun 2018.
Dari moderator: sebuah artikel dalam bahasa Inggris datang kepada kami di Sandbox. Kami membacanya dan memutuskan untuk menerbitkannya sebagai percobaan hari Jumat. Jangan menilai dengan ketat, semua orang damai dan senang Jumat! Ayo datang bersama! Singkatnya, Dari Bawah Hati Aua.
Changelog:
- Bahasa artikel dikoreksi dalam bahasa Inggris
- repositori sampel diperkenalkan di github
- Menambahkan params uji
- tambah asciicast
Anda harus tahu sebelum menjalankan tutorial ini:
- linux penting
- perbedaan utama antara bash dan sh (debirf tertulis di sh, jadi saya sarankan untuk mengikuti style)
- cara memformat kunci usb (dengan cara apa pun)
- driver apa yang dibutuhkan untuk perangkat keras Anda (atau Anda dapat men-debug-nya via dmesg | lspci)
- cara mendapatkan tujuan tugas Anda melalui skrip
Anda dapat mengganti:
- surat usb dari
/dev/sdb
ke yang lain ( /dev/sdd
) - direktori kerja dari
/root/Projects/debirf/
ke pilihan Anda ( /home/username/Documents/debirf
) - mountpoint dari
/media/root/8B46-1189
ke /media/username/myflashdrive
Langkah-langkah persiapan
Mereka (opsional) mengaktifkan komponen yang tidak bebas untuk instalasi dasar. Selain itu, saya pikir, Anda akan memerlukan repositori yang tidak bebas.
- buka baris nomor 107 dari file
/usr/bin/debirf
seperti nano +107 $(which debirf)
- temukan fungsi
create_debootstrap
- temukan baris seperti
local OPTS="
- tambahkan
--components main,contrib,non-free
dalam tanda kurung
Mulai:
Bayangkan, flash drive kami:
- harus cepat, jadi disarankan untuk menggunakan kelas 8+, atau booting akan memakan waktu yang cukup
- / dev / sdb
- dibentuk
- dipasang di
/media/root/8B46-1189
. - direktori kerja kami
/root/Projects/debirf/
Instal debirf
apt-get install -yq debirf mtools genisoimage
- mtools diperlukan untuk membuat iso melalui debirf (tidak berfungsi, tetapi dibutuhkan)
- genisoimage diperlukan untuk membuat iso yang berfungsi nyata (opsional)
Mempersiapkan direktori kerja debirf
mkdir -p /root/Projects/debirf tar xzf /usr/share/doc/debirf/example-profiles/rescue.tgz -C /root/Projects/debirf cd /root/Projects/debirf/rescue
DEBIRF_LABEL="debirf-rescue" DEBIRF_SUITE=stretch DEBIRF_DISTRO=debian DEBIRF_MIRROR=http://ftp.ru.debian.org/debian/
Buat LiR
- Jalankan
debirf make .
dan pergi. Perlu banyak waktu, minimal 15 menit pada perangkat keras teratas. - Jalankan
debirf makeiso .
untuk membuat iso yang tidak berfungsi (diperlukan untuk file grub.cfg)
Uji itu
- Instal qemu
- untuk linux:
apt-get install -yq qemu
- untuk macos:
brew install qemu
- memutuskan sumber daya mana yang akan dialokasikan untuk VM
-smp 1
1 kernel sebenarnya-m 1G
1G memori
- tambahan
-nographic
akan meluncurkan VM di jendela terminal saat ini--enable-kvm
memungkinkan akselerasi perangkat keras-kernel vmlinuz-*
izin langsung lewat kernel-initrd *.cgz
akses langsung ke file .cgz dengan initramfs-append
memungkinkan memotong kernel kernel, berikut adalah parameter untuk berjalan tanpa shell grafis
Perintah untuk memulai mesin virtual:
qemu-system-x86_64 --enable-kvm -kernel vmlinuz-* -initrd *.cgz -append "console=tty0 console=ttyS0,115200n8" -m 1G -smp 1 -net nic,vlan=0 -net user -nographic
Sampel uji

Instal grub ke flash drive dan salin LiR di atasnya
Saya sarankan Anda menggunakan boot BIOS legacy dan paket grub-pc. Tidak diuji dengan UEFI, tetapi harus bekerja. Baris selanjutnya akan dilakukan:
- buat mount point (pada sistem bertenaga GUI diaktifkan auto-mount tidak diperlukan)
- pasang kunci usb ke titik pemasangan (pada sistem bertenaga GUI diaktifkan, pasang otomatis tidak diperlukan)
- instal grub
- salin file grub
- salin initramfs (sistem)
- salin vmlinuz (kernel)
- lepaskan kunci usb
- hapus mount point
mkdir -p /media/root/8B46-1189 mount /dev/sdb1 /media/root/8B46-1189 grub-install --boot-directory=/media/root/8B46-1189/boot /dev/sdb cp /root/Projects/debirf/rescue/iso/boot/grub/grub.cfg /media/root/8B46-1189/boot/grub/ cp /root/Projects/debirf/rescue/*.cgz /media/root/8B46-1189 cp /root/Projects/debirf/rescue/vmlinuz-* /media/root/8B46-1189 umount /media/root/8B46-1189 rm -rf /media/root/8B46-1189
Buat iso yang dapat di-boot (opsional)
- unduh isolinux.bin
- buat file konfigurasi isolinux
- buat iso
mkdir -p rescue/iso/isolinux/ wget -O rescue/iso/isolinux/isolinux.bin 'http://mirror.yandex.ru/centos/7/os/x86_64/isolinux/isolinux.bin' cat << EOF > rescue/iso/isolinux/isolinux.cfg TIMEOUT 5 DEFAULT lir LABEL lir LINUX /vmlinuz-4.9.0-7-amd64 INITRD /debirf-rescue_stretch_4.9.0-7-amd64.cgz EOF genisoimage -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -l -input-charset default -V LiR -A "Linux in RAM" -o rescue/rescue.iso rescue/iso/
Periksa hasilnya
- Instal QEMU hypervisor
apt-get install -yq qemu
- jalankan
qemu-system-x86_64 -enable-kvm -m 512 -hda /dev/sdb
- jika perintah sebelumnya gagal, hapus
-enable-kvm
- VM akan dimulai, di-boot dari kunci usb
- Anda harus melihat dua item menu, perbedaan pada akhirnya: konsol dan serial. Pilih entri pertama.
- dalam ~ menit Anda akan melihat banyak baris. setelah itu berakhir - tekan enter untuk melihat pesan selamat datang
- login: root, tanpa kata sandi
Kustomisasi: Buat modul debirf khusus
Modul - skrip sh yang dapat dieksekusi untuk dijalankan selama pembuatan LiR
- buat file modul
- urutan nama file itu penting. Dalam
network
file, file penyelesaian akan diubah menjadi sistem-diselesaikan, dan Anda tidak dapat bekerja dengan jaringan; - baris dari 1 hingga 3 harus ada, baris 3 harus menunjukkan nama file
- jika Anda ingin menginstal paket - gunakan konstruksi
#DEBIRF_PACKAGE>+
- jika Anda ingin bekerja dengan rootfs - gunakan
$DEBIRF_ROOT
- jika Anda ingin menjalankan perintah di fakeroot - gunakan
debirf_exec
Sampel:
cat <<< EOF > rescue/modules/mi
dan ganti baris dengan yang resolved
dalam file rescue / modul / jaringan dengan debirf_exec systemctl enable wpa_supplicant@wlp1s0.service systemd-networkd.service systemd-resolved.service
Bonus: lxc pada LiR
penyelamatan modul / modul / lxc