Dengan mengkompilasi kernel linux, apakah kita membangun OS yang benar-benar mandiri yang tidak bergantung pada destorsi linux?
Tidak. Linux dengan sendirinya bukan sistem operasi. Itu hanya sebuah kernel. SEBUAH userland , yang terdiri dari kumpulan perpustakaan sistem dan perangkat lunak dasar, diperlukan untuk memfasilitasi interaksi Anda dengan komputer. Dalam apa yang biasanya kita maksud ketika kita merujuk ke "Linux", ini disediakan oleh proyek terpisah yang disebut Proyek GNU. Secara teknis, kita harus (dan beberapa memang) menyebutnya "GNU / Linux".
Nah ketika saya ingin membuat file initrd menggunakan perintah initramfs mengapa ia menambahkan beberapa info tentang distribusi linux saya yang sedang berjalan (saya menjalankan Ubuntu 10.4)?
Karena initrd Anda berisi kumpulan program yang awalnya mengatur sistem Anda saat boot, memuat driver dan daemon yang diperlukan, temukan dan pasang partisi yang diperlukan pada hard drive Anda, dll. distribusi, tetapi untuk instalasi khusus Anda, konfigurasi, dan komputer. Ini umumnya tidak dapat dipertukarkan dengan initrd orang lain. Itu sebabnya harus dibuat oleh sistem Anda.
Bagaimana saya harus mengkompilasi dan menambahkan modul ke linux yang dikompilasi dan di mana saya harus meletakkannya?
Jika Anda mengkompilasi kernel Anda sendiri, mungkin Anda melakukannya make menuconfig
dalam direktori source kernel sebelum kompilasi, yang memungkinkan Anda untuk memilih fitur mana yang akan dikompilasi, dan apakah mereka akan diintegrasikan ke dalam biner kernel atau tersedia sebagai modul.
Ini adalah ringkasan dari apa yang telah saya lakukan:
Ada sejumlah alasan mengapa ini tidak akan berfungsi seperti yang Anda inginkan.
mendapatkan sumber kernel (3.4.1) dan mengkompilasinya menggunakan perintah "make all" (saya menggunakan linux .config saya saat ini)
Jika Anda menjalankan Ubuntu 10,04, yang mendahului cabang 3.x dari kernel Linux sedikit, apalagi 3.4. Kemungkinan besar itu tidak akan berfungsi dengan benar, setidaknya tidak tanpa banyak kerja ekstra. File konfigurasi berubah sedikit juga, dan saya terus terang terkejut itu tidak membuang kesalahan kiri dan kanan tentang hal-hal di file konfigurasi (mungkin untuk Linux 2.6) Anda tidak cocok dengan bagaimana hal-hal yang dilakukan dalam 3.4. Juga, Anda mungkin ingin mengunduh paket sumber kernel Ubuntu dan bukan sumber kernel vanilla biasa dari kernel.org, karena Ubuntu menambal kernel untuk memasukkan fitur-fitur yang diperlukan dan membuatnya bermain bagus dengan semua hal lain dalam sistem. Akhirnya, Anda kehilangan sejumlah langkah, yang akan saya bahas nanti.
Menempatkan bzImage yang telah dikompilasi ke direktori / boot dari memory stick saya
Saya tidak yakin apa maksud Anda dengan ini, tetapi jika memiliki instalasi Linux yang dapat di-boot penuh pada memory stick Anda, ada sedikit lebih dari itu - Anda tidak memiliki userland sama sekali pada memori itu tongkat, misalnya. Apa yang sebenarnya akan dilakukan, jika diatur dengan benar, adalah (coba) menjalankan instalasi Ubuntu pada hard drive Anda dengan kernel pada memory stick Anda. Saya percaya ini harus berhasil, tetapi mengapa melakukan itu daripada hanya menginstal kernel pada hard drive Anda? Anda dapat menginstalnya berdampingan dengan yang sudah ada sehingga Anda dapat dengan bebas beralih di antaranya.
Masuk ke terminal (initramfs) setelah kesalahan yang menyatakan bahwa tidak dapat menemukan file "/lib/modules/3.4.1/modules.dep" !!!
Ini kembali ke langkah-langkah yang terlewatkan yang saya sebutkan sebelumnya. Kamu butuh make modules_install
kernel baru Anda untuk menempatkan modul-modulnya /lib/modules
.
NAMUN...
Tidak ada yang benar-benar penting, karena idealnya Anda tidak harus mengkompilasi kernel dengan cara "tradisional" sama sekali, kecuali Anda memiliki kebutuhan yang sangat spesifik. Saat ini, jika Anda benar-benar perlu mengkompilasi kernel Anda sendiri, sebagian besar distribusi memiliki cara untuk melakukannya yang menggunakan versi kernel kustom mereka (jika ada), mengotomatiskan proses pembuatan, menginstal kernel sebagai sebuah paket sehingga Anda dapat menginstal dan menghapus dengan bersih jika perlu, dan konfigurasikan bootloader Anda untuk memberi Anda pilihan kernel baru atau lama. Di Ubuntu Anda harus mengikuti instruksi ini: Kernel / Compile - Wiki Ubuntu
Bukan berarti Anda tidak dapat mengkompilasi kernel dengan cara "kuno" hanya untuk iseng / untuk tujuan pendidikan - Saya mengkompilasi kernel pertama saya dengan cara itu, tetapi ini sebelum ada cara yang lebih baik untuk melakukannya. Jika sistem Anda tidak rusak penting bagi Anda, gunakan metode yang disarankan untuk distro Anda, gunakan sumbernya, dan gunakan manajemen paket mereka.
Ketika Anda mengkompilasi ulang atau mengkompilasi kernel Linux, Anda TIDAK membuat distribusi baru. Anda hanya membuat versi kernel yang lebih baru atau berbeda. Kernel adalah satu file yang dimuat, kemudian dieksekusi oleh bootloader setelah PC Anda menyelesaikan proses POST.
Distribusi terdiri dari banyak, banyak file lain, termasuk utilitas standar UNIX, biasanya manajer paket, dan lainnya. Tidak ada yang tersentuh jika Anda mengkompilasi kernel Anda sendiri.
Sudah beberapa saat sejak saya mengkompilasi kernel saya sendiri, tetapi saya pikir Anda perlu menjalankan
depmod -a
setelahmake
perintah.sumber
make module_install
menginstal modul kernel dan, saya percaya, berjalandepmod
untukmu.depmod -a
mengacu pada kernel baru yang baru Anda kompilasi tetapi tidak berjalan pada saat Anda memohondepmod
.depmod
mungkin terjadi saat boot ketika perlu.