Saya mencoba memahami konten file ISO image distribusi Linux dan bagaimana proses instalasi berlangsung. Di sini saya secara khusus berbicara tentang CentOS 6.4 dalam versi minimalnya.
Jadi ISOLINUX terpicu, dan saya mendapatkan menu yang ditampilkan. Lalu saya tekan install.
Itu memuat kernel dan sistem file initrd.
Pertanyaan saya adalah:
Bagaimana cara Anaconda dipanggil?
Apa peran file gambar / install.img? (Siapa yang memanggil / memasang itu?)
Apakah Anaconda menginstal Paket / * .rpm? Jika saya ingin menambahkan satu di sana, dapatkah saya, dan apakah itu akan diinstal?
Jawaban:
Saya salah satu penulis / pengelola Anaconda. Saya bisa masuk ke terlalu banyak detail tentang bagaimana installer installer, tetapi saya akan mencoba untuk menjadi singkat.
(Perhatikan bahwa ini hanya berlaku untuk RHEL / CentOS 6.x atau Fedora 14 dan sebelumnya; installer hampir sepenuhnya ditulis ulang antara Fedora 15, 16, dan 17, jadi semuanya sangat berbeda sekarang.)
Di
initrd.img
media instal adalah apa yang kita sebut gambar stage1 . Ini berisi program yang disebutloader
, yang tugasnya hanya mencari dan memuatimages/install.img
.install.img
adalah gambar stage2 . Di sinilah Anaconda benar-benar tinggal - ini adalah gambar squashfs yang berisi sistem file root installer.Ada banyak cara berbeda untuk menemukan loader
install.img
, tetapi ketika Anda mem-boot dari DVD itu mudah: loader memperhatikan DVD installer, memasangnya, dan mountimages/install.img
sebagai sistem file root.Setelah gambar stage2 dipasang, loader memulai Anaconda, yang kemudian menjalankan Xorg dan menempatkan shell pada
tty2
dan semua hal-hal yang bagus, dan installer benar-benar dimulai.Tidak, itu tidak hanya menginstal semuanya di sana. Ia menggunakan
comps.xml
file (dalamrepodata/
) untuk memutuskan grup paket mana yang tersedia (dan paket apa yang ada dalam grup tersebut) - begitulah UI pemilihan paket akan terisi.Jika Anda menambahkan sesuatu ke
Packages/
direktori (seperti jika Anda mencoba membuat gambar DVD khusus) dan Anda ingin itu dapat diinstal, Anda harus menggunakancreaterepo
untuk membuat ulangrepodata/
direktori. Itu akan memungkinkan Anda menginstal paket Anda melalui kickstart, setidaknya.Jika Anda membutuhkannya untuk ditampilkan di UI, Anda harus mengedit
comps.xml
juga.sumber
Ketika Anda boot dari CD, Anda mendapatkan bootloader ISOLINUX, dan itu memuat kernel Linux dan ramdisk awal. Itu memulai Anaconda, yang memuat berbagai bagiannya, seperti install.img. Anaconda kemudian mengurus menginstal berbagai paket, dll.
Cara termudah untuk membuat Anaconda menginstal paket tambahan (atau melakukan konfigurasi tambahan) adalah dengan menulis skrip kickstart. Skrip kickstart memberi tahu Anaconda paket mana yang akan diinstal, cara mengkonfigurasi sistem operasi, dan sebagainya. Untuk memberi tahu anaconda untuk menggunakan skrip kickstart tertentu, Anda dapat mengetik "install ks = http://example.com/my_kickstart.ks " di prompt ISOLINUX. Kemudian akan mengunduh file kickstart (dari server web dalam contoh ini), dan menggunakannya untuk mengetahui paket mana yang akan diinstal.
Rincian lebih lanjut tentang skrip kickstart tersedia di http://fedoraproject.org/wiki/Anaconda/Kickstart
sumber
Ketika Anda mem-boot CD instalasi, ia memuat Kernel dan initrd seperti yang Anda sebutkan. Ini pada dasarnya memuat sistem Linux minimal ke dalam memori komputer Anda. Anaconda berjalan sebagai layanan saat boot dan program diluncurkan. Anaconda kemudian menemukan HD Anda dan memasangnya sebagai / mnt / sysimage. Anaconda menginstal Paket / * .rpm dari CD instal dan Anda dapat menambahkan RPM ke dir Package lalu membakar kembali iso, tetapi Anaconda masih tidak tahu bahwa itu perlu diinstal. Sejauh peretasan Anaconda untuk membuat program mencari RPM saya tidak punya jawaban.
sumber