编译一个基于debian/ubuntu,centos,arhlinux第三方系统

目录

前言

准备工作

下载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
bash 复制代码
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,之后解压好),并且修改名称方便管理

bash 复制代码
tar -xvf linux-6.6.17.tar.xz
mv linux-6.6.17 linux_kenel

接下来进入文件夹然后编译

bash 复制代码
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目录下

输入以下命令

bash 复制代码
apt install debootstrap
mkdir debian
debootstrap stable ./debian http://deb.debian.org/debian

这里面要等的久一些

安装好后进入mnt下的debian目录如下

像啊!很像我们debian目录下的文件(其实就是)

进入虚拟环境

接下里进入这个chroot虚拟环境

bash 复制代码
chroot /mnt/debian

可以看到我们以及借用chroot虚拟出来了一个debian环境(主要是获取其中的环境以及文件)

接下来就是要安装其他的软件或者是桌面环境了,这里和其他的网上教程一样,不多做赘述。

建议新建立一个用户

bash 复制代码
useradd 用户名

之后设定密码之类的就不多说了

然后退出虚拟环境

bash 复制代码
exit

把chroot的根目录文件打包为.gz文件

在mnt文件夹中新建一个文件夹rootfs,并且进入

bash 复制代码
mkdir /mnt/rootfs
cd /mnt/rootfs

把chroot根目录下所有文件拷贝到rootfs中

bash 复制代码
cp -r ../chroot-debian/* ./

编译init文件(用于系统启动时的一系列引导)

bash 复制代码
nano /mnt/rootfs/init
bash 复制代码
#!/bin/sh
dmesg -n 1
mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys
setsid cttyhack /bin/sh

给予文件夹权限

bash 复制代码
cd ../
chmod 777 /mnt/rootfs

将一个目录打包为一个压缩的root文件系统映像文件。

bash 复制代码
cd /mnt/rootfs
find . | cpio -R root:root -H newc -o | gzip > ../rootfs.gz

创建bios引导

下载syslinux解压

bash 复制代码
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文件夹方便管理

bash 复制代码
mkdir isobios
cd isobios

把一系列文件复制到其中

bash 复制代码
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 .

编辑引导文件

bash 复制代码
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文件

用该镜像文件生成虚拟机

虚拟机截图(注意现在时不带安装界面的,需要可以写一个刻录脚本即可)

相关推荐
虚伪的空想家17 分钟前
华为昇腾Atlas 800 A2物理服务器开启VT-d模式
运维·服务器·ubuntu·kvm·vt-d·直通
q***18842 小时前
Ubuntu上安装、使用Redis的详细教程
redis·ubuntu·bootstrap
星驰云2 小时前
记一次CentOS 硬盘损坏无法启动修复教程
linux·运维·centos
人工智能训练2 小时前
windows系统中的docker,xinference直接运行在容器目录和持载在宿主机目录中的区别
linux·服务器·人工智能·windows·ubuntu·docker·容器
代码对我眨眼睛3 小时前
Ubuntu 系统 NVIDIA 显卡驱动自动化安装全流程
linux·ubuntu·自动化
xuyanqiangCode3 小时前
Ubuntu二进制安装Apache Doris(2.1版本)
linux·ubuntu·apache
笨笨聊运维13 小时前
CentOS官方不维护版本,配置python升级方法,无损版
linux·python·centos
Warren9814 小时前
Python自动化测试全栈面试
服务器·网络·数据库·mysql·ubuntu·面试·职场和发展
HIT_Weston14 小时前
39、【Ubuntu】【远程开发】拉出内网 Web 服务:构建静态网页(二)
linux·前端·ubuntu
阿拉斯攀登17 小时前
CentOS 7.9 上 Docker 安装、配置与实战使用指南
docker·centos