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

news2024/11/19 14:38:13

目录

前言

准备工作

下载linux源码进行编译

linux源码下载

网站

问题

解决办法

编译

可能会遇到的问题

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命令就是了

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.coloradmin.cn/o/1610113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zabbix 监控软件(一)

通常我们服务搭建成功 但不清楚服务器的运行状况,这时候就需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。 利用一个优秀的监控软件,我们可以: ●通过一个友好的界…

基于java+springboot+vue实现的物业管理系统(文末源码+Lw+ppt)23-23

摘 要 快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,通过线上物业管理系统也就相继涌现。与此同时,人们开始接受方…

Leetcode算法训练日记 | day31

专题九 贪心算法 一、分发饼干 1.题目 Leetcode:第 455 题 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的…

如何查看项目中使用的Qt版本

如何查看项目中使用的Qt版本 1.点击左下角电脑按钮查看Qt版本。 2.点击左侧栏项目按钮查看Qt版本。

Android开发——Fragment

Demo fragment_blank.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_pare…

Windows系统远程桌面服务(RDP)的安全层和加密级别

1.【win10企业版/server2012】 1.服务器运行gpedit.msc&#xff0c;打开本地组策略&#xff0c;进入列表目录【计算机配置】-【管理模板】-【windows组件】-【远程桌面服务】-【远程桌面会话主机】-【安全】 2.双击“远程(RDP)连接要求使用指定的安全层”选项&#xff0c;配置…

Redis入门到通关之数据结构解析-RedisObject

文章目录 ☃️概述☃️源码 ☃️概述 RedisObject 是 Redis 中表示数据对象的结构体&#xff0c;它是 Redis 数据库中的基本数据类型的抽象。在 Redis 中&#xff0c;所有的数据都被存储为 RedisObject 类型的对象。 RedisObject 结构体定义如下&#xff08;简化版本&#xf…

linux负载均衡 和 系统负载分析笔记

1 负载均衡 1.1 计算负载 1.1.1 PELT算法简介 从Linux3.8内核以后进程的负载计算不仅考虑权重&#xff0c;⽽且跟踪每个调度实体的历史负载情况&#xff0c;该算法称为PELT(Per-entity Load Tracking) 《奔跑吧Linux内核》卷1&#xff1a;基础架构&#xff1b;P505 相关资料…

LeetCode216:组合总和Ⅲ

题目描述 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 解题思想 使用回溯算法 代码 class So…

Cubemx+RTL8201驱动

Cubemx 生产的驱动只能选择LAN8742&#xff0c;无法适配RTL8201&#xff0c;这篇文字就分享一下如何逐步修改lan8742的代码去适配。 一、地址问题 入口函数&#xff1a;int32_t LAN8742_Init(lan8742_Object_t *pObj) 主要是做PHY 地址检测&#xff0c;但是我们查阅RTL8201手…

2024中国国际中医药健康服务博览会(7月深圳中医药展)

聚焦中医国粹&#xff0c;助力健康中国 2024第五届中国国际中医药健康服务&#xff08;深圳&#xff09;博览会 暨粤港澳大湾区中医药高质量发展大会 邀请函 时间&#xff1a;2024年7月31日-8月2日 地址:深圳会展中心&#xff08;福田&#xff09; 支持单位&#xff…

WIFISKY 7层流控路由器 confirm.php RCE漏洞复现

0x01 产品简介 WIFISKY-7层流控路由器是一款可用于家庭或办公环境的无线路由器,具备流控功能以优化网络流量和提供更稳定的网络连接。该路由器采用了7层流控技术,能够依据网络数据包的内容进行智能管理,从而实现对网络流量的精细化控制和优化。这种技术可以提升网络的整体性…

MySQL-数据库基础

一、背景与基本使用 首先是登录方式&#xff0c;一般用 mysql -h 127.0.0.1 -P 3306 -u root -p mysql也是一种网络服务。 当然我们在本地登录时可以省去主机ip和端口号。 -h表示我们要登录mysql在哪个ip的主机上&#xff0c; -P表示端口号。 -u表示以谁的身份去登录。…

DDR的概念解读-提升速度的四把板斧

计算机以及手机系统性能的改善&#xff0c;不仅仅取决于cpu处理器主频的提升&#xff0c;还与cpu和内存之间的访问速度密切相关。 SDRAM: Synchronous Dynamic Random Access Memory,同步动态随机存取存储器&#xff0c;同步是指Memory工作需要同步时钟&#xff0c;内部命令的发…

最新热点:博弈+低碳!基于多主体主从博弈的区域综合能源系统低碳经济优化调度程序代码!

前言 随着能源需求上升及环境污染日益严重&#xff0c;安全高效、低碳清洁已成为能源发展的主流方向。在此背景下&#xff0c;统筹多能耦合、协同调度的区域综合能源系统已成为高效利用能源的重要形式。实现多能供应的安全性、经济性和灵活性的有效手段是优化RIES运行。因此&a…

vbox两步解决VirtualBox共享文件夹在Windows下的符号链接创建问题

默认情况下&#xff0c;VirtualBox 的共享文件夹特性在 Windows 下工作是有问题的&#xff0c;如果你运行一些需要符号连接&#xff08;Symlink&#xff09;的程序&#xff0c;比如默认设置的 yarn 或者 npm&#xff0c;由于 npm 包在安装之后会在 ./node_modules/.bin 创建在 …

B008-方法参数传递可变参数工具类

目录 方法参数传递可变参数冒泡排序Arrays工具类Arrays工具类常用方法 方法参数传递 /*** java中只有值传递* 基本数据类型 传递的是具体的值* 引用数据类型 传递的是地址值*/ public class _01_ParamPass {public static void main(String[] args) {// 调用方法 getSumge…

InFusion:通过从扩散先验学习深度补全来进行图像 3D 高斯修复

InFusion 以其图像条件模型超越了当前的方法&#xff0c;提供精确的深度修复并支持纹理定制和对象插入等高级应用程序。 github项目页面&#xff1a; Infusion Github 仓库&#xff1a;GitHub - ali-vilab/Infusion: Official implementations for paper: InFusion: Inpainti…

婚恋相亲软件优缺点揭秘:世纪佳缘、青藤之恋、二狗、伊对

曾经我也是个大龄单身狗&#xff0c;把市面上主流的相亲软件都装了一个遍&#xff0c;也充了不少会员&#xff0c;踩了不少坑&#xff0c;现把各个婚恋软件的优缺点梳理给大家。 二狗&#xff1a;原腾讯产品经理做的&#xff0c;号称高学历平台&#xff0c;用户质量堪称人类天花…

pycharm-git 配置(1)

1.安装git2.pycharm 中配置git 插件 弹出Git版本号&#xff0c;即配置成功。3.创建本地仓库 VCS->VCS operations->create repository->设置本地目录 左下角可以看到git本地仓库git可以看到push,commit。 4.配置远方仓库&#xff0c;此时确保git上是有这个项目…