码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 编译一个基于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 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
    1. apt install -y make
    2. apt install -y make-guile
    3. apt install -y gcc
    4. apt install -y flex
    5. apt install -y bison
    6. apt install -y libelf-dev
    7. apt install -y openssl
    8. apt install -y libncurses-dev
    9. apt install -y libssl-dev

    (灵性一点,其他诸如红帽系的linux改一下安装命令后面不多讲了)

    把下载好的源码通过xftp传到linux中(我这边的目录为/mnt,之后解压好),并且修改名称方便管理

    1. tar -xvf linux-6.6.17.tar.xz
    2. mv linux-6.6.17 linux_kenel

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

    1. mv linux_kenel
    2. make defconfig #使用默认配置
    3. make bzImage -j 4 #使用4个核心编译(没有这么多减几个,核心够加几个),并且编译为bzImage格式

    bzImage 是 Linux 内核的一种格式,它是压缩过的内核镜像,包含了启动时所需的所有代码和数据。

    最后执行好后内核在/mnt/linux_kenel/arch/x86/boot目录下的bzImage也就是相对路径的./arch/x86/boot

    可能会遇到的问题

    可能会有一些文件缺失,不过百度一下错误都会有,就是打几遍apt命令就是了

    chroot下载debian环境

    放回mnt目录下

    输入以下命令

    1. apt install debootstrap
    2. mkdir debian
    3. debootstrap stable ./debian http://deb.debian.org/debian

    这里面要等的久一些

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

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

    进入虚拟环境

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

    chroot /mnt/debian

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

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

    建议新建立一个用户

    useradd 用户名

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

    然后退出虚拟环境

    exit

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

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

    1. mkdir /mnt/rootfs
    2. cd /mnt/rootfs

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

    cp -r ../chroot-debian/* ./
    

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

    nano /mnt/rootfs/init
    1. #!/bin/sh
    2. dmesg -n 1
    3. mount -t devtmpfs none /dev
    4. mount -t proc none /proc
    5. mount -t sysfs none /sys
    6. setsid cttyhack /bin/sh

    给予文件夹权限

    1. cd ../
    2. chmod 777 /mnt/rootfs

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

    1. cd /mnt/rootfs
    2. find . | cpio -R root:root -H newc -o | gzip > ../rootfs.gz

    创建bios引导

    下载syslinux解压

    1. wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
    2. gunzip syslinux-6.03.tar.gz
    3. tar -xvf syslinux-6.03.tar

    创建iso文件夹方便管理

    1. mkdir isobios
    2. cd isobios

    把一系列文件复制到其中

    1. cp ../rootfs.gz .
    2. cp ../linux_kenel/arch/x86/boot/bzImage kernel.gz
    3. cp ../syslinux-6.03/bios/core/isolinux.bin .
    4. cp ../syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 .

    编辑引导文件

    nano isolinux.cfg

    编辑如下 

    default kernel.gz initrd=rootfs.gz

    生成镜像

    1. sudo apt install -y xorriso -y
    2. 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文件

    用该镜像文件生成虚拟机

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

    一些问题以及解决办法

    编译一个基于debian/ubuntu,centos,arhlinux第三方系统的问题解答-CSDN博客这边由于操作比较多,整合了许多大佬的教程以及自行的摸索,流程会长一些,可能对于一些程序的错误以及bug可能会忘记提及,不过我印象比较深亦或者是网上几乎找不到答案的bug和错误都会提及。目录文件是/lib/modules/6.5.0-28-generic,把它复制到你文件的相应目录就可以找到相应的硬盘了。由于开机的信息跳的太快了,我用obs录屏+慢放找到时内存给的不够(写博客的时候视频给我删了,对不起),因为此系统是全部加载到内存之中的。需要你的iso镜像中拥有它,只需将他放入你打包镜像的工作目录即可。https://blog.csdn.net/mumuemhaha/article/details/138040554?spm=1001.2014.3001.5502正在归纳了一小部分会遇到的问题(看我遇到多少就写多少吧)

  • 相关阅读:
    支持I2S数字音频接口;音频功放芯片NTP8835C
    go-carbon v2.2.13 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库
    Vue学习之计算属性
    FFT专题:IFFT后信号如何重建
    自控力前言
    VmWare采用工具kubeadm 快速k8s集群部署
    前端爱心代码跟个风
    XXXSpringMVC“框架的简单创建与使用,快速上手;
    2021-06-15 51单片机c语言秒表的仿真ISIS7 professional
    广东启动“粤企质量提升工作会议” 着力提升产品和服务质量
  • 原文地址:https://blog.csdn.net/mumuemhaha/article/details/137979943
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号