it-swarm-id.com

Apakah mungkin untuk menginstal kernel Linux saja?

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 perlu 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.

50
cesar

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

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

54
Shawn J. Goff

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

20
Shadur

Jika Anda bertanya apakah Anda bisa 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-name dalam direktori boot (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 GRUB yang 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, GRUB memiliki 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 yang merupakan "initrd" (inisial RAM disk) atau "initramfs" untuk. GRUB will memuat kernel di lokasi dalam memori, dan initrd di lokasi yang berbeda, dan lompat ke kernel mengatakan di mana initrd berada, mulai Linux.

Driver juga dapat "dibangun ke dalam" kernel dan karena itu secara otomatis dimuat dan tersedia ketika bootloader memuat gambar vmlinuz. 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 lama tidak akan berfungsi karena driver harus sesuai dengan versi kernel yang sedang berjalan.

File initrd bernama initrd.img-x.x.x.x-name mirip dengan kernel, dan dapat diganti setelah boot sama seperti kernel, dan praktik terbaik akan menunjukkan Anda tidak menghapus initrd yang berfungsi sampai Anda tahu Anda dapat 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 image Debian netinst. Cukup banyak Anda hanya memiliki alat paling dasar yang diperlukan untuk menjalankan konsol teks baris perintah dan nano sebagai editor teks.

13
LawrenceC

Rootfs yang dapat dieksekusi tunggal

Sistem minimum absolut menjalankan satu /init program seperti yang saya jelaskan di Aplikasi Tunggal Linux | Pengguna Super

Minimal Linux Live

https://github.com/ivandavidov/minimal

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

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

ISO kemudian meninggalkan Anda di Shell minimal dengan busybox.

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

Saya telah memodifikasinya untuk 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 pilihan 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 struktur kode 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

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 dimaksud (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 disebut init, tetapi dimulai oleh kernel sebagai proses 1, dan induk otomatis dari setiap proses yatim piatu) - kecuali kernel telah dimodifikasi (bukan hanya disesuaikan) untuk tidak memerlukan ini.

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

3
Toby Speight

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

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

3
Philomath

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

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

2
user606723