IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动 -> 正文阅读

[系统运维]ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动

busybox 1.35.0?https://busybox.net/downloads/busybox-1.35.0.tar.bz2

sudo apt install make gcc libncurses-dev

编译配置:在busybox解压之后的目录下运行make menuconfig

1、Settings->Build static libary

2、两个工具包可以不用编译:

? Coreutils->sync

Linux System Utilities -> nsenter

? ? 3、修改一个源码(可选),主要是支持显示中文的。libbb/printable_string.c

? ? 31、32两行注释、45行,注释 || c >= 0x7f?

? ? 4、之后运行make进行编译:出现如下所示信息,表示编译成功。

? ? 这里一些提示Library m is needed,can't exclude it等等,可以不用担心。

? ? 接着执行make install会将编译结果安装到_install目录下,:

? ? 5、根据编译好的busybox制作根文件系统。?

cd _install
mkdir etc proc sys mnt dev tmp
mkdir -p etc/init.d
cat >> etc/fstab<<EOF
proc    /proc   proc    defaults        0       0
tmpfs   /tmp    tmpfs   defaults        0       0
sysfs   /sys    sysfs   defaults        0       0
EOF
cat>>etc/init.d/rcS<<EOF
echo "Welcome to linux..."
EOF
chmod 755 etc/init.d/rcS 
cat>>etc/inittab<<EOF
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
EOF
chmod 755 etc/inittab
cd dev
sudo mknod console c 5 1
sudo mknod null c 1 3
sudo mknod tty1 c 4 1

cd ..
sudo rm -rf rootfs.ext4 fs
dd if=/dev/zero of=./rootfs.ext4 bs=1M count=32
mkfs.ext4 rootfs.ext4
mkdir fs
sudo mount -o loop rootfs.ext4 ./fs
sudo cp -rf ./_install/* ./fs
sudo umount ./fs
gzip --best -c rootfs.ext4 > rootfs.img.gz

? ?linux 5.18?https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.18.tar.xz

? ? 准备依赖环境?

sudo apt install flex bison?libelf-dev libssl-dev

make x86_64_defconfig

? ?运行截图:
? ? ?

make menuconfig

? ? 修改Device Drivers->Block devices->Ram block device support? ??? 选中RAM block device support,注意要让前面的选项变为*,而不是M。?Default RAM disk size设置为65535。

? ? ?make 就可以了,(第一次编译过程比较漫长),不需要make install

? ? ?下面这一步不是必须的,如果执行make提示有报错xt_mark.h文件找不到,可以把系统上xt_mark.h头文件复制到对应的目录下。

? ? ?/usr/include/linux/netfilter/xt_mark.h文件要复制到 include/uapi/linux/netfilter/下

qemu

sudo apt install qemu-system-x86

? ? 安装完qemu-system-x86之后,系统中自带了qemu-system-x86_64命令,接着,我们使用qemu-system-x86_64模拟linux系统。?

qemu-system-x86_64 -nographic \ 
-kernel linux-5.18/arch/x86_64/boot/bzImage \
-initrd busy-box-1.35.0/rootfs.img.gz \
-append "root=/dev/ram rw rootfstype=ext4 console=ttyS0 init=/linuxrc"

? ? linux启动之后,加载根文件系统,最后成功进入命令行。?

? ? 需要注意的几个地方:

? ? 1、linux编译需要设置支持ram启动。

? ? 2、busybox编译之后,生成镜像,需要指定文件系统类型为ext4,虽然可以让系统支持ext3,但是这个需要设置,系统默认的是ext4。

? ? 3、运行最后一步,qemu模拟启动,如果出现io-apic + timer doesn't work,可以考虑在qemu启动命令的append参数中增加noapic或者no-timer-check。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:26:09  更:2022-06-25 18:26:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 0:44:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码