How Puppy works

How Puppy works

How Puppy works – Halaman Barry tentang Cara Kerja Puppy works. http://www.puppyos.com/development/howpuppyworks.html

Catatan: beberapa di antaranya mungkin sudah usang, tetapi tautan Barry di atas seharusnya bagus.

quickstart 1 pager: PuppyInAnutshell

Satu hal yang perlu dipahami adalah bahwa Puppy itu unik. Barry membangun Puppy dari awal, file demi file, sehingga arsitekturnya tidak didasarkan pada distro lain.

Tata letak saat live-CD boot: vmlinuz, kernel Linux, dimuat ke dalam RAM, diikuti oleh image.gz, yang dimuat ke “ramdisk” cepat. File tersebut dikompresi “.gz”, sehingga tidak dikompresi ke dalam ramdisk dan kemudian ramdisk menjadi sistem file Puppy yang paling dasar, yaitu, ditunjuk “/” dan disebut direktori teratas atau root bersama dengan semua subdirektori /bin, /sbin , /lib, /dev, /tmp, dll.

Tujuan mendasar Puppy adalah bahwa semuanya harus dimuat ke dalam ramdisk, sehingga membebaskan drive CD sehingga Anda dapat menggunakan drive CD untuk tujuan lain. Juga, jika semuanya ada di RAM, startup aplikasi dan kecepatan berjalannya menakjubkan. Selain itu, komputer tanpa media pemintal (CD, hd) jauh lebih tangguh untuk digunakan di kapal, mobil offroad asf..

Saat listrik padam, isi RAMdisk hilang. Untuk mempertahankan pengaturan Anda, seperti perubahan konfigurasi, email, riwayat browser, asf Puppy selama bootup mencari partisi hard drive yang sesuai, dan jika ditemukan, buat file di dalamnya yang disebut “pup001”. Saya sewenang-wenang memilih “pupxxx” di mana “xxx” adalah tiga digit angka. Tiga digit angka juga tidak memiliki arti khusus, kecuali saat ini kami menggunakan pup001 untuk live-CD dan pup100 untuk instalasi USB Puppy.

pup001 adalah file tunggal (mudah dicadangkan), tetapi secara internal adalah sistem file ext2 yang lengkap. Setelah membuat file ini, Puppy memasangnya, dengan cara “perangkat loopback”, ke direktori /root. Direktori /root ini adalah direktori home Anda — semua barang pribadi Anda ada di sana. Jadi, saat Anda mematikan, semua akan tetap ada saat berikutnya Anda memulai Puppy.

Saya perlu menjelaskan langkah-langkah boot dengan benar — Puppy pertama-tama harus memasang partisi hard drive ke /mnt/home. Ini harus dilakukan sebelum Puppy bisa mendapatkan akses ke pup001 dan memasangnya di /root. Jadi Anda dapat melihat dua titik pemasangan dalam diagram.
file usr_cram.fs

Sebagian besar file di Puppy, di distro Linux apa pun, ada di /usr – selanjutnya biasanya tidak perlu menulis apa pun di dalam /usr (yaitu, tidak perlu mengedit, membuat, atau menghapus file). Jadi seluruh konten /usr dikompresi sebagai satu file, bernama usr_cram.fs dan dipasang apa adanya di /usr, melalui “perangkat loopback” — teknik sebenarnya bukanlah masalah utama di sini, tetapi Anda perlu perlu diketahui bahwa semua /usr sebenarnya hanya satu file, berisi sistem file terkompresi dan hanya-baca. Memanfaatkan union-fs, bagaimanapun, perubahan /usr dapat dilakukan pada saat run-time sementara usr_cram.fs tetap tidak berubah.

bagian dari diagram dalam warna oranye untuk menggambarkan berbagai tempat di mana file usr_cram.fs mungkin berada. Keempat angka tersebut, 1, 2, 3, dan 4, adalah urutan pencarian dalam kasus booting dari CD:

Saat boot, Puppy pertama-tama akan melihat apakah ”usr_cram.fs”∞ ada di “/” di ramdisk (yang berarti awalnya ada di dalam image.gz)
jika gagal, Puppy akan mencari di /root (yaitu, di dalam pup001)
else di /mnt/home (di partisi hard drive)
akhirnya Puppy akan mencari di CD (media paling lambat ini)

Bahkan jika Puppy jatuh ke opsi 4, ia akan melakukan yang terbaik untuk tidak meninggalkan usr_cram.fs di CD yang lambat. Kami benar-benar ingin menyalinnya ke ramdisk, atau gagal untuk pup001 di hard drive. Jika kita meninggalkannya di CD dan hanya memasangnya di /usr, Puppy akan berjalan lambat dan drive CD tidak akan tersedia untuk tujuan lain. Dengan RAM yang cukup usr_cram.fs menyalin ke “/” di ramdisk, lalu memasangnya di /usr.

Berapa banyak RAM yang “cukup”? Puppy paling bahagia di PC dengan setidaknya 128M RAM. 128M adalah ukuran yang baik — cukup untuk image.gz (tidak terkompresi) dan usr_cram.fs untuk keduanya berada di ramdisk.

Bagaimana jika PC Anda hanya memiliki 64M, 48M, atau bahkan hanya 32M RAM? Nah, usr_cram.fs tidak akan muat di ramdisk. Hanya angka taman bola, image.gz tidak terkompresi sekitar 10 juta, usr_cram.fs sekitar 50 juta.

Puppy memang memiliki kartu di lengan bajunya, jadi untuk berbicara – jika PC memiliki partisi swap Puppy akan secara otomatis menggunakannya, untuk meningkatkan ukuran virtual ramdisk. Jika Anda pernah menginstal distro Linux lain di PC, kemungkinan itu membuat partisi swap, jadi sudah ada di sana siap untuk digunakan Puppy. Jika PC Anda memiliki 128M RAM, Puppy akan mengalokasikan 62M untuk ramdisk, namun jika PC juga memiliki 250M (misalnya) partisi swap, maka ukuran efektif ramdisk menjadi 62+250 = 312M!

Namun, saya membuat keputusan dengan logika startup Puppy, hanya untuk menyalin usr_cram.fs ke ramdisk jika setidaknya ada 62M RAM fisik yang dialokasikan ke ramdisk. Jadi, untuk PC dengan RAM fisik kurang dari 128M, usr_cram.fs tidak akan pernah disalin ke ramdisk, meskipun ada partisi swap.

Masalah lainnya adalah urutan pencarian, keempat angka 1, 2, 3, dan 4. Saat Anda mem-boot Puppy dari CD, jika Anda menyalin usr_cram.fs dari CD atau /, ke /root (mis., di dalam pup001 ), itu akan menjadi tempat kedua yang dilihat Puppy saat berikutnya dia melakukan boot. Atau, salin ke “/” pada hard drive — itulah tempat ke-3 Puppy akan terlihat. Jadi, bahkan pada PC dengan hanya 32M RAM, Anda dapat melakukan boot dari live-CD dan membebaskan drive CD untuk tujuan lain.

PC dengan kurang dari 128M benar-benar membutuhkan partisi swap agar Puppy berfungsi dengan baik. Meskipun Puppy dapat boot dari live-CD pada PC dengan hanya 32M RAM, beberapa aplikasi adalah babi memori — Mozilla misalnya. Mozilla tidak dapat digunakan pada PC dengan RAM kurang dari 128M. Namun, seperti yang disebutkan di atas, partisi swap meningkatkan ukuran efektif ramdisk, sehingga Anda dapat membuat Mozilla bekerja di PC dengan RAM yang sangat kecil, meskipun lambat. Ini juga merupakan ide yang baik untuk menambahkan file swap, jika Anda memiliki beberapa ruang kosong di hard drive – dan tabel partisi Anda mengizinkannya.

Pikirkan tentang urutan pencarian itu sedikit lagi… #3 menarik. Puppy mencari usr_cram.fs di hard drive, tetapi bagaimana file itu sampai di sana? Anda mungkin meletakkannya di sana secara manual atau menjalankan skrip install-to-hard-drive-option-1.

Namun, ketika Anda mem-boot Puppy versi terbaru dari CD, Puppy akan menemukan usr_cram.fs yang lama! …tidak begitu baik. Atau, usr_cram.fs lama jika Anda meletakkannya di /root, dalam hal ini.

Untuk mengatasi masalah itu Puppy memiliki teknik untuk memeriksa apakah usr_cram.fs adalah versi yang benar. Puppy memeriksa ini, dan akan mengabaikan file usr_cram.fs yang ditemukannya memiliki nomor versi yang salah. Teknik yang digunakan adalah ketika usr_cram.fs dibuat, ukurannya, dalam byte, dicatat di /etc/sizeusrcram, yang kemudian dapat digunakan untuk memeriksa usr_cram.fs pada saat boot.

dengan puppy 1.0.1+ seringkali diinginkan untuk menerapkan kebijakan “semuanya di satu media”, tetapi Anda dapat membagi puppy untuk mengatasi batas ruang pada media tersebut (CD-RW atau stik USB).

Instalasi paket

Poin penting tentang arsitektur ini adalah /usr bersifat read-only. Setelah mengunduh paket .tar.gz “tarball” atau RPM, Anda tidak dapat menginstalnya ke Puppy karena sebagian besar paket ingin menginstal sebagian dirinya ke /usr.

Namun, versi 1.0.1 telah merevolusi manajemen paket di Puppy dengan menggunakan UNIONFS untuk membuat /usr baca-tulis. File apa pun yang ditulis ke /usr sebenarnya disimpan di /root/.usr, tetapi terlihat seolah-olah ada di /usr ke paket RPM dan semacamnya. Manajer paket dengan instalasi, penghapusan, dan pemeriksaan ketergantungan non-volatile bernama PupGet layak dilakukan!

PupGet menawarkan paket paket paket Puppy Unleashed. Semua paket ini tersedia untuk diunduh — dari menu Puppy pilih “Setup -> PupGet package manager”, dan ikuti langkah-langkah di GUI.

Semua paket Unleashed ada di Internet, dan PupGet dapat mengunduhnya satu per satu untuk menginstalnya, namun pengembang Linux dapat membuat live-CD mereka sendiri dari paket paket Unleashed yang lengkap. Live-CD yang Anda gunakan sekarang dibuat dari Puppy Unleashed.

Puppy Unleashed memungkinkan Anda untuk mengumpulkan CD boot Puppy kustom Anda sendiri dari ratusan pilihan paket (aplikasi). Untuk informasi lebih lanjut, lihat halaman Puppy Unleashed.

Booting dari USB

Teknologi flash

Flash drive 128M sangat cocok dengan Puppy. Pertimbangkan, Puppy hanya sekitar 50-60M, jadi akan muat di drive USB 128M yang menyisakan lebih dari 70M gratis untuk data pribadi. Ya, sistem operasi portabel lengkap dan data pribadi, semuanya dalam satu perangkat kecil tanpa suara yang tidak berputar!

Kelemahan dari teknologi Flash adalah jumlah siklus tulis yang terbatas. Setelah berkali-kali, tongkat itu akan runtuh. Saya telah melihat angka serendah 50.000 penulisan – lihat FlashDetail .

Bagaimanapun, kabar baiknya adalah Puppy dirancang khusus untuk tidak menulis ke Flash drive selama sesi, sangat memperpanjang masa pakainya. Perhatikan diagram ini:

gambar live usb

Saat Puppy melakukan booting dari USB, langkah-langkahnya hampir sama dengan live-CD. Kernel vmlinuz dimuat ke dalam RAM, image.gz tidak terkompresi dan dimuat ke dalam ramdisk.

Puppy kemudian mencari usr_cram.fs, pertama mencari di “/” di ramdisk, lalu di “/” di partisi USB. Kasus pertama hanya jika Puppy telah dibuat dengan usr_cram.fs di dalam image.gz, yang bukan situasi normal. Jadi kembali ke nomor 2. Puppy akan menemukan usr_cram.fs di partisi USB dan akan memasangnya di /usr.

Puppy akan mencoba optimasi. Jika ada cukup RAM, Puppy akan menyalin usr_cram.fs ke dalam ramdisk dan kemudian memasangnya di /usr. Ini membutuhkan sedikit waktu tetapi meningkatkan kecepatan lari. Namun, bahkan jika Puppy meninggalkan usr_cram.fs di drive USB dan memasangnya dari sana ke /usr, itu tidak menjadi masalah karena /usr bersifat read-only. Tidak akan ada penulisan ke /usr, sehingga masa pakai Flash drive tidak terganggu (Puppy versi 1.0.1 memiliki UNIONFS yang membuat /usr baca-tulis, tetapi semua penulisan sebenarnya masuk ke /root/.usr, yang ada di ramdisk, seperti yang dijelaskan di bawah).

Pertama kali Puppy melakukan booting dari USB, file pup100 belum ada — Puppy harus membuatnya. Puppy membuatnya, dan memasangnya langsung di /root – secara fisik di stick – melalui perangkat loopback. Sejauh ini, arsitekturnya pada dasarnya sama dengan live-CD.

Masa pakai perangkat Flash dikompromikan dengan menulis ke /root, yaitu ke pup100. Ini adalah direktori home Anda, dan aplikasi menyimpan semua jenis barang di dalamnya. Banyak tulisan akan terjadi pada /root. Kernel Linux melakukan cache penulisan, tetapi meskipun demikian, cache akan sering dihapus.

Perbedaan yang signifikan terjadi pada kali kedua Puppy di-boot dari USB. Jika ada cukup RAM (mengingat bahwa ramdisk juga dapat menggunakan partisi swap jika ada, sehingga ruang yang tersedia secara efektif adalah ukuran RAM ditambah ukuran partisi swap), maka Puppy akan me-mount pup100 ke direktori /mnt/pupxxx di untuk menyalin semua file dari /mnt/pupxxx ke /root.

Dengan demikian, salinan lengkap pup100 ada di /root, dan tidak ada penulisan yang akan terjadi pada pup100 fisik selama sesi. Saat shutdown, semua file di /root disalin kembali ke /mnt/pupxxx, sehingga memperbarui pup100. Kita dapat, secara teori, mencadangkan ke pup100 secara berkala, bukan hanya saat shutdown, tetapi itu tidak diterapkan dalam versi Puppy saat ini — sejujurnya, saya sangat jarang mengalami Puppy crash, dan satu-satunya situasi yang akan menyebabkan cadangan tidak terjadi akan menjadi kegagalan daya.

Puppy sangat cerdas, dan pengoptimalan yang dijelaskan di atas hanya diterapkan jika ada cukup RAM (+swap). Jika RAM tidak cukup, maka jelas pup100 tidak dapat disalin ke /root di ramdisk. Selama boot anjing memberi tahu Anda apakah ia berhasil memasukkan semua ke dalam RAM.

Untuk memberikan gambaran tentang apa yang “cukup” RAM, PC dengan 256M RAM cocok dengan 128M Flash drive. File pup100 akan berukuran sekitar 60 juta, dan ada cukup RAM untuk memuat semuanya ke dalam ramdisk. Di sisi lain, Flash drive 256M akan memiliki file pup100 180M yang akan terlalu besar. Dengan 256 flash-drive RAM 512MB yang baik untuk menyimpan semua dalam RAM. Jika PC memiliki partisi swap, Puppy akan secara otomatis menggunakan ini untuk meningkatkan ukuran maksimum efektif ramdisk. Apa pun situasi di PC Anda, Puppy akan mengerjakan konfigurasi terbaik, sepenuhnya otomatis.

Memperbarui, mengarsipkan, mengonfigurasi

Seperti yang Anda lihat, Puppy hanya terdiri dari 4 file. (sebenarnya, dimungkinkan untuk memiliki usr_cram.fs di dalam image.gz, mengurangi Puppy menjadi hanya 3 file — situs unduhan web mungkin memiliki konfigurasi tersebut. Akan lebih mudah untuk mem-boot jaringan untuk hanya memiliki dua file vmlinuz dan image.gz yang perlu dikhawatirkan)

Untuk memperbarui Puppy ke versi terbaru, Anda hanya perlu mendapatkan vmlinuz, image.gz, dan usr_cram.fs terbaru. Memperbarui sangat sederhana, tetapi dengan v0.9.8 saya membuatnya lebih sederhana dengan membuat opsi pembaruan ke dalam skrip instalasi. Yaitu, boot live-CD terbaru dan jalankan skrip install-to-USB, install-to-Zip atau install-to-hard-drive dan pilih “update” daripada “instalasi baru”.

Ini sangat sederhana, Anda bisa melakukannya secara manual jika Anda mau.…