該項目使您可以從頭開始構建Linux發行版
我們需要一些依賴項,所以安裝這些
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
boot-files bZimage Kenel
mkdir /boot-files
然後將bZimage複製到boot-files目錄
cp arch/x86/boot/bzImage /boot-files
bzImage是用於啟動系統CD的文件
cd ..
現在克隆忙箱
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
現在將Exec Persessions添加到INIT
chmod +x init
現在找到然後將其打包到.cpio存檔
find . | cpio -o -H newc > ../init.cpio
-o意味著創建一個新的檔案,現在回到1 dir
cd ..
現在已創建文件使用ls來查看它,但是我們將使用名為syslinux的引導加載程序使BootFile
dd if=/dev/zero of=boot bs=1M count=50
這將製造一個50-100兆字節的文件,它將填充零,我們將使用fat文件系統
mkfs -t fat boot
然後運行
syslinux boot
現在製作一個名目,但為安全,我們將使用m然後將靴子安裝到M
mkdir m
mount boot m
然後將內核和initramfs複製到boot FS
cp bzImage init.cpio m
現在卸載它
unmount m
現在啟動圖像已經準備就緒,所以我們將其啟動
qemu-system-x86_64 boot
Syslinux將啟動,並詢問要啟動什麼文件
/bzImage -initrd=init.cpio
鏈接DFS For Embedded Devices DFS GUI DFS