โครงการนี้ช่วยให้คุณสร้าง Linux Distro ตั้งแต่เริ่มต้น
เราต้องการการอ้างอิงบางอย่างดังนั้นติดตั้งสิ่งเหล่านี้
sudo apt get install bzip2 git vim make gcc libncurses-dev flex bison bc cpio libelf-dev libssl-dev syslinux dosfstools
ตอนนี้เราต้องโคลนเคอร์เนล Linux และแก้ไข
git clone --depth 1 https://github.com/torvalds/linux.git
ตอนนี้เปลี่ยนเป็นไดเรกทอรี Linux
cd linux
ตอนนี้เราต้องแก้ไขเคอร์เนลโดยการแก้ไขตัวเลือกนี้จะเปิดเมนูแบบโต้ตอบ
make menuconfig
ตรวจสอบให้แน่ใจว่าเลือก 64 bit kernel (NEW)
จากนั้นหลังจากทำ menuconfig ถ้าคุณมีคอร์มากกว่า 6 มากกว่าที่คุณสามารถทำได้มากกว่า 6 เช่นฉันมี 8 คอร์
make -j 8
หลังจาก Kenel รวบรวมเสร็จ (ช่วงเวลา Gentoo) คุณจะเห็นข้อความที่มี bZimage ทำไดเรกทอรีชื่อ boot-files
mkdir /boot-files
จากนั้นคัดลอก bZimage ไปยังไดเร็กทอรี boot-files
cp arch/x86/boot/bzImage /boot-files
bzImage เป็นไฟล์สำหรับการบูตซีดีระบบกลับ
cd ..
ตอนนี้โคลน busybox
git clone --depth 1 https://git.busybox.net/busybox
จากนั้นป้อนไดเรกทอรี busybox
cd busybox
จากนั้นทำ menuconfig
make menuconfig
ไปที่ settings > Build static binary (no shared libs) (NEW) เลือกตอนนี้บันทึกเหตุผลที่เราสร้าง static ที่เป็นเพราะเราไม่ต้องการไบนารีภายนอกในขณะนี้ด้วยจำนวนคอร์ที่คุณ make -j <cores>
make -j 8
หลังจาก BusyBox รวบรวมเสร็จแล้วทำ initramds
mkdir /boot-files/initramfs
ตอนนี้วิ่ง
make CONFIG_PREFIX=/boot-files/initramfs install
Initramfs เป็นระบบไฟล์เริ่มต้นที่เคอร์เนลโหลดหลังจากบูตเราจะวาง busybox ไว้ที่นั่นตอนนี้ย้ายไปที่โฟลเดอร์นั้น
cd /boot-files/initramfs/
ตอนนี้สร้างไฟล์ที่เรียกว่า init
nano init
ตอนนี้เพิ่มคำสั่งเหล่านี้เป็น init
#!/bin/sh
/bin/sh
ตอนนี้บันทึกตอนนี้ลบ linuxrc ไม่จำเป็นสำหรับไฟล์นั้น
rm linuxrc
ตอนนี้เพิ่ม Permessions exec ไปยัง init
chmod +x init
ตอนนี้พบแล้วแพ็คไว้ที่ .cpio archive
find . | cpio -o -H newc > ../init.cpio
-o หมายถึงสร้างคลังเก็บใหม่ตอนนี้ไป 1 dir back
cd ..
ตอนนี้ไฟล์ถูกสร้างขึ้นใช้ ls เพื่อดู แต่เราจะใช้ bootloader ที่เรียกว่า syslinux make bootfile
dd if=/dev/zero of=boot bs=1M count=50
สิ่งนี้จะสร้างไฟล์ที่เป็น 50-100 เมกะไบต์และมันจะเต็มไปด้วยศูนย์เราจะใช้ระบบไฟล์ fat
mkfs -t fat boot
จากนั้นวิ่ง
syslinux boot
ตอนนี้สร้างไดเรกทอรีที่เรียกว่าอะไรก็ได้ แต่เพื่อความปลอดภัยเราจะใช้ m แล้ว Mount Boot to M
mkdir m
mount boot m
จากนั้นคัดลอกเคอร์เนลและ initramfs ไปยัง boot fs
cp bzImage init.cpio m
ตอนนี้ unmount มัน
unmount m
ตอนนี้ภาพบูตพร้อมแล้วเราจะบูตมันขึ้น
qemu-system-x86_64 boot
syslinux จะบูตและจะถามว่าไฟล์ใดที่จะใช้บูตใช้
/bzImage -initrd=init.cpio
ลิงก์ DFS GUI DFS For Embedded Devices