首先在分配系统内存建议不低于50g,默认20g编译后会停下来报错
先把一些包,依赖提前下好
sudo apt-get install libncurses5-dev openssl libssl-dev libelf-dev zlibc minizip
sudo apt-get install build-essential openssl pkg-config libc6-dev bison flex libidn11-dev libidn11 dwarves lzop
将压缩包解压到指定路径
sudo tar -xavf linux-6.5.6.tar.xz -C /usr/src
cd /usr/src/linux-6.5.6
清除编译过程产生的中间文件,将内核代码还原为刚解压的状态,最好每次编译前执行一下。
5.清除上次编译产生的中间文件。
sudo make mrproper
sudo make clean
6.配置编译参数,编译的内核模块选择。
sudo make menuconfig
出现.config文档后->save生成config文档,按 “下箭头” 到 Exit
,回车。
编辑.config文档
sudo gedit .config
CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
改为 CONFIG_SYSTEM_TRUSTED_KEYS=""
CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"
改为 CONFIG_SYSTEM_REVOCATION_KEYS=""
7.编译内核。2
表示编译时用几个线程编译,最大不要超过CPU个数的两倍。也可直接使用sudo make
编译。
sudo make -j2
这个命令执行后需要很久很久很久,具体多久取决于电脑性能等。
8.安装内核模块,驱动等。
sudo make modules_install
sudo make install
需要一点时间,但不会太久。
9.接着依次输入命令。
sudo mkinitramfs /lib/modules/6.5.6 –o /boot/initrd.img-6.5.6-generic
sudo update-initramfs -c -k 6.5.6
sudo update-grub2
重启查看
sudo reboot
uname -a
2023-10-24改
sudo apt-get install curl
gedit start.sh
将下面内容粘贴进去
# download code
curl https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.229.tar.xz -o linux-4.9.229.tar.xz
#
# export ARCH=x86
# unzip Kernel
tar xf linux-4.9.229.tar.xz
#
cd linux-4.9.229
# install curses
sudo apt-get install libncurses5-dev
#
# make x86_64_defconfig
#
cd ..
curl https://busybox.net/downloads/busybox-1.30.0.tar.bz2 -o busybox-1.30.0.tar.bz2
#
tar xf busybox-1.30.0.tar.bz2
会得到两个文件夹
先编译linux-4.9.229内核
cd linux-4.9.229
进入root用户
sudo su
export ARCH=x86
make x86_64_defconfig
make menuconfig
General setup --->
----> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
Device Drivers --->
[*] Block devices --->
<*> RAM block device support
(65536) Default RAM disk size (kbytes)
make -j2
编译成功后的内核位于:arch/x86_64/boot/bzImage
在这里我们把busybox配置为静态编译,这样busybox在运行的时候就不需要额外的动态链接库了。
make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
make && make install
编译且安装
# mkdir etc dev mnt
# mkdir -p proc sys tmp mnt
# mkdir -p etc/init.d/
# gedit etc/fstab
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
# gedit etc/init.d/rcS
echo -e "Welcome to tinyLinux"
/bin/mount -a
echo -e "Remounting the root filesystem"
mount -o remount,rw /
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
# chmod 755 etc/init.d/rcS
# gedit etc/inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
# chmod 755 etc/inittab
# cd dev
# mknod console c 5 1
# mknod null c 1 3
# mknod tty1 c 4 1
这样一个最小的、完整的可以被内核启动的文件系统就齐活啦。
dd if=/dev/zero of=./rootfs.ext3 bs=1M count=32
mkfs.ext3 rootfs.ext3
mkdir fs
mount -o loop rootfs.ext3 ./fs
cp -rf ./_install/* ./fs
umount ./fs
gzip --best -c rootfs.ext3 > rootfs.img.gz
sudo apt-get install qemu
qemu-system-x86_64 -kernel ./linux-4.9.229/arch/x86_64/boot/bzImage -initrd ./busybox-1.30.0/rootfs.img.gz -append "root=/dev/ram init=/linuxrc console=ttyS0" -serial mon:stdio -nographic