debian-installer初探

2023-05-16

一、构建debian-installer

1.安装debian系统

选择并下载系统: https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/

iso文件方式安装: 使用virtualbox虚拟机安装

制作U盘启动盘方式安装:

a. 给优盘分两个区/dev/sdx1、/dev/sdx2     
b. 使用 U 盘的第一个分区,而不是整个设备
c. 安装mbr:`install-mbr /dev/sdx`
d. 建立文件系统:`mkdosfs /dev/sdx1`
e. 拷贝镜像里的文件到优盘的第一个分区

2.设置/etc/apt/sources.list中的软件源

deb http://ftp.debian.org/debian sid main
deb-src http://ftp.debian.org/debian sid main

3.安装工具软件

apt-get install myrepos git curl
apt-get install fakeroot

4.获得debian-installer源码

使用: mr bootstrap https://salsa.debian.org/installer-team/d-i/raw/master/.mrconfig debian-installer
或: https://wiki.debian.org/DebianInstaller/CheckOut 中的其他方式

目录结构如下图:
在这里插入图片描述


5.构建debian-installer

a. 处理依赖问题:

cd debian-installer
apt build-dep debian-installer
apt-get install “要安装的包”

b. 修改 “installer/config/common” 配置文件:

LINUX_KERNEL_ABI ?= 5.10.0-8
USE_UDEBS_FROM = stable

c. 清理操作: make reallyclean

d. 构建: fakeroot make build_cdrom_gtk

ps: 在 http://ftp.debian.org/debian/dists/stable/main/installer-amd64/current/images/ 可以找到已经编译好的现成的安装器的打包


一个问题:
a.编译好的initrd系统里,像user-setup-udeb这些包究竟放在了哪里?
在这里插入图片描述
在这里插入图片描述


6.构建installation-guide

a. 路径中不要包含中文,否则会报xml解析错误:
在这里插入图片描述
b. 处理依赖问题

dpkg-checkbuilddeps
aptitude install -R “要安装的包”

c. 构建

cd installation-guide
dpkg-buildpackage

d. 得到如下deb包
在这里插入图片描述
e. 解压一个deb即得到文档
在这里插入图片描述

**ps:**其实debian镜像中已经分发的有文档了,在镜像的 doc/manual/zh_CN/install.zh_CN.pdf 即是



二、debian-installer启动流程

官方说明文档在这里: https://d-i.debian.org/doc/internals/

这里结合个人理解进行一些讲解:


1.安装器系统加载的大致流程

a.系统启动的时候,加载内核
通过 内核调试技术 可以模拟一个x86机器上的linux内核加载过程:

例子:
在这里插入图片描述
比对debain-installer的安装 日志 可以确定安装器的初始化开始的时机:
在这里插入图片描述
b.内核初始化完成后执行/init程序执行了"/sbin/busybox init",读取/etc/inittab配置文件
在这里插入图片描述


2.debian安装器运行在哪里?

a. debian安装器在打包的时候会生成initrd.gz文件,启动系统安装的时候,安装器就运行在这个“定制版的“initrd系统里

第一进程是 /sbin/busybox init
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

安装前文件系统的挂载情况
在这里插入图片描述

debian-installer-setup.d执行完后触发initab的从新加载
在这里插入图片描述

b. debain安装器的initrd系统和装好后的initrd系统是 不一样的
使用内核解压命令:“gunzip initrd.gz”、“cpio -ivdu < initrd”
在这里插入图片描述

c. 安装好后的sbin中的init都指向了systemd (uos和debian的对比)
在这里插入图片描述


3.从加载main-menu模块到显示安装器界面的过程

mian-menu 的加载是由 /lib/debian-installer.d/S70Menu 脚本中执行 /lib/debian-installer/menu 脚本触发的, /lib/debian-installer/menu 脚本中执行:“exec debconf -o d-i $MENU” 其中变量值 $MENU 就是 mian-menu。这里开始 debconf 首先完成自己初始化操作,根据nDEBIAN_FRONTEND标志位判断加载gtk库还是newt字符库,之后debconf对gtk组件与main-menu程序进行绑定,触发main-menu初始化,加载第一个界面组件localchooser
在这里插入图片描述
Installer-Menu-Item: 控制菜单组件的加载顺序

在这里插入图片描述

4.安装过程

安装基本系统:使用 debootstrap 工具
在这里插入图片描述


5.一些想法

a. debain安装器的装系统方案和uos的装系统方案区别有哪些?

debain安装器安装系统的过程是“扩展式”,从/sbin/busybox init开始->初始化安装器设置->显示安装器界面程序main-menu->挂载/cdrom->加载分区、网络等组件->debootstrap构建安装“基本系统“->安装软件包->完成

uos服务版安装系统的时候文件系统的挂载情况:
在这里插入图片描述

b. debian安装器启动系统的第一进程是 “/sbin/busybox init”,uos安装器启动后第一进程是什么呢?
​ uos安装器启动后第一进程是 “/sbin/init livcd-insraller splash”,/sbin/init 是 /lib/systemd/system的链接
在这里插入图片描述

c. 对于uos安装器,debian安装器有哪些可借鉴之处呢?
​ 1)debian安装器在网络设置阶段是首先尝试自动配置网络,以便提供网络镜像支持
​ 2)debain安装器的组件集使用



三、参考文档

跟我一起写Makefile

kill -HUP pid

内核启动流程

linux文件系统初始化过程

Linux文件描述符到底是什么?

Linux上的文件描述符3有什么特别之处?

Linux中getopt函数、optind等变量使用详解

linux c解析命令行选项getopt、optarg、optind、opterr、optopt

BusyBox init及inittab文件详解

解压vmlinuz和解压initrd(initramfs)

操作系统真象还原

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

debian-installer初探 的相关文章

随机推荐

  • 常用快捷键(1)----Windows组合键

    单个的Windows键是打开和隐藏开始菜单 xff0c 功能与 Esc 43 Ctrl 组合键功能相同 下面是一些常用的Windows组合键 xff1a 1 快捷键 xff1a Windows 43 Shift 43 S 功能 xff1a
  • android 获取唯一Id,小小总结一下。仅供参考

    1 获取imei xff1a 前言 xff1a 因传统的移动终端设备标识如国际移动设备识别码 xff08 IMEI xff09 等已被部分国家认定为用户隐私的一部分 xff0c 并存在被篡改和冒用的风险 xff0c 所以在Android 1
  • xib中添加自定义可编辑属性

    IOS开发中 xff0c 有些人喜欢使用xib来进行项目的开发 xff0c 使用xib可以使界面可视化 xff0c 很多控件的属性设置都可以在 xib 中设置 xff0c 减少了代码量 xff1b 同时不用一遍遍的运行程序看效果 xff0c
  • STM32使用寄存器工程模板点亮一个LED灯

    1 环境说明 xff08 1 xff09 使用的是普中STM32F103开发板 xff08 2 xff09 keil 5软件 2 目的 点亮开发板上的LED1灯 3 步骤 xff08 1 xff09 定义一系列寄存器的宏 span clas
  • 结构体数组的使用

    测试源码 span class token macro property span class token directive keyword include span span class token string lt stdio h
  • string字符串拼接

    功能描述 实现在字符串末尾拼接字符串 函数原型 xff1a string amp operator 43 61 const char str 重载 43 61 操作符string amp operator 43 61 const char
  • 千万不要在TX2上安装Qt6

    失败 xff01 Nvidia TX2安装Qt6 和qtCreator7 手把手一步步 千万不要想在TX2上安装QT6 xff01 XCB缺失几乎无解 xff0c 如果有大佬可以指导一下 最开始准备使用交叉编译的方案给TX2写程序 因为台式
  • 最新WSL2 ubuntu环境 cuda,教程,适用于40系显卡

    实验环境 xff1a ubuntu2204 ubuntu1804 xff0c 最新4060笔记本电脑 xff0c 自我觉得是目前比较好用的搭配 xff1a wsl2 43 gnome 43 wsl中的pycharm xff0c 写的很全 x
  • 高分辨率机器安装 Ubuntu虚拟机的屏幕显示字体过小问题的解决

    在网上搜索了很多的解决方案 xff0c 有的试了没效果 xff0c 有的比较麻烦 xff0c 没尝试了 我说一下我的解决方案 问题 xff1a 首先我这个机器是2k屏的 xff0c 分辨率就是会大于 1920x1080 xff1b 然后我是
  • IDEA rebuild project idea如何重新编译项目

    idea如何重新编译项目 1 2 3 4 5 6 7 分步阅读 idea工具可以用于多种语言来开发项目 xff0c 如果是像java这样需要编译之后运行的编程语言 xff0c 每次在运行项目之前都需要对源码进行编译 一般的情况下都是idea
  • Ubuntu更新软件时报"http://cn.archive.ubuntu.com/ubuntu"相关错误的解决方案

    一 问题日志 W 仓库 http cn archive ubuntu com ubuntu xenial Release 没有 Release 文件 N 无法认证来自该源的数据 xff0c 所以使用它会带来潜在风险 N 参见 apt sec
  • 《uni-app》一个非canvas的飞机对战小游戏实现-我方飞机实现

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 接下来的几篇都是uni app的小实战
  • 《Vue插件》瀑布流插件vue-masonry的使用与踩坑记录

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了
  • 《uni-app》一个非canvas的飞机对战小游戏实现-子弹模型的实现

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 接下来的几篇都是uni app的小实战
  • 《uni-app》一个非canvas的飞机对战小游戏实现-碰撞检测的实现

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 接下来的几篇都是uni app的小实战
  • 《MongoDB》MongoDB的简介与体系结构

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了
  • 《MongoDB》在docker中用得到关于MongoDB一行命令

    前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了爬起来就好 xff
  • 《MongoDB》Mongo Shell中基本操作-ObjectId和文档创建详解

    前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了爬起来就好 xff
  • 《MongoDB》Mongo Shell中的基本操作-文档查询

    前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了爬起来就好 xff
  • debian-installer初探

    一 构建debian installer 1 安装debian系统 选择并下载系统 xff1a https cdimage debian org debian cd current amd64 iso dvd iso文件方式安装 xff1a