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

server/2024/10/25 18:34:53/

目录

前言

准备工作

下载linux源码进行编译

linux源码下载

网站

问题

解决办法

编译

可能会遇到的问题

debian%E7%8E%AF%E5%A2%83-toc" style="margin-left:0px;">chroot下载debian环境

进入虚拟环境

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

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

给予文件夹权限

创建bios引导

下载syslinux解压

创建iso文件夹方便管理

把一系列文件复制到其中

编辑引导文件

生成镜像


前言

这边由于操作比较多,整合了许多大佬的教程以及自行的摸索,流程会长一些,可能对于一些程序的错误以及bug可能会忘记提及,不过我印象比较深亦或者是网上几乎找不到答案的bug和错误都会提及

准备工作

  • 一台装有linux的电脑或者虚拟机用于编译(博主的环境是ubuntu23.10)debian系的都也可以(理论上其他系的也可以,但是部分安装软件的命令要做改变,这边不多做阐述)。
  • 一台装有VMware的虚拟机用于验证安装镜像(或者其他装有可以进行虚拟化软件/系统(pve,exsi...)都行
  • 一个善于发现问题解决问题的心(

下载linux源码进行编译

linux源码下载

网站

The Linux Kernel Archivesicon-default.png?t=N7T8https://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免费下载安装到手机,支持电脑端一键快捷安装icon-default.png?t=N7T8https://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命令就是了

debian%E7%8E%AF%E5%A2%83">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文件

用该镜像文件生成虚拟机

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


http://www.ppmy.cn/server/3940.html

相关文章

npm环境搭建

npm是什么 npm是前端的包管理工具,类似于后端的maven。现在npm已经集成到nodeJs中,安装好nodeJs就可以安装好npm了。 npm初始配置 一般下载好nodeJs后要对npm进行一些初始化配置。 修改npm的镜像源 npm默认的镜像源是https://registry.npmjs.org/&a…

Git的常用使用操作总结

一、常用的本地使用的操作 1、创建一个版本库:git init 2、查看工作区的与上一版的详细差异:git diff 3、查看缓存区和上一版的详细差异:git diff --cached 4、载入全部到暂存:git add -A[<path>] 5、提交暂存区:git commit -m “备注” 6、查看文件状态:git…

和鲸科技将参与第五届空间数据智能学术会议并于应急减灾与可持续发展专题论坛做报告分享

ACM SIGSPATIAL中国分会致力于推动空间数据的研究范式及空间智能理论与技术在时空大数据、智慧城市、交通科学、社会治理等领域的创新与应用。ACM SIGSPATIAL中国分会创办了空间数据智能学术会议&#xff08;SpatialDI&#xff09;&#xff0c;分会将于2024年4月25日-27日在南京…

营销场景的自动化建模思考

一、需求分析 在营销场景实际业务中&#xff0c;例如节日大促&#xff0c;新品发售等场景确定模型相对于专家规则有效果后&#xff0c;后续是两个方向 1、要么单个场景做单点突破&#xff0c;例如已经准确率已经达到90%了&#xff0c;想要进一步提升&#xff0c;例如从梯度提…

运维前端vue部署

文章目录 一、本地环境准备二、代码结构及功能三、部署上线步骤简介补充代码操作命令 补充代码操作命令 四、接收后端数据统一接口五、其他 一、本地环境准备 1.node.js 安装&#xff08;建议版本&#xff1a;v14.16.0&#xff09; 参考&#xff1a;https://www.cnblogs.com/l…

计算机网络---第十一天

生成树协议 stp作用&#xff1a; 作用&#xff1a;stp用于解决二层环路问题。 BPDU&#xff1a; 含义&#xff1a;桥协议数据单元&#xff0c;用于传递stp协议相关报文 分类&#xff1a;配置bpdu---用于传递stp的配置信息 tcn bpdu---用于通告拓扑变更信息 包含信息&…

P对P替代PS8409A 的功能如下

同时支持交流耦合和直流耦合TMDS输入 数据速率高达10 Gbps&#xff0c;兼容HDMI 1.4b、HDMI 2.0b和HDMI 2.1 FRL 通过AUX支持I2C 可编程接收器数据通道均衡器增益高达16 dB EQ、预加重、输出摆幅和转换速率的全局或独立通道控制 使用片上电阻器或片外电阻器调节TMDS输出振…

类的加载,反射和注解详解

文章目录 类的加载概述类加载器作用分类获取类加载器的方式 双亲委派机制3种加载器的关系工作机制 类加载器的应用 反射概述关键获取类对象获取构造器对象获取方法对象获取成员变量对象作用 注解概述作用自定义注解格式属性类型 元注解常见的元注解 注解解析概述方法技巧 类的加…