i386上的busybox

环境:在64位机器上总莫名其妙问题,交叉编译也会有想不到的地方,
反正是虚拟机,找了个32为的centos7安装

---------------------

yum install glibc-static -y
yum install ncurses ncurses-devel gcc gcc-c++ emacs -y
yum install glibc glibc-devel glibc-static glibc-utils -y
yum install libgcc -y
yum install glib2-devel -y
yum install gcc* -y
export TOP=/root/jslinux
cd $TOP/busybox-1.23.2
#这步骤很重要,busybox不生成动态库
mkdir -pv ../obj/busybox-i386
make O=../obj/busybox-i386 defconfig
make O=../obj/busybox-i386 menuconfig
-> Busybox Settings
-> Build Options
[ ] Build BusyBox as a static binary (no shared libs)
Go to that location, select it, save, and exit.
-> Busybox Settings
-> Busybox Library Turning
-> Support for /etc/networks
-> vi-style line editing commands
-> [*] Give more precise messages when copy fails (cp, mv etc)
去掉Skip rootfs in mount table
-> Init Utilities
-> Support reading an inittab file
是否需要去掉
Enable writing to tty only by group, not by everybody

$ cd ../obj/busybox-i386
$ make -j16
$ make install

mkdir -p $TOP/initramfs/i386-busybox
$ cd $TOP/initramfs/i386-busybox
$ mkdir -pv {bin,sbin,etc,proc,sys,usr/{bin,sbin}}
$ cp -av $TOP/obj/busybox-i386/_install/* .

vim init

-------------
#!/bin/sh

mount -t proc none /proc
mount -t sysfs none /sys

echo -e "\n /init Boot took $(cut -d' ' -f1 /proc/uptime) seconds\n"
#mdev 是 busybox 自带的一个 udev ,它是用于系统启动和
#热插拔或是动态加载驱动程序的时候,而自动产生设别节点的,
#这句话如果不加上的话,这需要手动的 mknod 来挂载设备节点
/sbin/mdev -s
exec /bin/sh
--------------------

chmod +x init
[color=red]
find . -print0 | cpio --null -ov --format=newc | gzip -9 > $TOP/obj/initramfs-busybox-i386.cpio.gz
[/color]

qemu-system-i386 -kernel bzImage -initrd initramfs-busybox-i386.cpio.gz -nographic -append "console=ttyS0" -enable-kvm
qemu-system-i386 -kernel bzImage -initrd initramfs-busybox-i386.cpio.gz -vnc 0.0.0.0:1


-----------------------------
这个文件理论上是写到哪里都可以,append的时候指定一下
如果不写,则默认是/init
比如写到
/etc/init.d/rcS
等等,
这里我保存成/haha

-------------------
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
echo -e "\n Haoning Boot took $(cut -d' ' -f1 /proc/uptime) seconds\n"
/sbin/mdev -s
exec /bin/sh
-------------------------

如果生成img
[color=red]
find . | cpio -o --format=newc > $TOP/obj/rootfs.img
[/color]
这步骤有没有都行

gzip -c rootfs.img > rootfs.img.gz
#qemu-system-i386 -kernel bzImage -initrd rootfs.img.gz -append "root=/dev/ram rdinit=/etc/init.d/rcS noapic" -vnc 0.0.0.0:1
qemu-system-i386 -kernel bzImage -initrd rootfs.img -append "root=/dev/ram rdinit=/haha noapic" -vnc 0.0.0.0:1
#rdinit和init有区别
rdinit起作用,可以指定配置文件,init不行,默认找/init去了
qemu-system-i386 -kernel bzImage -initrd rootfs.img -append "root=/dev/ram rdinit=/haha noapic" -vnc 0.0.0.0:1
qemu-system-i386 -kernel bzImage -initrd rootfs.img -append "root=/dev/ram0 rw rdinit=/sbin/init notsc=1" -vnc 0.0.0.0:1

如果是
qemu-system-i386 -kernel bzImage -initrd rootfs.img -vnc 0.0.0.0:1
[color=red]
如果不用vnc 用命令行的方式,需要 -append "console=ttyS0" -nographic 配合使用
[/color]

qemu-system-i386 -kernel bzImage -initrd rootfs.img -append "console=ttyS0" -nographic

会自动去找/init
console=ttyS0 与nographic 配合使用,如果使用vnc,则去掉console=ttyS0 否则不显示

qemu-system-i386 -kernel bzImage -initrd rootfs.img -append "root=/dev/ram0 rw init=/sbin/init notsc=1" -vnc 0.0.0.0:1

比如这个
qemu-system-i386 -kernel bzImage -initrd rootfs.img -append "console=ttyS0 root=/dev/ram0 rw init=/sbin/init notsc=1" -vnc 0.0.0.0:1
显示Decompressing Linux ... Parsing ELF... No relocation needed... done.
Booting the kernel.
就不动了
console=ttyS0 root=/dev/ram0 rw init=/sbin/init notsc=1 是jslinux.js里的代码
jslinux会把这个console定向到浏览器
我们编译的rootfs.img
进入系统后df -h 什么也没有,可能是不能作为hda的原因
###########################################################
退出 QEMU 操作为:Ctrl + A ,然后按下 X 键。注意,它不会提醒你是否要退出,而是直接退出,所以操作时要小心。
############################################################
测试
qemu-system-i386 -kernel linux-x86-basic/arch/i386/boot/bzImage -initrd rootfs.img -append "console=ttyS0 root=/dev/ram0 rw rdinit=/jslinux notsc=1" -nographic
echo ':DOSCOM:E::com::/usr/bin/runcom:' > /proc/sys/fs/binfmt_misc/register


下面不好使
qemu-system-i386 -kernel bzImage -hda rootfs.img -append "console=ttyS0 root=/dev/hda ro init=/sbin/init notsc=1" -vnc 0.0.0.0:1
console=ttyS0 root=/dev/hda ro init=/sbin/init notsc=1
console=ttyS0 root=/dev/ram0 rw init=/sbin/init notsc=1
qemu-system-i386 -kernel bzImage -hda rootfs.img -append "console=ttyS0 root=/dev/hda ro init=/init notsc=1" -vnc 0.0.0.0:1


备注
内核的 .config文件
CONFIG_TUN=y
机器学习扩散模型简介 ​ 扩散模型是生成模型,在过去几年中越来越受欢迎,这是有充分理由的。仅在 2020 年代发布的几篇开创性论文就向世界展示了 Diffusion 模型的能力,例如在图像合成方面击败 GAN[6]。最近,从业者将看到DALL-E 2(OpenAI 上个月发布的图像生成模型)中使用的扩散模型。 阅读详情

相关推荐

用户消费行为分析(MapReduce实现,Hive分析)

一、题目要求 数据来自CDNow网站的一份用户购买CD明细,本数据集共有 6 万条 左右数据,数据为 CDNow 网站 1997年1月至1998年6月的用户行为 数据

紫烟的博客 3013

Linux-2.6.26内核+使用busybox制作initrd+qemu运行

无需配置特定环境,在 Docker 容器环境中编译 linux-2.6.26,并在宿主机的 qemu 中运行

Scolin丶 1201

FX2N-2AD模块实战:从硬件连接到FROM/TO指令编程详解

本文详细解析FX2N-2AD模拟量输入模块的硬件连接与FROM/TO指令编程技巧,涵盖BFM缓冲存储器配置、梯形图程序设计及工程实战经验。通过实例演示如何实现精准信号采集与数据处理,特别针对PLC系统中的常见故障提供解决方案,助力工业自动化工程师高效完成设备调试与维护。

prometheus9mon的博客 507

linux嵌入式编程高手历程系列6-定制uboot和文件系统

一uboot1。uboot增加自己的命令原理:每个命令都有一个命令结构体struct cmd_tbl_s {char*name;  /* Command Name*/intmaxargs; /* maximum number of arguments*/intrepeatable; /* autorepeat allowed?*/int       (*cmd)(struct cmd_tb

余文锋的专栏 3350

C# WinForm项目目录结构详解:从入门到精通(附常见问题解决方案)

本文详细解析了C# WinForm项目目录结构,从解决方案与项目基础结构到核心文件功能,再到关键目录解析,帮助开发者快速掌握WinForm项目组织方式。文章还提供了常见问题解决方案,如引用丢失、配置文件不生效等,是WinForm开发从入门到精通的实用指南。

dream的博客 647

SAP VC实战:用CU01和CS02搞定BOM里的‘智能’对象相关性(附语法避坑指南)

在工业制造领域,产品配置的复杂性往往超出想象。想象一下,当客户需要定制一台工业设备时,可能有数百种配置选项相互影响——从基础材质到动力系统,从控制模块到安全装置。如何在SAP系统中优雅地管理这种复杂性?对象相关性(Object Dependencies)就是解决这一挑战的利器。

weixin_42524824的博客 467

退出qemu快捷键

先按下Ctrl + A,再按下x键(注意此处x应为小写,大写无效;Ctrl + A中A大小写均可)。

m0_46161993的博客 1310

计算机导论期末知识点及试题总结 [近三万字总结 · 全]

计算机网络:计算机网络是利用通信线路连接起来相互独立的计算机的集合,其主要目的是实现数据通信和资源共享。 计算机病毒:破坏计算机功能或数据,影响计算机使用,并能自我复制的一组计算机指令或程序。 操作系统:操作系统是由程序和数据结构组成的大型系统软件,它负责计算机的全部软硬件的资源分配,调度和管理,控制各类程序的正常执行,并为用户使用计算机提供良好的环境。 高速缓冲储存器(Cache):位于cpu和内存之间的储存器,其特点是速度快,目的是是储存器的速度与cpu的速度相匹配。 总线:若干信号线的集合,是

这个人好有趣....hh 1万+

Manual initrd/busybox for qemu/i386

### for i386 32bit build [lake@localhost busybox-1.33.0]$ CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 make defconfig [lake@localhost busybox-1.33.0]$ CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 make menuconfig ---> Static link busybox scripts/kconf...

hushui的专栏 1507

simulink的Sine Wave 模块详解

模块是 Simulink 中的一个信号源模块,用于生成正弦波信号。该模块可以根据设定的幅值、频率、相位和偏移量,在仿真过程中产生周期性的正弦波形。模块都能提供强有力的支持。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常实用的工具,适用于需要生成正弦波信号的各种场景。模块的参数,可以进一步增强学习体验。模块参数的影响,下面我们将详细探讨每个参数如何影响仿真结果。

xiaoheshang_123的博客 1052

【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板

NPU(Neural Processing Unit) 是专门用于人工神经网络推理与训练的处理器,具备高并行、低功耗、低延迟等特点。它是边缘 AI、自动驾驶、智能摄像头、语音识别等场景中的关键硬件。

moton2017的博客 2248

qemu退出操作

qemu操作的两种方式以及快捷键退出的坑

qq_67090393的博客 6159

YOLO26改进策略【损失函数篇】| AAAI 2025 SD Loss,基于目标尺度动态调整尺度损失和位置损失的影响系数,减少 IoU 标签波动

在红外小目标检测任务里,基于交并比的损失存在波动问题,像边界框(BBox)标签的IoU损失波动最高可达86%,较小目标的IoU损失稳定性更差,严重影响模型稳定性和回归效果。同时,现有损失函数没有充分考虑不同目标尺度下对尺度和位置的敏感度差异,,并且掩码标签的位置损失在处理漏检物体时难以收敛,容易产生误报。这些问题限制了模型在不同尺度目标上的检测性能,为解决这些问题,提出了损失函数。

Limiiiing的博客 393

qemu+linux+x86+64,qemu以64位跟32位的方式跑busybox

qemu以64位和32位的方式跑busybox两种方式x86_64 和32位的i386方式-----------x86_64-----------------------------------------参考http://mgalgs.github.io/2015/05/16/how-to-build-a-custom-linux-kernel-for-qemu-2015-edition.htm...

weixin_33363704的博客 574

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

用qemu模拟i386的linux内核,用于内核学习

安装 apt-get install qemu 下载http://kernel.org/  这里也测试过4.5版本,但是无法启动 wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.7.4.tar.bz2 tar xvf linux-3.7.4.tar.bz2 cd linux-3.7.4.tar.bz2

zmy12007的专栏 4285

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

qemu以64位和32位的方式跑busybox

两种方式x86_64 和32位的i386方式 -----------x86_64----------------------------------------- 参考[url]http://mgalgs.github.io/2015/05/16/how-to-build-a-custom-linux-kernel-for-qemu-2015-edition.html[/url] ...

走在左边 1188

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

busybox中FAST_FUNC

/* FAST_FUNC is a qualifier which (possibly) makes function call faster * and/or smaller by using modified ABI. It is usually only needed * on non-static, busybox internal functions. Recent versions

duanjianyuooo的专栏 3017

用U盘安装Ubuntu(惨败)

花了很长时间想用/1.grub4dos的启动盘2.ubuntu-9.04-desktop-i386.iso/装ubuntu,但是失败了。 用grub命令行中输入map (hd0,0)/ubuntu-9.04-desktop-i386.iso (0xff)map --hookroot (0xff)chainloader (0xff)这样进入了livecd。然后

345

新手玩转Linux Kernel漏洞Null Pointer Dereference之环境搭建

新手玩转Linux Kernel漏洞Null Pointer Dereference之环境搭建 条件 System: Ubuntu 12.04 i386(虚拟机即可) Disk Space: 50G(编译内核很耗资源) BusyBox: 1.19.4(将常见的Unix 命令集成在了一个可执行文件) Qemu(一个模拟器, 非常强悍) Source Code: Linux Kernel ...

Bill 1786

linux 不支持rpm,rpm怎么不能安装?

毕加索 于 2008-08-24 21:47:27发表:我的系统是puppy,安装wine的rpm,老是不行,提示:# rpm -ivh --force --nodeps /root/tools/wine-20030408-0.3asp.i386.rpmrpm: invalid option -- vBusyBox v1.8.2 (2007-11-30 09:20:42 GMT-8) mult...

weixin_42509833的博客 674

qemu busybox模拟Linux启动

今天做一个实验,蛋蛋都碎了,最后发现问题出 1)在了 qemu 上面,在这里我着重强调一点:能找到软件包就不要用源下的软件,源下的软件版本太低了,且安装的时候不是由你说了算。。。比如安装qemu时,如果用源 apt-get install 安装的话,安装的为1.0版本,且没有安装 KVM 的!导致了之后一连串的悲剧。。 2)编译内核源。。。(这个泪流满面唉) 闲话少说,看看步骤: 步骤一:

zhaowenchaofang的专栏 2532

Ubuntu Server 16.04中文版安装问题

安装包:ubuntu-16.04.1-server-i386.iso 虚拟机:VMware12 系统语言:中文 问题1:虚拟机安装ubuntu server 16.04中文版时出现“无法安装busybox-initramfs” 上网查了一下,居然是个BUG,https://bugs.launchpad.net/ubuntu/+source/debian-installer/

m沉默 8842

Linux chroot 环境构建失败:No such file or directory 错误深度解析与解决方案

在Linux系统管理与容器化实践中,chroot是一个基础且强大的工具,它通过切换进程的根目录来实现文件系统的隔离,为系统修复、安全沙箱和容器构建提供了底层支持。其核心原理是修改进程及其子进程所看到的根目录路径,从而创建一个受限的运行环境。这项技术的价值在于能够在不影响主机系统的情况下,搭建独立的测试、编译或运行环境。然而,在实际操作中,尤其是进行系统修复、容器镜像构建或交叉编译环境搭建时,开发者常会遇到“chroot: failed to run command ‘/bin/bash’: No such

weixin_29216957的博客 257

linux用busybox制作ramdisk的脚本共享

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34362991的博客 106

docker创建busybox

1. busybox是什么 BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也...

说好的今晚不吃饭的博客 6111

qemu linux内核环境,Linux内核调试之:ddd+qemu+busybox环境配置

最近由于课程需要,对于Linux内核下ddd+qemu+busybox调试环境进行了配置。期间参考了不少的网上资料,如下:最后在几经折腾之下,终于完成了正确的配置,所以写篇blog来记录下。(ps:编译内核好费时间。)一、环境搭建1.编译内核打开终端输入如下命令mkdir -p ~/misc/qemucd ~/misc/qemuwgethttp://www.kernel.org/pub/linux...

weixin_39718460的博客 328
上一篇: can't initialize iptables table错误
下一篇: socat和netcat(nc)
linux内核控
博客等级 码龄19年 41粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值