- 浏览: 1477802 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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调试内核
环境:在64位机器上总莫名其妙问题,交叉编译也会有想不到的地方,
反正是虚拟机,找了个32为的centos7安装
---------------------
vim init
chmod +x init
find . -print0 | cpio --null -ov --format=newc | gzip -9 > $TOP/obj/initramfs-busybox-i386.cpio.gz
-----------------------------
这个文件理论上是写到哪里都可以,append的时候指定一下
如果不写,则默认是/init
比如写到
/etc/init.d/rcS
等等,
这里我保存成/haha
如果生成img
find . | cpio -o --format=newc > $TOP/obj/rootfs.img
这步骤有没有都行
如果是
qemu-system-i386 -kernel bzImage -initrd rootfs.img -vnc 0.0.0.0:1
如果不用vnc 用命令行的方式,需要 -append "console=ttyS0" -nographic 配合使用
会自动去找/init
console=ttyS0 与nographic 配合使用,如果使用vnc,则去掉console=ttyS0 否则不显示
比如这个
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
反正是虚拟机,找了个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
find . -print0 | cpio --null -ov --format=newc | gzip -9 > $TOP/obj/initramfs-busybox-i386.cpio.gz
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
find . | cpio -o --format=newc > $TOP/obj/rootfs.img
这步骤有没有都行
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
如果不用vnc 用命令行的方式,需要 -append "console=ttyS0" -nographic 配合使用
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
发表评论
-
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构建ramdisk根文件系统的详细步骤与相关知识点。 ### 一、概述 BusyBox是一个为嵌入式设备设计的小巧但功能强大的工具集,它将许多标准GNU/Linux命令和工具合并到一...
破坏Linux 这是Sabotage,它是基于musl libc和busybox的实验性发行版。 目前,Sabotage支持i386,x86_64,MIPS,PowerPC32和ARM(v4t +)。 ARM hardfloat(hf)通过stage1的交叉编译得到支持,因为它需要最新的GCC...
- **BIOS读取MBR**:计算机开机时,BIOS会读取硬盘上的主引导记录(MBR),MBR中存放着一段小的引导程序。 - **加载引导程序**:MBR中的引导程序负责加载更大的引导程序,如LILO或GRUB等。 - **加载内核**:引导程序...
# SUBARCH:=$(shell uname -m | sed -e 's/i.86/i386/' -e 's/sun4u/sparc64/' \ # -e 's/arm.*/arm/' -e 's/sa110/arm/' \ # -e 's/s390x/s390/' -e 's/parisc64/parisc/' \ # -e 's/ppc.*/powerpc/' -e 's/...
#rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm portmap-4.0-54.i386.rpm ``` `portmap`服务是用于处理RPC(Remote Procedure Call,远程过程调用)请求的服务,它是NFS服务正常运行所必需的。 2. **配置NFS共享目录**...
1. **下载与安装**:从官方镜像站点下载Ubuntu 8.04.2的桌面版ISO文件,地址为:`http://mirror.lupaworld.com/ubuntu/releases/8.04/ubuntu-8.04.2-desktop-i386.iso`。将ISO文件刻录成光盘并进行安装。安装过程中...
虚拟机是模拟硬件环境的工具,允许你在同一台计算机上运行多个独立的操作系统实例。安装完成后,下载并安装SSH Secure Shell Client,这是一个用于远程访问和管理系统的安全客户端。 接下来,你需要安装一个适合...
- **5.1 移植Busybox**:Busybox是一个包含了众多常用Linux命令的单个可执行文件,这部分介绍了如何将Busybox移植到目标板。 - **5.2 移植Glibc库**:Glibc是GNU C库的简称,它为应用程序提供了标准C库功能。这部分...
- 下载ISO镜像`ubuntu-8.04.2-desktop-i386.iso`,刻录成光盘并安装。 - 需要有至少15GB的硬盘空间用于安装系统。 - 安装完成后,确保计算机能够连接互联网,并通过命令行安装必要的软件包。 - 命令示例: ```...
| |-- device-mapper-1.00.19-2.i386.rpm | |-- lvm2-2.00.25-1.01.i386.rpm | |-- mkinitrd-4.2.0.3.tar.tar | |-- module-init-tools-3.2.2.tar.bz2 | `-- modutils-2.4.5-1.src.rpm |-- 04 | |-- 内核模块参数...
| |-- device-mapper-1.00.19-2.i386.rpm | |-- lvm2-2.00.25-1.01.i386.rpm | |-- mkinitrd-4.2.0.3.tar.tar | |-- module-init-tools-3.2.2.tar.bz2 | `-- modutils-2.4.5-1.src.rpm |-- 04 | |-- 内核模块参数...
| |-- device-mapper-1.00.19-2.i386.rpm | |-- lvm2-2.00.25-1.01.i386.rpm | |-- mkinitrd-4.2.0.3.tar.tar | |-- module-init-tools-3.2.2.tar.bz2 | `-- modutils-2.4.5-1.src.rpm |-- 04 | |-- 内核模块参数...
| |-- device-mapper-1.00.19-2.i386.rpm | |-- lvm2-2.00.25-1.01.i386.rpm | |-- mkinitrd-4.2.0.3.tar.tar | |-- module-init-tools-3.2.2.tar.bz2 | `-- modutils-2.4.5-1.src.rpm |-- 04 | |-- 内核模块参数...
TinyCore Linux基于 BusyBox 和 FLTK 图形用户界面,提供了最小的桌面环境和支持软件。 #### 二、TinyCore Linux特点 - **轻量级**: TinyCore Linux的核心系统仅有十几兆字节,适合资源有限的老旧计算机或嵌入式...