Apakah mungkin untuk menginstal kernel Linux saja?

45

Saya hanya ingin tahu apakah mungkin untuk menginstal kernel Linux saja, atau jika Anda perlu menggunakan salah satu dari rasa. Jika memungkinkan, bagaimana Anda melakukannya? Saya tidak membutuhkan tutorial terperinci. Saya hanya ingin tahu bagaimana itu akan dilakukan secara konseptual. Saya tidak pandai dengan hal-hal tingkat rendah, dan ingin tahu bagaimana Anda mendapatkan OS ke dalam komputer. Saya membayangkan itu ada hubungannya dengan MBR.

Oh dan saya perhatikan bahwa banyak jawaban menyarankan distribusi tertentu dari beberapa Linux minimal. Saya seharusnya mungkin menyatakan bahwa saya tidak ingin menginstal Linux yang minimal atau telanjang. Pertanyaan ini murni teoretis. Tetap saja, saya sangat menghargai semua jawaban, dan akan merujuknya segera, jika saya ingin menginstal Linux yang benar-benar pribadi.

cesar
sumber
3
Apa yang Anda maksud dengan "sendiri" dan "rasa"? Linux bukan OS, melainkan kernel, apa gunanya kernel tanpa OS? Apakah Anda mencoba mencari tahu urutan pemuat boot?
Caleb
3
Jika Anda ingin memahami bagaimana kernel / OS semakin ke dalam komputer, di sini adalah tempat untuk memulai. Pastikan untuk tidak mengajukan pertanyaan "pemula" di sana, mereka akan menggigit Anda, dan meminta mereka pada SO .
Philomath
3
Dengan sendirian, maksud saya hanya kernel, minus antarmuka pengguna dan termasuk program-program seperti OpenOffice. Yang dimaksud dengan 'rasa' adalah distribusi linux yang berbeda, seperti ubuntu, redhat, debian, dan mandriva. Saya hampir tidak tahu apa yang saya bicarakan. Saya membayangkan bahwa kernel Linux memiliki beberapa kemampuan bash dasar seperti DOS. Saya pikir saya mungkin memiliki ide kernel dan sistem operasi yang kusut.
cesar
4
Ya, Anda benar-benar terjerat :) Bash hanyalah program pengguna-tanah yang berjalan sebagai proses yang dikelola oleh kernel. Kernel dengan sendirinya memberi Anda apa-apa selain platform untuk menjalankan hal-hal lain. Saran LFS (Linux From Scratch) dalam jawaban Shadur tepat sasaran. Anda akan belajar banyak tentang apa semua bagian yang berbeda dan apa yang membuat distro menjadi distro dan di mana kernel berakhir dan lahan pengguna dimulai dengan membangun sistem awal.
Caleb
2
Sebenarnya, DOS kerneljuga tidak memiliki bashkemampuan dasar . Antarmuka pengguna standar disediakan oleh program shell COMMAND.COM. Yang paling dekat dengan kernel telanjang adalah melakukan apa saja yang berguna adalah mem-boot menggunakan parameter kernel init=/bin/bash(dengan asumsi Linux minimal ada di disk). Sebagai jawaban, jika Anda hanya memiliki bootloader dan kernel, itu akan berhenti sangat cepat ketika tidak ditemukan init.
StarNamer

Jawaban:

51

Anda secara teknis dapat menginstal hanya bootloader dan kernel saja, tetapi segera setelah kernel boot, ia akan mengeluh tentang tidak dapat memulai "init", maka ia hanya akan duduk di sana dan Anda tidak dapat melakukan apa-apa dengan itu.

BTW, ini adalah bagian dari bootloader yang ada di MBR. Kernel berada di suatu tempat di area reguler disk. Bootloader dikonfigurasi untuk mengetahui di mana itu, sehingga dapat memuat kernel dan menjalankannya.

Shawn J. Goff
sumber
Bagaimana Anda memasukkannya ke dalam MBR?
cesar
Setiap bootloader dilengkapi dengan alat untuk menginstal sendiri ke MBR. Ada juga alat yang lebih ramah seperti Boot-Repair ( help.ubuntu.com/community/Boot-Repair ).
Shawn J. Goff
Anda dapat membuat initramfs dan menanamkannya ke dalam gambar kernel, dan kemudian Anda akan memiliki sistem yang berfungsi penuh hanya dari file gambar kernel :-)
Patrick
@ ShawnJ.Goff Mengapa kernel mengeluh tidak dapat memulai init, jika kami menyediakan initramfs?
Pratik Singhal
4
@ ps06756 Jika Anda memiliki initramfs, itu bukan kernel "sendirian" seperti pertanyaan yang diajukan. Jika initramfs memiliki init, kernel tidak akan mengeluh.
Shawn J. Goff
18

Saya tidak berpikir Anda mengerti persis apa yang Anda tanyakan, tetapi Anda mungkin ingin melihat proyek Linux From Scratch .

Shadur
sumber
LFS akan menjadi ide bagus untuk mencari cara membangun sistem minimum. Atau Anda bisa melihat MINIX (dan membaca buku ). Atau, untuk pengantar yang berbeda (kurang kerja, tapi kurang informatif), lihat paket yang ditandai "esensial" ( aptitude search '?essential') di Debian atau Ubuntu dan pahami apa yang masing-masing kerjakan (ada sedikit lebih banyak daripada minimum).
Gilles 'SO- stop being evil'
12

Jika Anda bertanya apakah Anda hanya dapat menginstal atau memutakhirkan kernel "over" sistem yang ada tanpa menginstal banyak program lain?

Kernel Linux adalah file biner yang biasanya dinamai vmlinuz-x.x.x-x-namedalam bootdirektori (yang biasanya merupakan partisi kecil terpisah di awal hard drive) di mana x adalah nomor versi. "name" hanyalah nama yang dipilih untuk kernel yang dapat diatur pada waktu kompilasi, Anda dapat menggunakannya untuk mengidentifikasi jenis mesin atau arsitektur kernel untuk alasan apa pun.

Itu dimuat pada boottime oleh bootloader, biasanya GRUByang dipanggil oleh kode boot di MBR yang dipanggil oleh ROM BIOS. Setelah dimuat, itu tidak "terbuka" atau dilindungi secara khusus. Jadi Anda dapat mengganti file itu dengan kernel lain yang berfungsi. Tetapi, GRUBmemiliki fitur keren yang memungkinkan Anda memilih beberapa kernel untuk boot. Jadi cukup cerdas untuk menambahkan kernel tambahan Anda ke daftar itu, tetapi tetap menggunakan kernel yang dikenal asli kalau-kalau ada yang salah.

Hampir semua distribusi yang saya percaya membuat kernel "modular" di mana driver perangkat berada di file terpisah. Jadi sebagian besar kernel memerlukan sistem file yang berisi driver yang tersedia untuknya saat boot dan itulah gunanya "initrd" (disk RAM awal) atau "initramfs". GRUBakan memuat kernel di lokasi dalam memori, dan initrd di lokasi yang berbeda, dan melompat ke kernel yang memberitahukan di mana initrd berada, memulai Linux.

Driver juga dapat "dibangun ke dalam" kernel dan karena itu secara otomatis dimuat dan tersedia ketika bootloader memuat vmlinuzgambar. Kernel yang dimaksudkan untuk bekerja pada sistem yang beragam (seperti kebanyakan distribusi) biasanya meminimalkan apa yang dibangun ke dalam kernel karena perangkat keras yang tersedia akan dipindai kemudian dalam proses boot dan hanya modul yang mewakili perangkat keras saat ini yang akan dimuat.

Ada alat untuk memodifikasi dan membuat initrds. Debian memiliki alat yang bagus dan saya membayangkan distribusi lain juga melakukannya.

Jadi, jika Anda mengunduh kernel yang lebih baru dari kernel.org dan mengkompilasinya untuk membuat citra biner kernel baru, Anda perlu membuat atau memperbarui initrd dengan driver yang berfungsi dengan kernel itu. Initrd yang lama tidak akan berfungsi karena driver harus cocok dengan versi kernel yang sedang berjalan.

File initrd dinamai initrd.img-x.x.x.x-namemirip dengan kernel, dan dapat diganti setelah boot seperti kernel, dan praktik terbaik akan menunjukkan Anda tidak menghapus initrd yang berfungsi sampai Anda tahu Anda bisa boot ke kernel + initrd baru Anda dengan sukses.

Saya harap itu memberikan beberapa konteks.

Jika Anda mencari instalasi "barebones" Linux yang memiliki sedikit atau tidak ada program tambahan yang diinstal dengannya, pilihan favorit saya selalu menginstal netinstgambar Debian . Cukup banyak Anda hanya memiliki alat paling dasar yang diperlukan untuk menjalankan konsol teks baris perintah dan nanosebagai editor teks.

LawrenceC
sumber
5

Rootfs tunggal yang dapat dieksekusi

Sistem minimum absolut menjalankan satu /initprogram seperti yang saya jelaskan di Single Application Linux | Pengguna Super

Minimal Linux Live

https://github.com/ivandavidov/minimal

Untuk sistem interaktif yang lebih menarik, ini adalah skrip kecil (kebanyakan pendidikan) yang:

  • mengunduh sumber untuk kernel dan busybox
  • kompilasi mereka
  • menghasilkan ISO 8MB bootable dengan mereka

ISO kemudian membuat Anda dalam shell minimal dengan busybox.

Dengan QEMU Anda dapat dengan mudah mem-boot ke sistem.

Saya telah memodifikasinya untuk memungkinkan menjalankannya dari direktori source kernel: https://github.com/cirosantilli/runlinux

Pemakaian:

git clone https://github.com/ivandavidov/minimal
cd minimal/src
./build_minimal_linux_live.sh
# Wait.
# Install QEMU.
# minimal_linux_live.iso was generated
./qemu64.sh

dan Anda akan ditinggalkan di dalam Window QEMU dengan Anda sistem minimal baru. Luar biasa.

Karena kecil, ini merupakan opsi yang baik untuk membaca sumbernya dan memahami apa yang sedang terjadi.

Diuji pada Ubuntu 16.04.

Buildroot

https://buildroot.org/

Kumpulan skrip Makefile besar yang mengelola:

  • GCC toolchain kompilasi silang
  • kompilasi kernel
  • kompilasi bootloader
  • generasi rootfs
  • memiliki banyak paket unduhan / pembuatan resep di pohon sumber, termasuk hal-hal rumit seperti GTK. Ada sistem ketergantungan.

Contoh minimal:

git clone git://git.buildroot.net/buildroot
cd buildroot
git checkout 2016.05
make qemu_x86_defconfig
# Can't use -jN, use `BR2_JLEVEL=2` instead.
BR2_JLEVEL=2 make
# Wait.
# cat board/qemu/x86_64/readme.txt
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user
# You are now in a shell with BusyBox utilities.

Bahkan memiliki resep untuk membangun X11 dari awal: Bagaimana cara menginstal X11 pada sistem Linux Buildroot saya sendiri?

Barang profesional.

Alpine Linux

https://github.com/gliderlabs/docker-alpine

Distribusi tertanam dengan manajer paket yang menawarkan binari yang dikompilasi dari sebuah situs web.

Lihat juga

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
3

Saya ingin saran kedua Shadur Anda harus membuat tangan Anda kotor dengan cara Linux Dari Awal.
Juga, sesuatu yang serupa, coba Pocket Linux .

Panduan Saku Linux menunjukkan bagaimana membangun sistem GNU / Linux berbasis konsol kecil dengan hanya menggunakan kode sumber dan beberapa disket. Ini ditujukan untuk pengguna Linux yang ingin mendapatkan pemahaman yang lebih dalam tentang bagaimana sistem mereka bekerja di bawah selubung fitur dan alat khusus distribusi.

Philomath
sumber
2
Walaupun perlu diketahui bahwa tidak ada orang waras yang merekomendasikan / entah / LFS atau PocketLinux untuk segala jenis tugas produksi yang penting - mereka baik untuk mempelajari cara kerja barang, tetapi ada alasan mengapa sebagian besar distribusi datang dengan set lengkap alat dan antarmuka. untuk sebagian besar barang.
Shadur
3

Dimungkinkan untuk menginstal kernel Linux tanpa alat ruang pengguna biasa. Ini biasanya dilakukan dalam sistem embedded seperti router. Biasanya, kernel dimuat dari ROM atau memori Flash, dan telah disesuaikan untuk perangkat yang bersangkutan (biasanya dengan driver yang diperlukan dikompilasi ke dalam kernel daripada dimuat sebagai modul).

Setidaknya satu program ruang pengguna perlu ada, untuk menjadi proses 'init' (tidak harus dipanggil init, tetapi dimulai oleh kernel sebagai proses 1, dan induk otomatis dari setiap proses yatim) - kecuali jika kernel telah dimodifikasi (bukan daripada hanya disesuaikan) untuk tidak memerlukan ini.

Tentunya tidak perlu memiliki shell yang tersedia untuk memiliki perangkat berbasis Linux yang berfungsi, meskipun itu dapat membuat pengembangan lebih mudah!

Toby Speight
sumber
2

Banyak distro menyediakan instalasi "inti". Ini yang kamu inginkan. Lihat ubuntu-minimal, debian net-install, archlinux (standarnya adalah inti).

Jawaban lain berguna jika Anda ingin belajar, tetapi itu mungkin bukan case = p

pengguna606723
sumber