编译一个基于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文件

用该镜像文件生成虚拟机

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

相关推荐
Ven%2 小时前
centos查看硬盘资源使用情况命令大全
linux·运维·centos
上辈子杀猪这辈子学IT3 小时前
【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
linux·hadoop·zookeeper·centos·debian
minihuabei3 小时前
linux centos 安装redis
linux·redis·centos
wowocpp4 小时前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu
山河君5 小时前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
knighthood20015 小时前
解决:ros进行gazebo仿真,rviz没有显示传感器数据
c++·ubuntu·ros
wowocpp16 小时前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu
Diamond技术流18 小时前
从0开始学习Linux——远程连接工具
linux·学习·centos·ssh·xshell·ftp
wowocpp18 小时前
ubuntu 22.04 防火墙 ufw
linux·运维·ubuntu
188_djh1 天前
# Python基础到实战一飞冲天(一)--linux基础(一)
linux·开发语言·python·ubuntu·centos·os·operationsystem