- 浏览: 1477803 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
两种方式x86_64 和32位的i386方式
-----------x86_64-----------------------------------------
参考http://mgalgs.github.io/2015/05/16/how-to-build-a-custom-linux-kernel-for-qemu-2015-edition.html
下载busybox和linux内核
把busybox编译好的文件生成 initramfs
需要一个启动文件
vim init
chmod +x init
find . -print0 | cpio --null -ov --format=newc | gzip -9 > $TOP/obj/initramfs-busybox-x86.cpio.gz
★★★★编译内核★★★★★★★★
linux Kernel
$ cd $TOP
运行
qemu-system-x86_64 -kernel obj/linux-x86-basic/arch/x86_64/boot/bzImage -initrd obj/initramfs-busybox-x86.cpio.gz -nographic -append "console=ttyS0" -enable-kvm
------------------------------------------------------------
i386★★★★★★★★★★如果是在64为系统上编译32位,有点特殊
------------------------------------------------------------
这步骤很重要,busybox不生成动态库
参考
http://blog.csdn.net/xsckernel/article/details/38045783
想编译32为的环境
将/usr/bin/gcc和/usr/bin/ld都改名为*.bin,就是改为: /usr/bin/gcc.bin和/usr/bin/ld.bin
然后写两个脚本:
还需要
测试是否切换到i386
继续以32位的方式编译busybox
$ make -j2
$ make install
生成initramfs:
--------------------------
★★★★★★编译32位的内核比较简单,只需要加ARCH=i386
--------------------------
make O=../obj/linux-i386-basic i386_defconfig
make O=../obj/linux-i386-basic kvmconfig
make O=../obj/linux-i386-basic ARCH=i386 -j16
qemu-system-i386 -kernel obj/linux-i386-basic/arch/x86/boot/bzImage -initrd obj/initramfs-busybox-i386.cpio.gz -nographic -append "console=ttyS0" -enable-kvm
-----------------------------------------------------------------------------
系统切换回64位环境
[root@jslinux mytest]# cat gcc64.sh
#!/bin/sh
mv -i /usr/bin/gcc /usr/bin/gcc.sh
mv -i /usr/bin/ld /usr/bin/ld.sh
mv -i /usr/bin/gcc.bin /usr/bin/gcc
mv -i /usr/bin/ld.bin /usr/bin/ld
系统切换回32位环境
[root@jslinux mytest]# cat gcc32.sh
#!/bin/sh
mv -i /usr/bin/gcc /usr/bin/gcc.bin
mv -i /usr/bin/ld /usr/bin/ld.bin
mv -i /usr/bin/gcc.sh /usr/bin/gcc
mv -i /usr/bin/ld.sh /usr/bin/ld
------------------------------------------------------------------------
-----------x86_64-----------------------------------------
参考http://mgalgs.github.io/2015/05/16/how-to-build-a-custom-linux-kernel-for-qemu-2015-edition.html
下载busybox和linux内核
TOP=/var/www/mytest wget http://distro.ibiblio.org/tinycorelinux/6.x/armv6/release/src/busybox/busybox-1.23.2.tar.bz2 wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.3.tar.xz cd $TOP/busybox-1.23.2 #这步骤很重要,busybox不生成动态库 mkdir -pv ../obj/busybox-x86 make O=../obj/busybox-x86 defconfig make O=../obj/busybox-x86 menuconfig -> Busybox Settings -> Build Options [ ] Build BusyBox as a static binary (no shared libs) Go to that location, select it, save, and exit. $ cd ../obj/busybox-x86 $ make -j2 $ make install
把busybox编译好的文件生成 initramfs
$ mkdir -p $TOP/initramfs/x86-busybox $ cd $TOP/initramfs/x86-busybox $ mkdir -pv {bin,sbin,etc,proc,sys,usr/{bin,sbin}} $ cp -av $TOP/obj/busybox-x86/_install/* .
需要一个启动文件
vim init
------------- #!/bin/sh mount -t proc none /proc mount -t sysfs none /sys echo -e "\nBoot took $(cut -d' ' -f1 /proc/uptime) seconds\n" exec /bin/sh --------------------
chmod +x init
find . -print0 | cpio --null -ov --format=newc | gzip -9 > $TOP/obj/initramfs-busybox-x86.cpio.gz
★★★★编译内核★★★★★★★★
linux Kernel
$ cd $TOP/linux-4.0.3 $ make O=../obj/linux-x86-basic x86_64_defconfig make O=../obj/linux-x86-basic kvmconfig #支持kvm make O=../obj/linux-x86-basic -j2
$ cd $TOP
运行
qemu-system-x86_64 -kernel obj/linux-x86-basic/arch/x86_64/boot/bzImage -initrd obj/initramfs-busybox-x86.cpio.gz -nographic -append "console=ttyS0" -enable-kvm
------------------------------------------------------------
i386★★★★★★★★★★如果是在64为系统上编译32位,有点特殊
------------------------------------------------------------
这步骤很重要,busybox不生成动态库
cd $TOP/busybox-1.23.2 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. $ cd ../obj/busybox-i386
参考
http://blog.csdn.net/xsckernel/article/details/38045783
想编译32为的环境
将/usr/bin/gcc和/usr/bin/ld都改名为*.bin,就是改为: /usr/bin/gcc.bin和/usr/bin/ld.bin
然后写两个脚本:
/usr/bin/gcc: --------------------- #!/bin/sh gcc.bin -m32 $@ ------------------------ /usr/bin/ld: ------------------ #!/bin/sh ld.bin -m elf_i386 $@ ---------------------
还需要
yum install glibc.i686 glibc-devel.i686 glibc-static.i686 glibc-utils.x86_64 -y yum install libgcc.i686 -y
测试是否切换到i386
--------test.c-------- #include <stdio.h> #include <stdlib.h> int main() { printf("sizeof long is %d\n", sizeof(long)); return 0; } ----------------- gcc test.c file a.out a.out: ELF 32-bit LSB executable,
继续以32位的方式编译busybox
$ make -j2
$ make install
生成initramfs:
$ 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 "\nBoot took $(cut -d' ' -f1 /proc/uptime) seconds\n" exec /bin/sh -------------------- chmod +x init find . -print0 | cpio --null -ov --format=newc | gzip -9 > $TOP/obj/initramfs-busybox-i386.cpio.gz
--------------------------
★★★★★★编译32位的内核比较简单,只需要加ARCH=i386
--------------------------
make O=../obj/linux-i386-basic i386_defconfig
make O=../obj/linux-i386-basic kvmconfig
make O=../obj/linux-i386-basic ARCH=i386 -j16
qemu-system-i386 -kernel obj/linux-i386-basic/arch/x86/boot/bzImage -initrd obj/initramfs-busybox-i386.cpio.gz -nographic -append "console=ttyS0" -enable-kvm
-----------------------------------------------------------------------------
系统切换回64位环境
[root@jslinux mytest]# cat gcc64.sh
#!/bin/sh
mv -i /usr/bin/gcc /usr/bin/gcc.sh
mv -i /usr/bin/ld /usr/bin/ld.sh
mv -i /usr/bin/gcc.bin /usr/bin/gcc
mv -i /usr/bin/ld.bin /usr/bin/ld
系统切换回32位环境
[root@jslinux mytest]# cat gcc32.sh
#!/bin/sh
mv -i /usr/bin/gcc /usr/bin/gcc.bin
mv -i /usr/bin/ld /usr/bin/ld.bin
mv -i /usr/bin/gcc.sh /usr/bin/gcc
mv -i /usr/bin/ld.sh /usr/bin/ld
------------------------------------------------------------------------
发表评论
-
sdl笔记
2019-01-31 17:19 733sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1433参考https://bellard.org/jslinux/t ... -
建立tap设备的c的代码
2019-01-08 19:09 473tapper.c #include <stdio.h& ... -
jslinux总结帖
2019-01-04 21:33 1134注意个问题: chrome不要用两个tab页,否则ping不通 ... -
emscripten asm.js的helloworld
2018-03-01 20:15 1110mac下安装: brew install SDL2 SDL2_ ... -
nginx代理wss和https
2018-02-27 15:34 3929nginx启用ssl yum install openssl ... -
jslinux-deobfuscated-network
2017-02-13 22:37 714基础知识 查看网络包 tcpdump -i eth0 -e ... -
用buildroot为jslinux建立最小rootfs
2016-11-18 17:59 1270############################### ... -
jslinux带网络功能的内核
2016-11-15 15:35 810想重新编译jslinux-network 的内核,其实就是比f ... -
nginx rewrite替代apache rewrite
2016-10-18 20:30 834清理chrome的缓存 chrome://appcache-i ... -
qemu用tap方式启动vm的网络试验(ip route)
2016-09-14 11:29 2806ip route add 192.168.8.0/24 via ... -
qemu的不断网动态迁移的试验
2016-06-28 16:16 950需求: 目前有两台服务器 192.168.139.117 19 ... -
kvm的nested嵌套
2016-06-27 18:25 1330关键点是 modprobe kvm_intel nested= ... -
qemu的动态迁移的试验
2016-06-25 21:48 14261.安装qemu-2.5.1.tar 解决 ... -
libvirt建立快照和基本使用
2016-06-25 15:51 1636如果使用qemu的快照方式 在monitor中操作 (qe ... -
socket的方式使用qemu建立虚拟机
2016-06-24 17:54 1910qemu的-net参数 -net nic 必须有,基本配置mo ... -
tap的方式使用qemu建立虚拟机NAT网络
2016-06-23 18:03 9849基本概念: vm:虚拟机 ... -
qemu建立基本的虚拟机
2016-06-23 17:04 1985使用qemu建立虚拟机 1.需要内核文件 bzImage ... -
qemu用nat的方式使用tap建立虚拟机
2016-06-23 16:15 11普通桥接参考 http://haoningabc.iteye. ... -
tap的方式使用qemu建立虚拟机桥接网络
2016-06-22 20:53 7837需求:建立一个虚拟机,使网络和内网一样,当一台普通接入内网的服 ...
相关推荐
通过这种方式,我们可以轻松地在本地环境中模拟和测试各种基于BusyBox的嵌入式系统,而无需实际硬件。这对于开发者来说是一个非常有价值的工具,可以快速验证代码、测试新功能以及优化系统性能。同时,这也是一种...
总结,QEMU 模拟 A9 内核与 BusyBox 文件系统提供了一个便捷的开发和测试环境,帮助开发者在本地系统上运行和调试针对 ARM 平台的应用程序和系统。通过不断的学习和实践,你可以深入了解嵌入式 Linux 系统的工作原理...
在四种通信模式中,TAP方式因为其灵活性和稳定性被广泛使用。下面是TAP方式的基本配置步骤: 1. **创建TAP设备**:使用`ip tuntap add dev tap0 mode tap`命令创建一个名为tap0的TAP设备。 2. **配置TAP设备**:为...
qemu文件,做模拟测试的朋友,赶紧下载,这个版本是不错的 的
BusyBox是一款轻量级的Linux工具集合,它将...总的来说,这个压缩包提供的资源是针对rk3568平台进行BusyBox移植的基础,通过这些资料,开发者可以学习和掌握如何在arm64架构设备上构建和部署这个强大的嵌入式工具集。
在嵌入式开发中,QEMU 是一个非常流行的虚拟开发平台,它允许开发者在本地机器上模拟各种硬件环境,如 ARM 架构。本篇文章主要讲述了如何在 QEMU 下完成 u-boot、Linux 内核以及 rootfs 的完整启动移植过程。 首先...
qemu-5.0.0、u-boot 源码、linux-5.4.95内核、gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf交叉编译链、busybox-1.32.1 工具 文章 https://blog.csdn.net/leacock1991/article/details/113703897 使用资源
本教程将引导你通过一系列步骤,利用Linux内核源代码和Busybox源代码来创建一个能在Bochs和Qemu模拟器上启动的简单Linux系统。 **一、准备工作** 1. **Linux内核源代码**:首先,你需要下载Linux内核的源代码,...
### Linux 2.6 Kernel 移植到 QEMU MIPS 的源代码文档 #### 知识点一:Linux 2.6 内核移植至 QEMU MIPS 的准备工作与环境配置 在进行 Linux 2.6 内核移植到 QEMU MIPS 的过程中,首先需要准备合适的开发环境。根据...
综上所述,本文详细介绍了使用qemu进行嵌入式Linux系统开发的全流程,从环境搭建到内核配置、交叉编译、BusyBox集成、制作initramfs和根文件系统,再到Uboot的定制以及系统的测试。这些步骤不仅涵盖了开发中的技术...
要用的同志直接私戳我即可,不用下载
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux...
### Linux 2.6 Kernel 移植到 QEMU Mips 的源代码文档 #### 概述 本文档详细介绍了如何将 Linux 2.6 内核移植到 QEMU MIPS 平台上,使得开发者可以在没有实际 MIPS 硬件的情况下进行内核的调试与研究。通过本文档...
由于实际硬件资源有限,无法为每位开发人员提供真实的开发板,因此采用QEMU作为替代方案,可以在不依赖物理设备的情况下进行软件开发和测试。 #### 二、开发环境搭建 1. **操作系统:** 使用Fedora 14 Live CD作为...
1. qemux64 2. ovmf.fd 3. busybox-img, 4. fwts-live-22.03.00-x86_64.img, 5. qemu 启动脚本(双击即可运行)
u-boot:vexpress-a15 u-boot镜像 xen-uImage:xen镜像 zImage:linux内核镜像 rootfs.img.gz:busybox文件系统镜像 vexpress-v2p-ca15_a7.dtb:设备树二进制文件
交叉编译Linux(可能是以x86_64为基础)。 在PowerPC上具有Firewire终端。 (这是另一个项目的一部分) 从构建的系统中编译和运行程序 少量的脚本可以构建和部分测试各种目标 网络支持(正在工作) 可选需要mac...
qemu 模拟 通过 busybox 制作 initramfs 镜像(rootfs)