目录
前言
准备工作
下载linux源码进行编译
linux源码下载
网站
问题
解决办法
编译
可能会遇到的问题
chroot下载debian环境
进入虚拟环境
把chroot的根目录文件打包为.gz文件
编译init文件(用于系统启动时的一系列引导)
给予文件夹权限
创建bios引导
下载syslinux解压
创建iso文件夹方便管理
把一系列文件复制到其中
编辑引导文件
生成镜像
前言
这边由于操作比较多,整合了许多大佬的教程以及自行的摸索,流程会长一些,可能对于一些程序的错误以及bug可能会忘记提及,不过我印象比较深亦或者是网上几乎找不到答案的bug和错误都会提及
准备工作
- 一台装有linux的电脑或者虚拟机用于编译(博主的环境是ubuntu23.10)debian系的都也可以(理论上其他系的也可以,但是部分安装软件的命令要做改变,这边不多做阐述)。
- 一台装有VMware的虚拟机用于验证安装镜像(或者其他装有可以进行虚拟化软件/系统(pve,exsi...)都行
- 一个善于发现问题解决问题的心(
下载linux源码进行编译
linux源码下载
网站
The Linux Kernel Archiveshttps://kernel.org/
问题
由于部分版本的linux内核编译的有些设置冲突会出错,非常难以调整。
解决办法
这边我试了几个版本的内核,最终确定为6.6.17
官网可能会没有这边给出123云盘链接
linux-6.6.17.tar.xz官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供linux-6.6.17.tar.xz最新版正式版官方版绿色版下载,linux-6.6.17.tar.xz安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装https://www.123pan.com/s/HrkuVv-X9FX.html
编译
更新软件源
apt update
apt install -y make
apt install -y make-guile
apt install -y gcc
apt install -y flex
apt install -y bison
apt install -y libelf-dev
apt install -y openssl
apt install -y libncurses-dev
apt install -y libssl-dev
(灵性一点,其他诸如红帽系的linux改一下安装命令后面不多讲了)
把下载好的源码通过xftp传到linux中(我这边的目录为/mnt,之后解压好),并且修改名称方便管理
tar -xvf linux-6.6.17.tar.xz
mv linux-6.6.17 linux_kenel
接下来进入文件夹然后编译
mv linux_kenel
make defconfig #使用默认配置
make bzImage -j 4 #使用4个核心编译(没有这么多减几个,核心够加几个),并且编译为bzImage格式
bzImage 是 Linux 内核的一种格式,它是压缩过的内核镜像,包含了启动时所需的所有代码和数据。
最后执行好后内核在/mnt/linux_kenel/arch/x86/boot目录下的bzImage也就是相对路径的./arch/x86/boot
可能会遇到的问题
可能会有一些文件缺失,不过百度一下错误都会有,就是打几遍apt命令就是了
chroot下载debian环境
放回mnt目录下
输入以下命令
apt install debootstrap
mkdir debian
debootstrap stable ./debian http://deb.debian.org/debian
这里面要等的久一些
安装好后进入mnt下的debian目录如下
像啊!很像我们debian目录下的文件(其实就是)
进入虚拟环境
接下里进入这个chroot虚拟环境
chroot /mnt/debian
可以看到我们以及借用chroot虚拟出来了一个debian环境(主要是获取其中的环境以及文件)
接下来就是要安装其他的软件或者是桌面环境了,这里和其他的网上教程一样,不多做赘述。
建议新建立一个用户
useradd 用户名
之后设定密码之类的就不多说了
然后退出虚拟环境
exit
把chroot的根目录文件打包为.gz文件
在mnt文件夹中新建一个文件夹rootfs,并且进入
mkdir /mnt/rootfs
cd /mnt/rootfs
把chroot根目录下所有文件拷贝到rootfs中
cp -r ../chroot-debian/* ./
编译init文件(用于系统启动时的一系列引导)
nano /mnt/rootfs/init
#!/bin/sh
dmesg -n 1
mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys
setsid cttyhack /bin/sh
给予文件夹权限
cd ../
chmod 777 /mnt/rootfs
将一个目录打包为一个压缩的root文件系统映像文件。
cd /mnt/rootfs
find . | cpio -R root:root -H newc -o | gzip > ../rootfs.gz
创建bios引导
下载syslinux解压
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
gunzip syslinux-6.03.tar.gz
tar -xvf syslinux-6.03.tar
创建iso文件夹方便管理
mkdir isobios
cd isobios
把一系列文件复制到其中
cp ../rootfs.gz .
cp ../linux_kenel/arch/x86/boot/bzImage kernel.gz
cp ../syslinux-6.03/bios/core/isolinux.bin .
cp ../syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 .
编辑引导文件
nano isolinux.cfg
编辑如下
default kernel.gz initrd=rootfs.gz
生成镜像
sudo apt install -y xorriso -y
xorriso -as mkisofs -o ../mybios.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./
在目录/mnt下有mybios.iso文件
用该镜像文件生成虚拟机
虚拟机截图(注意现在时不带安装界面的,需要可以写一个刻录脚本即可)