menginstal linux tanpa paket apa pun

0

Saya memprogram OS yang berbasis Linux tetapi saya ingin "menemukan kembali roda" di OS ini hanya sebagai sebuah pencapaian. Saya telah diberitahu bahwa Linux dapat diinstal pada PC tanpa paket apa pun (jelas menyebabkan "Kernel panic") tetapi saya tidak dapat menemukan tutorial apa pun. Saya hanya perlu tahu bagaimana memulainya dengan partisi kosong dan membawanya ke titik di mana ia bisa boot (dan memuat file init yang akan saya berikan). Saya tidak ingin menggunakan paket apa pun karena saya akan menjalankan program saat boot.

DividedByZero
sumber
1
Linux adalah sebuah kernel. Itu bukan apa-apa, kecuali kernel, dan boot-loader. Instal saja distro fav Anda, lalu hapus semuanya dari partisi kecuali file vmlinuz. en.wikipedia.org/wiki/Vmlinux . Jika Anda ingin lingkungan dasar untuk boot kemudian menyimpan alat file intird. en.wikipedia.org/wiki/Initrd . Initrd kemungkinan akan memiliki busybox diinstal, jadi Anda menjalankan beberapa perintah dasar, tetapi Anda harus mengeditnya menjalankan boot run busybox daripada melakukan handoff
Robin Hood
@RobinHood Saya berpikir untuk menjalankan aplikasi asli yang akan mengambil alih begitu kernel telah boot. Saya akan menggunakan program saya karena init karena itu tidak ada paket yang diperlukan
DividedByZero
@RobinHood ketika Anda mengatakan "hapus semuanya dari partisi" maksud Anda file / boot juga? Bagaimana kernel boot jika tidak ada file boot? Btw Saya biasanya hanya memiliki satu partisi di pc dan / boot, / sbin dan / hampir semuanya di partisi yang sama
DividedByZero

Jawaban:

1

Sudahkah Anda mencoba menggunakan LSF ?, Anda dapat memiliki satu set paket yang dapat Anda gunakan atau tidak: http://www.linuxfromscratch.org/lfs/

Dennis Ruiz
sumber
Saya tidak ingin ada paket. Saya hanya ingin kernel untuk menjalankan program saya. Untuk itu saya perlu menyediakan kernel dengan file saya sebagai init dan jelas kernel harus dapat boot dan memuat init. Itu yang saya inginkan
DividedByZero
1

Dengan asumsi sistem BIOS (bukan EFI) x86. Beberapa arsitektur seperti ARM memerlukan data platform atau info hierarki perangkat.

  1. Bangun kernel.
  2. Buat sistem file boot tunggal, dan tandai sebagai bootable.
  3. Instal kernel ke sistem file boot.
  4. Pasang bootloader.
  5. Konfigurasikan bootloader untuk mem-boot kernel Anda, tidak perlu argumen, tidak ada init {ramfs, rd}.
  6. Boot.
  7. Baca Documentation/initrd.txtcara membangun initramfs, jika Anda ingin melakukan boot initramfs, jika tidak, buat partisi baru dan format (root filesystem). Abaikan bagian ramdisk saja, dan gunakan bagian gambar CPIO sebagai gantinya.
  8. Bangun busybox, dengan setidaknya shell dikonfigurasikan.
  9. Instal busybox ke initramfs atau sistem file root. Untuk yang pertama, konfigurasikan bootloader untuk menggunakan initramfs / beri tahu kernel Linux. Untuk yang terakhir, symlink / bin / sh ke busybox, dan tambahkan argumen init = / bin / sh ke baris perintah kernel.
  10. Perluas sesuai keinginan Anda, baik dengan LFS, atau lainnya.
  11. Baca boot(7)jika Anda ingin ikhtisar proses boot Linux tradisional (mungkin bukan yang Anda gunakan di banyak distro modern).
pilona
sumber
Bisakah Anda jelaskan tujuan busybox. Dan apa yang Anda maksud dengan "sistem file boot tunggal"? Juga, tanpa mem-boot ke sistem, bagaimana Anda bisa menggunakan bootloader
DividedByZero
busybox adalah biner tunggal yang menyediakan banyak utilitas UNIX yang umum. Lebih mudah daripada mencoba menggunakan paket coreutils lainnya. Dengan "sistem file boot tunggal", hapus "boot". Saya hanya bermaksud membuat satu partisi pada beberapa perangkat, dan memformatnya dengan beberapa sistem file yang dapat dipahami oleh bootloader Anda. Sedangkan untuk pertanyaan bootloader, bukankah Anda membangun sistem dari sistem yang ada? Menginstal bootloader di sini hanya menulis 440 byte ke MBR, mengatur flag boot pada beberapa partisi, dan memindahkan beberapa file ke sistem file yang baru dibuat. Tidak ada yang ajaib di sini.
pilona
Oke terima kasih! Sudah waktunya saya membaca tentang boot loader: P
DividedByZero