เป็นไปได้หรือไม่ที่จะติดตั้งเคอร์เนล Linux เพียงอย่างเดียว?


45

ฉันแค่อยากรู้ว่าเป็นไปได้หรือไม่ที่จะติดตั้งเคอร์เนล Linux เพียงอย่างเดียวหรือถ้าคุณต้องการใช้รสชาติอย่างใดอย่างหนึ่ง ถ้าเป็นไปได้คุณจะทำอย่างไร ฉันไม่ต้องการรายละเอียดการสอน ฉันแค่อยากรู้ว่ามันจะต้องทำอย่างไรในแนวคิด ฉันไม่ค่อยเก่งกับเรื่องระดับต่ำและอยากรู้ว่าคุณจะนำระบบปฏิบัติการไปใช้ในคอมพิวเตอร์ได้อย่างไร ฉันคิดว่ามันมีบางอย่างเกี่ยวข้องกับ MBR

โอ้และฉันสังเกตเห็นว่าคำตอบจำนวนมากแนะนำให้ใช้การกระจายบางอย่างของลีนุกซ์ขั้นต่ำบางตัว ฉันควรจะระบุว่าฉันไม่ต้องการติดตั้ง Linux หรือกระดูกเปล่า คำถามนี้เป็นทฤษฎีอย่างหมดจด ถึงกระนั้นฉันก็ขอบคุณคำตอบทั้งหมดและจะอ้างถึงพวกเขาทันทีหากฉันต้องการติดตั้ง Linux ในแบบของคุณอย่างแท้จริง


3
"คนเดียว" และ "รสชาติ" หมายถึงอะไร? Linux ไม่ใช่ระบบปฏิบัติการที่เป็นเคอร์เนลเคอร์เนลที่ไม่มีระบบปฏิบัติการจะดีอย่างไร คุณกำลังพยายามหาลำดับของตัวโหลดการบูตแทนหรือไม่?
Caleb

3
หากคุณต้องการเข้าใจว่าเคอร์เนล / ระบบปฏิบัติการเข้าสู่คอมพิวเตอร์ได้อย่างไรนี่คือจุดเริ่มต้น เพียงให้แน่ใจว่าจะไม่ถามคำถาม "มือใหม่" ที่นั่นพวกเขาจะกัดคุณถามพวกเขาในSOแทน
Philomath

3
โดยลำพังฉันหมายถึงเคอร์เนลลบส่วนติดต่อผู้ใช้และรวมโปรแกรมเช่น OpenOffice โดย 'รส' ฉันหมายถึงการกระจายของลินุกซ์ที่แตกต่างกันเช่น ubuntu, redhat, debian และ mandriva ฉันแทบไม่รู้เลยว่ากำลังพูดถึงอะไร ฉันจินตนาการว่าเคอร์เนล Linux มีความสามารถทุบตีพื้นฐานบางอย่างเช่น DOS ฉันคิดว่าฉันอาจมีความคิดเกี่ยวกับเมล็ดและระบบปฏิบัติการพันกัน
ซีซาร์

4
ใช่คุณเป็นพวกนั้นยุ่งจริงๆ :) Bash เป็นเพียงโปรแกรมผู้ใช้ที่ทำงานเป็นกระบวนการที่จัดการโดยเคอร์เนล เคอร์เนลโดยตัวมันเองไม่ได้ให้อะไรเลยยกเว้นแพลตฟอร์มที่จะทำงานอย่างอื่น คำแนะนำของ LFS (Linux From Scratch) ในคำตอบของ Shadur นั้นตรงกับเป้าหมาย คุณจะได้เรียนรู้มากมายเกี่ยวกับชิ้นส่วนต่าง ๆ ทั้งหมดและสิ่งที่ทำให้ distro เป็น distro และที่เคอร์เนลสิ้นสุดลงและจุดเริ่มต้นของผู้ใช้เริ่มต้นด้วยการสร้างระบบขูด
คาเลบ

2
ที่จริงแล้ว DOS kernelไม่มีbashความสามารถขั้นพื้นฐานเช่นกัน COMMAND.COMอินเตอร์เฟซผู้ใช้มาตรฐานถูกจัดให้โดยโปรแกรมเปลือก ที่อยู่ใกล้คุณจะได้รับการเคอร์เนลเปลือยทำอะไรที่เป็นประโยชน์จะบูตโดยใช้พารามิเตอร์เคอร์เนลinit=/bin/bash(สมมติให้มีน้อยที่สุดลินุกซ์บนดิสก์) ในฐานะที่ตอบถ้าคุณมีเพียง bootloader initและเมล็ดก็จะหยุดอย่างรวดเร็วเมื่อมันไม่พบ
StarNamer

คำตอบ:


51

ในทางเทคนิคคุณสามารถติดตั้งเพียง bootloader และเคอร์เนลเพียงอย่างเดียว แต่ทันทีที่เคอร์เนลบูทมันจะบ่นเกี่ยวกับการไม่สามารถเริ่ม "init" จากนั้นมันจะนั่งอยู่ที่นั่นและคุณไม่สามารถทำอะไรกับมันได้

BTW มันเป็นส่วนหนึ่งของ bootloader ที่อยู่ใน MBR เคอร์เนลตั้งอยู่ที่ใดที่หนึ่งบนพื้นที่ปกติของดิสก์ bootloader ได้รับการกำหนดค่าให้รู้ว่าอยู่ที่ไหนเพื่อให้สามารถโหลดเคอร์เนลและดำเนินการได้


คุณจะนำมาไว้ใน MBR ได้อย่างไร?
ซีซาร์

bootloader ทุกตัวมาพร้อมกับเครื่องมือสำหรับการติดตั้งตัวเองลงใน MBR นอกจากนี้ยังมีเครื่องมือที่เป็นมิตรเช่น Boot-Repair ( help.ubuntu.com/community/Boot-Repair )
Shawn J. Goff

ดีที่คุณสามารถสร้าง initramfs และฝังลงในภาพ kernel และจากนั้นคุณจะมีระบบการทำงานอย่างเต็มที่จากแฟ้มภาพ kernel :-)
แพทริค

@ ShawnJ.Goff เหตุใดเคอร์เนลจึงบ่นว่าไม่สามารถเริ่มต้น init ได้ถ้าเราให้ initramfs
Pratik Singhal

4
@ ps06756 หากคุณมี initramfs นั่นไม่ใช่เคอร์เนล "อยู่คนเดียว" ตามที่ถาม หาก initramfs มี init เคอร์เนลจะไม่บ่น
Shawn J. Goff

18

ผมไม่คิดว่าคุณเข้าใจว่าสิ่งที่คุณขอ แต่คุณอาจต้องการที่จะดูที่เป็นลินุกซ์ตั้งแต่เริ่มต้นโครงการ


LFS จะเป็นความคิดที่ดีที่จะหาวิธีสร้างระบบขั้นต่ำ หรือคุณสามารถดูMINIX (และอ่านหนังสือ ) หรือสำหรับการแนะนำที่แตกต่างกัน (ทำงานน้อยลง แต่ให้ข้อมูลน้อยกว่า) ให้ดูแพ็คเกจที่ติดแท็ก“ จำเป็น” ( aptitude search '?essential') บน Debian หรือ Ubuntu และทำความเข้าใจกับสิ่งที่แต่ละคนทำ (มีมากกว่าเล็กน้อยขั้นต่ำ)
Gilles 'หยุดชั่วร้าย'

12

หากคุณถามว่าคุณสามารถติดตั้งหรืออัพเกรดเคอร์เนล "บน" ระบบที่มีอยู่โดยไม่ต้องติดตั้งโปรแกรมอื่น ๆ

เคอร์เนล Linux เป็นไฟล์ไบนารี่ปกติชื่อvmlinuz-x.x.x-x-nameในbootไดเรกทอรี (ซึ่งมักจะเป็นพาร์ติชันเล็ก ๆ แยกกันที่จุดเริ่มต้นของฮาร์ดไดรฟ์) โดยที่ x เป็นหมายเลขเวอร์ชัน "name" เป็นชื่อที่เลือกสำหรับเคอร์เนลที่สามารถตั้งค่าได้ในเวลาคอมไพล์คุณสามารถใช้เพื่อระบุชนิดของเครื่องหรือสถาปัตยกรรมที่เคอร์เนลใช้สำหรับเหตุผลอื่น ๆ

มันถูกโหลดในเวลาบูตโดย bootloader GRUBซึ่งโดยทั่วไปจะเรียกใช้โดยรหัสการบูตใน MBR ซึ่งถูกเรียกใช้โดย BIOS ROM เมื่อโหลดแล้วมันจะไม่ "เปิดค้าง" หรือได้รับการป้องกันเป็นพิเศษ ดังนั้นคุณสามารถแทนที่ไฟล์นั้นด้วยเคอร์เนลที่ใช้งานได้อื่น แต่GRUBมีคุณสมบัติเจ๋ง ๆ ที่ให้คุณเลือกหลายเมล็ดเพื่อบูตจาก ดังนั้นมันค่อนข้างฉลาดที่จะเพิ่มเคอร์เนลเพิ่มเติมของคุณลงในรายการนั้น แต่เก็บเคอร์เนลที่ใช้งานได้ตามปกติในกรณีที่สิ่งต่าง ๆ ผิดพลาด

ดิฉันเชื่อว่าเกือบทุกดิสทริบิวชันสร้างเคอร์เนล "แบบแยกส่วน" ที่มีไดรเวอร์อุปกรณ์อยู่ในไฟล์แยกกัน ดังนั้นเมล็ดส่วนใหญ่ต้องการระบบไฟล์ที่มีไดรเวอร์พร้อมใช้งานในเวลาบูตและนั่นคือสิ่งที่ "initrd" (ดิสก์ RAM เริ่มต้น) หรือ "initramfs" GRUBจะโหลดเคอร์เนลที่ตำแหน่งในหน่วยความจำและ initrd ที่ตำแหน่งอื่นและข้ามไปยังเคอร์เนลเพื่อบอกตำแหน่งที่เริ่มต้นคือเริ่มต้น Linux

ไดรเวอร์ยังสามารถ "สร้างไว้ใน" เคอร์เนลได้ดังนั้นจึงถูกโหลดโดยอัตโนมัติและพร้อมใช้งานเมื่อ bootloader โหลดvmlinuzอิมเมจ เคอร์เนลที่ทำงานบนระบบที่หลากหลาย (เช่นส่วนใหญ่ของการกระจาย) มักจะลดสิ่งที่สร้างไว้ในเคอร์เนลเนื่องจากฮาร์ดแวร์ที่มีอยู่จะถูกสแกนในภายหลังในกระบวนการบูตและโมดูลที่เป็นตัวแทนของฮาร์ดแวร์ปัจจุบันเท่านั้นที่จะถูกโหลด

มีเครื่องมือในการแก้ไขและสร้าง initrds Debian มีเครื่องมือที่ดีและฉันคิดว่าดิสทริบิวชันอื่น ๆ ก็ทำได้เช่นกัน

ดังนั้นหากคุณดาวน์โหลดเคอร์เนลล่าสุดจาก kernel.org และรวบรวมเพื่อสร้างอิมเมจไบนารีเคอร์เนลใหม่คุณต้องสร้างหรืออัปเดต initrd ด้วยไดรเวอร์ที่ทำงานกับเคอร์เนลนั้น initrd เก่าจะไม่ทำงานเนื่องจากไดรเวอร์ต้องจับคู่กับเวอร์ชันของเคอร์เนลที่ใช้งานอยู่

ไฟล์ initrd มีชื่อinitrd.img-x.x.x.x-nameคล้ายกับเคอร์เนลและสามารถแทนที่ได้หลังจากบูตเช่นเดียวกับเคอร์เนลและวิธีปฏิบัติที่ดีที่สุดจะระบุว่าคุณไม่ได้ลบ initrd ที่ใช้งานได้จนกว่าคุณจะรู้ว่าคุณสามารถบูตเข้าสู่เคอร์เนล + initrd ใหม่ได้สำเร็จ

ฉันหวังว่าจะให้บริบท

หากคุณกำลังมองหาการติดตั้งลีนุกซ์ "แบร์โบนส์" ที่ไม่มีโปรแกรมเพิ่มเติมติดตั้งไว้เลยตัวเลือกที่ฉันชอบมักจะติดตั้งnetinstอิมเมจDebian เสมอ ค่อนข้างมากคุณมีเพียงเครื่องมือพื้นฐานที่สุดที่จำเป็นในการเรียกใช้คอนโซลข้อความบรรทัดคำสั่งและnanoเป็นตัวแก้ไขข้อความ


5

rootfs ที่เรียกใช้งานเดี่ยว

ระบบขั้นต่ำที่แน่นอนเรียกใช้/initโปรแกรมเดียวตามที่ฉันได้อธิบายไว้ที่Single Application Linux | ผู้ใช้ขั้นสูง

ลินุกซ์สดน้อยที่สุด

https://github.com/ivandavidov/minimal

สำหรับระบบอินเทอร์แอคทีฟที่น่าสนใจยิ่งขึ้นนี่เป็นสคริปต์ขนาดเล็ก (ส่วนใหญ่เป็นการศึกษา)

  • ดาวน์โหลดซอร์สสำหรับเคอร์เนลและ busybox
  • รวบรวมพวกเขา
  • สร้าง ISO 8Mb ที่สามารถบู๊ตได้

ISO จะทำให้คุณอยู่ในเชลล์ขั้นต่ำด้วย busybox

ด้วย QEMU คุณสามารถบูตเข้าสู่ระบบได้อย่างง่ายดาย

ฉันได้ทำการแก้ไขเพื่ออนุญาตให้เรียกใช้จากไดเรกทอรีแหล่งเคอร์เนล: https://github.com/cirosantilli/runlinux

การใช้งาน:

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

และคุณจะถูกทิ้งไว้ในหน้าต่าง QEMU พร้อมกับระบบขั้นต่ำสุดใหม่ น่ากลัว

เนื่องจากมีขนาดเล็กจึงเป็นตัวเลือกที่ดีในการอ่านแหล่งที่มาและทำความเข้าใจกับสิ่งที่เกิดขึ้น

ทดสอบกับ Ubuntu 16.04

Buildroot

https://buildroot.org/

ชุด Makefile script ขนาดใหญ่ที่จัดการ:

  • เครื่องมือการคอมไพล์ข้าม GCC
  • การรวบรวมเคอร์เนล
  • การรวบรวม bootloader
  • การสร้างรูต
  • มีแพ็คเกจดาวน์โหลด / สร้างสูตรในทรีซอร์สรวมถึงสิ่งที่ซับซ้อนเช่น GTK มีระบบการพึ่งพา

ตัวอย่างที่น้อยที่สุด:

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.

มันมีสูตรสำหรับการสร้าง X11 ตั้งแต่เริ่มต้น: วิธีการติดตั้ง X11 บนระบบ Linux Buildroot ของฉันเอง?

สิ่งที่เป็นมืออาชีพ

Linux อัลไพน์

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

การกระจายแบบฝังด้วยตัวจัดการแพคเกจที่เสนอไบนารีที่คอมไพล์แล้วจากเว็บไซต์

ดูสิ่งนี้ด้วย


3

ฉันต้องการข้อเสนอแนะที่สองของ Shadurคุณควรทำให้มือของคุณสกปรกด้วยวิธี Linux ตั้งแต่เริ่มต้น
นอกจากนี้สิ่งที่คล้ายกันพยายามที่ท่องเที่ยวลินุกซ์

คู่มือพ็อกเก็ตลินุกซ์แสดงให้เห็นถึงวิธีการสร้างระบบ GNU / Linux บนคอนโซลขนาดเล็กโดยใช้ซอร์สโค้ดและดิสเก็ตเพียงไม่กี่แผ่น มันมีไว้สำหรับผู้ใช้ Linux ที่ต้องการทำความเข้าใจอย่างลึกซึ้งเกี่ยวกับวิธีการทำงานของระบบภายใต้คุณสมบัติและเครื่องมือเฉพาะด้านการกระจาย


2
แม้ว่าทราบว่าไม่มีใครในใจที่ถูกต้องแนะนำ / อย่างใดอย่างหนึ่ง / LFS หรือ PocketLinux สำหรับงานการผลิตที่สำคัญใด ๆ - พวกเขาดีสำหรับการเรียนรู้วิธีการทำงาน แต่มีเหตุผลกระจายส่วนใหญ่มาพร้อมกับชุดเต็มของเครื่องมือและส่วนหน้า สำหรับสิ่งที่มากที่สุด
Shadur

3

เป็นไปได้ที่จะติดตั้งเคอร์เนล Linux โดยไม่ต้องใช้เครื่องมือพื้นที่ผู้ใช้ตามปกติ โดยทั่วไปจะทำในระบบฝังตัวเช่นเราเตอร์ โดยทั่วไปแล้วเคอร์เนลจะถูกโหลดจาก ROM หรือหน่วยความจำแฟลชและได้รับการปรับแต่งสำหรับอุปกรณ์ที่มีปัญหา

อย่างน้อยหนึ่งโปรแกรมพื้นที่ผู้ใช้จำเป็นต้องมีอยู่เพื่อให้กลายเป็นกระบวนการ 'init' (ไม่จำเป็นต้องเรียกinitแต่เริ่มต้นโดยเคอร์เนลเป็นโปรเซส 1 และพาเรนต์อัตโนมัติของกระบวนการที่ถูกโยงถึง) - เว้นแต่เคอร์เนลถูกแก้ไข (แทน กว่ากำหนดเองเพียง) เพื่อไม่ต้องการสิ่งนี้

แน่นอนว่าไม่จำเป็นที่จะต้องมีเชลล์ที่พร้อมใช้งานสำหรับอุปกรณ์ที่ใช้ Linux แม้ว่ามันจะทำให้การพัฒนาง่ายขึ้นมาก!


2

distros ส่วนใหญ่มีการติดตั้ง "core" นี่คือสิ่งที่คุณต้องการ ดู ubuntu-minimal, debian net-install, archlinux (ค่าเริ่มต้นเป็นแค่แกนหลัก)

คำตอบอื่น ๆ มีประโยชน์หากคุณต้องการเรียนรู้ แต่นั่นอาจไม่ใช่ case = p

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.