该项目使您可以从头开始构建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
凯内尔bZimage boot-files
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