- 浏览: 1481839 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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调试内核
环境
gcc 版本 4.8.5 centos 7.2.1511 (AltArch) 内核版本3.10.0-327.13.1 32位操作系统
buildroot版本buildroot-2016.02
########################
使用buildroot生成jslinux的root.bin文件
由几个关键点:
1.jslinux.js里面有一行
这里的sbin/init要改
默认可能会走/etc/init.d/rcS 等地方如果init改成rdinit按理可以指定其他地方的配置文件
编辑文件后需要chmod +x <initfile>
2.需要/dev下面的设备文件,在init文件里面/sbin/mdev -s即可
如果缺少的手工mknod 创建
3.需要mount /sys和/proc文件系统
4.注意观察 /etc/fstab /etc/mtab /etc/inittab
5.使用initrd的时候,不能超过4M.
如果img文件大于4M,需要使用ramdisk_size
这个qemu选项
#####################
注意:得到的rootfs.ext2不能超过4M,否则不能作为ram挂载
yum install patch -y
#编译出错可能需要需要这个补丁(pthread.h找不到的问题,偶尔遇到)
../../../libgcc/generic-morestack-thread.c:41:21: fatal error: pthread.h: No such file or directory
#include <pthread.h>
https://gcc.gnu.org/bugzilla/attachment.cgi?id=28902&action=edit
内容复制到mypatch
patch -p1 < mypatch
./output/build/host-gcc-final-4.9.3/libgcc/generic-morestack-thread.c
在把带pthread_t的函数全注释掉
生成rootfs.ext2
需要改几个地方
sbin/init
改成:
注意,/dev下的设备文件是由mdev -s生成的
/proc /sys需要挂载,
生成的/dev下面可能会缺需要的交互设备/dev/jsclipboard 和/dev/net/tun等去 jslinux上ls -l一下
没有的可以这样建立
https://github.com/Pivosgroup/buildroot-linux-kernel/blob/master/Documentation/networking/tuntap.txt
mknod -m 666 /dev/null c 1 3
mkdir /dev/net (if it doesn't exist already)
mknod /dev/net/tun c 10 200
mknode /dev/jsclipboard c 10 231
mknod /dev/ppp c 108 0
################
建立
/ppp_up
#如果buildroot没有选net相关
#运行的时候可能会缺某些/lib下的库,不建议这样,最好编译
#ln -s libcrypt-1.0.12.so libcrypt.so.0
#ln -s libdl.so.1 libdl.so.0
#ln -s libc.so.1 libc.so.0
注意观察/etc/init.d/rcS 和网络相关的配置文件
把生成的rootfs.ext2覆盖到root.bin的位置即可
github上的两个工程可用
jsmodem和
jslinux-deobfuscated
退出qemu
busybox的cpio的方式可以让qemu 的initrd方式运行
但是buildroot的不行,buildroot不加网络可以控制在4M以内,ram0方式是可以的,buildroot的直接放给 jslinux即可
使用qemu跑这个img的话:qemu不需要修改/sbin/init,是jslinux需要
注意root=/dev/sda 为sda
因为rootfs.ext2大于4M,如果buildroot不编译pppd,可以达到2.1M,这样可以直接用
而使用root=/dev/hda 会报错误
使用sda后
正确结果
只加pppd的,5.7M
1.jslinux-bellard
2.jslinux-network 支持
pc.cpu.write_string(cmdline_addr, "console=ttyS0 root=/dev/hda ro init=/sbin/init notsc=1");//zuichu haohsi 必须是ro,rw不行
3.jslinux-deobfuscated 需要加个参数 ramdisk_size=128000 支持超过4M的内存启动文件
pc.cpu.write_string(cmdline_addr, "console=ttyS0 root=/dev/ram0 rw init=/sbin/init notsc=1 ramdisk_size=128000");
4.jsmodem
##############QEMU BUILDROOT RAMDISK: IMAGE TOO BIG!########################
https://draskodraskovic.wordpress.com/2013/05/07/qemu-buildroot-ramdisk-image-too-big/
ramdisk_size` kernel argument has to be augmented.
Resolution :
drasko@Mali:~/buildroot/output/images$ qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs.ext2 -append “ramdisk_size=128000”
References :
http://www.minimyth.org/forum/viewtopic.php?t=2594&f=5
http://linuxpmi.org/trac/wiki/Testing
最终结果为
###################附加,如果是ubuntu上#####
----------ubuntu-----------
make menuconfig
apt-get install make gcc g++ libncurses5-dev unzip -y
附加没用的信息
vim include/platform.h
#include <sys/resource.h>
BusyBox Settings->Network device->[]route
#####################################
重新编译内核
发现apache不能访问新的内核
stat vmlinux-2.6.20.bin
对比原来能跑的内核和新的内核
chcon -R -t httpd_sys_content_t vmlinux-2.6.20.bin
chcon -R -t httpd_sys_content_t vmlinux403.bin
http://stackoverflow.com/questions/17242403/linux-running-self-compiled-kernel-in-qemu-vfs-unable-to-mount-root-fs-on-unk
gcc 版本 4.8.5 centos 7.2.1511 (AltArch) 内核版本3.10.0-327.13.1 32位操作系统
buildroot版本buildroot-2016.02
########################
使用buildroot生成jslinux的root.bin文件
由几个关键点:
1.jslinux.js里面有一行
pc.cpu.write_string(cmdline_addr, "console=ttyS0 root=/dev/ram0 rw init=/sbin/init notsc=1");
这里的sbin/init要改
默认可能会走/etc/init.d/rcS 等地方如果init改成rdinit按理可以指定其他地方的配置文件
编辑文件后需要chmod +x <initfile>
2.需要/dev下面的设备文件,在init文件里面/sbin/mdev -s即可
如果缺少的手工mknod 创建
3.需要mount /sys和/proc文件系统
4.注意观察 /etc/fstab /etc/mtab /etc/inittab
5.使用initrd的时候,不能超过4M.
如果img文件大于4M,需要使用ramdisk_size
这个qemu选项
#####################
make menuconfig ->Target options -->Target Architecture 选i386 第三个选i686 ->Filesystem images -->ext2/3/4 variant (ext2 rev0) 选ext2 -->tar the root filesystem -->Compression method(gzip) 选gzip ->build Option -->libraries (shared only) ##->Toolchan ##-->C Libary(glibc) 不能用这个 ->Target Package -->Networking applications--> pppd iputils vtun socat等网络需要的工具 (这个最重要,不加这里,rootfs.ext2可以小于4M) make make会下一堆东西, 如果第二次编译,可以把buildroot-2016.02/dl 中的包都考过去节省时间
注意:得到的rootfs.ext2不能超过4M,否则不能作为ram挂载
yum install patch -y
#编译出错可能需要需要这个补丁(pthread.h找不到的问题,偶尔遇到)
../../../libgcc/generic-morestack-thread.c:41:21: fatal error: pthread.h: No such file or directory
#include <pthread.h>
https://gcc.gnu.org/bugzilla/attachment.cgi?id=28902&action=edit
内容复制到mypatch
patch -p1 < mypatch
./output/build/host-gcc-final-4.9.3/libgcc/generic-morestack-thread.c
在把带pthread_t的函数全注释掉
生成rootfs.ext2
mkdir tmp mount -o loop rootfs.ext2 tmp
需要改几个地方
sbin/init
改成:
--------------------------------- #!/bin/sh echo "\n /sbin/init hello jslinux sbin/init \n" mount -t proc none /proc mount -t sysfs none /sys /sbin/mdev -s export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin export HOME=/root export TERM=vt100 #mount -a ifconfig lo 127.0.0.1 #sleep 2 # allow running DOS .COM executables with the small 'runcom' utility #echo ':DOSCOM:E::com::/usr/bin/runcom:' > /proc/sys/fs/binfmt_misc/register cd $HOME stty -F /dev/ttyS0 rows 30 #show_boot_time echo "Welcome to hahaha haoning JS/Linux" #while /bin/true; do # echo "setsid sh ----->" # setsid sh -c 'exec sh </dev/ttyS0 >/dev/ttyS0 2>&1' #done echo "this will run /bin/sh" exec /bin/sh echo "linux start up ,hahahahah haoningge" -----------------------------
注意,/dev下的设备文件是由mdev -s生成的
/proc /sys需要挂载,
生成的/dev下面可能会缺需要的交互设备/dev/jsclipboard 和/dev/net/tun等去 jslinux上ls -l一下
没有的可以这样建立
https://github.com/Pivosgroup/buildroot-linux-kernel/blob/master/Documentation/networking/tuntap.txt
mknod -m 666 /dev/null c 1 3
mkdir /dev/net (if it doesn't exist already)
mknod /dev/net/tun c 10 200
mknode /dev/jsclipboard c 10 231
mknod /dev/ppp c 108 0
################
建立
/ppp_up
#--------------- #!/bin/sh pppd /dev/ttyS1 noauth defaultroute usepeerdns #-------------
#如果buildroot没有选net相关
#运行的时候可能会缺某些/lib下的库,不建议这样,最好编译
#ln -s libcrypt-1.0.12.so libcrypt.so.0
#ln -s libdl.so.1 libdl.so.0
#ln -s libc.so.1 libc.so.0
注意观察/etc/init.d/rcS 和网络相关的配置文件
把生成的rootfs.ext2覆盖到root.bin的位置即可
github上的两个工程可用
jsmodem和
jslinux-deobfuscated
退出qemu
Ctrl-a x
busybox的cpio的方式可以让qemu 的initrd方式运行
但是buildroot的不行,buildroot不加网络可以控制在4M以内,ram0方式是可以的,buildroot的直接放给 jslinux即可
使用qemu跑这个img的话:qemu不需要修改/sbin/init,是jslinux需要
qemu-system-i386 -kernel /root/jslinux/obj/linux-x86-basic/arch/i386/boot/bzImage -hda rootfs.ext2 -append "console=ttyS0 root=/dev/sda rw init=/sbin/init notsc=1" -nographic
注意root=/dev/sda 为sda
因为rootfs.ext2大于4M,如果buildroot不编译pppd,可以达到2.1M,这样可以直接用
qemu-system-i386 -kernel /root/jslinux/obj/linux-x86-basic/arch/i386/boot/bzImage -initrd rootfs.ext2 -append "console=ttyS0 root=/dev/ram0 rw rdinit=/sbin/init notsc=1" -nographic
而使用root=/dev/hda 会报错误
使用sda后
正确结果
只加pppd的,5.7M
1.jslinux-bellard
2.jslinux-network 支持
pc.cpu.write_string(cmdline_addr, "console=ttyS0 root=/dev/hda ro init=/sbin/init notsc=1");//zuichu haohsi 必须是ro,rw不行
3.jslinux-deobfuscated 需要加个参数 ramdisk_size=128000 支持超过4M的内存启动文件
pc.cpu.write_string(cmdline_addr, "console=ttyS0 root=/dev/ram0 rw init=/sbin/init notsc=1 ramdisk_size=128000");
4.jsmodem
##############QEMU BUILDROOT RAMDISK: IMAGE TOO BIG!########################
https://draskodraskovic.wordpress.com/2013/05/07/qemu-buildroot-ramdisk-image-too-big/
ramdisk_size` kernel argument has to be augmented.
Resolution :
drasko@Mali:~/buildroot/output/images$ qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs.ext2 -append “ramdisk_size=128000”
References :
http://www.minimyth.org/forum/viewtopic.php?t=2594&f=5
http://linuxpmi.org/trac/wiki/Testing
最终结果为
###################附加,如果是ubuntu上#####
----------ubuntu-----------
make menuconfig
apt-get install make gcc g++ libncurses5-dev unzip -y
make menuconfig ->Target options -->Target Architecture 选i386 第三个选i686 ->Filesystem images -->ext2/3/4 variant (ext2 rev0) 选ext2 -->tar the root filesystem -->Compression method(gzip) 选gzip ->build Option -->libraries (shared only) ##->Toolchan ##-->C Libary(glibc) 不能用这个 #->Target Package #-->Networking applications--> pppd iputils vtun socat等网络需要的工具 (这个最重要) make
附加没用的信息
vim include/platform.h
#include <sys/resource.h>
BusyBox Settings->Network device->[]route
#####################################
重新编译内核
发现apache不能访问新的内核
stat vmlinux-2.6.20.bin
对比原来能跑的内核和新的内核
chcon -R -t httpd_sys_content_t vmlinux-2.6.20.bin
chcon -R -t httpd_sys_content_t vmlinux403.bin
http://stackoverflow.com/questions/17242403/linux-running-self-compiled-kernel-in-qemu-vfs-unable-to-mount-root-fs-on-unk
发表评论
-
sdl笔记
2019-01-31 17:19 739sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1439参考https://bellard.org/jslinux/t ... -
建立tap设备的c的代码
2019-01-08 19:09 478tapper.c #include <stdio.h& ... -
jslinux总结帖
2019-01-04 21:33 1157注意个问题: chrome不要用两个tab页,否则ping不通 ... -
emscripten asm.js的helloworld
2018-03-01 20:15 1117mac下安装: brew install SDL2 SDL2_ ... -
nginx代理wss和https
2018-02-27 15:34 3936nginx启用ssl yum install openssl ... -
jslinux-deobfuscated-network
2017-02-13 22:37 731基础知识 查看网络包 tcpdump -i eth0 -e ... -
用buildroot为jslinux建立最小rootfs
2016-11-18 17:59 1277############################### ... -
jslinux带网络功能的内核
2016-11-15 15:35 820想重新编译jslinux-network 的内核,其实就是比f ... -
nginx rewrite替代apache rewrite
2016-10-18 20:30 843清理chrome的缓存 chrome://appcache-i ... -
qemu用tap方式启动vm的网络试验(ip route)
2016-09-14 11:29 2829ip route add 192.168.8.0/24 via ... -
qemu的不断网动态迁移的试验
2016-06-28 16:16 954需求: 目前有两台服务器 192.168.139.117 19 ... -
kvm的nested嵌套
2016-06-27 18:25 1336关键点是 modprobe kvm_intel nested= ... -
qemu的动态迁移的试验
2016-06-25 21:48 14311.安装qemu-2.5.1.tar 解决 ... -
libvirt建立快照和基本使用
2016-06-25 15:51 1644如果使用qemu的快照方式 在monitor中操作 (qe ... -
socket的方式使用qemu建立虚拟机
2016-06-24 17:54 1927qemu的-net参数 -net nic 必须有,基本配置mo ... -
tap的方式使用qemu建立虚拟机NAT网络
2016-06-23 18:03 9889基本概念: vm:虚拟机 ... -
qemu建立基本的虚拟机
2016-06-23 17:04 1991使用qemu建立虚拟机 1.需要内核文件 bzImage ... -
qemu用nat的方式使用tap建立虚拟机
2016-06-23 16:15 11普通桥接参考 http://haoningabc.iteye. ... -
tap的方式使用qemu建立虚拟机桥接网络
2016-06-22 20:53 7879需求:建立一个虚拟机,使网络和内网一样,当一台普通接入内网的服 ...
相关推荐
编译buildroot-2020.02.9.tar.bz2过程中自动联网下载到dl目录下的源码,使用这里的源码放到dl目录下可以大大减少编译时间。 book@book-VirtualBox:~/buildroot-2020.02.9$ tree dl/ dl/ ├── acl │ └── acl-...
Buildroot 是一个开源项目,它为嵌入式系统提供了一种构建自定义 Linux 发行版的工具。这个工具主要用于生成最小化的 Linux 环境,适用于各种硬件平台,如路由器、智能家居设备、自动驾驶系统等。在 Buildroot 中,...
解压最外层目录,只需要把里边的两个压缩包:cmake-3.8.2.tar.gz 和 zlib-1.2.11.tar.xz 拷贝到buildroot-2019.02.6/dl 然后sudo make 即可
buildroot 2020.02.11 LTS
gcc-buildroot-9.3.0-2020.03-x86_64_aarch64-rockchip-linux-gnu
buildroot是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到...
嵌入式linux 交叉编译器
2. **解压**:使用`sudo tar -xvf buildroot.tar.gz`命令解压。 3. **创建编译脚本**:在Buildroot顶层目录下创建`cmd.sh`,内容应包括设置环境变量,如GCC路径。 4. **复制配置文件**:将`configs`目录下的`ls2k_...
Buildroot是一个轻量级的构建系统,它的目标是为嵌入式设备生成最小化的、自包含的Linux系统。通过提供一个简单的配置界面,用户可以选取需要编译的组件,如内核、文件系统、工具链等,然后Buildroot会自动下载源...
总的来说,"dl88荣品RK3588的Buildroot的下载20230103-0835.tgz" 提供了一个专为RK3588处理器优化的Buildroot构建环境,使得开发者能够更高效地创建和定制嵌入式Linux系统,尤其是在网络环境不佳的情况下,通过一个...
cv1826的buildroot的dl20230328_2345.tgz 由于需要从外网下载,所以放到这里,以便节省大家的时间。 因为有些时候会出错,或者等待很久的时间呀! CV1823_CV1825_CV1826_PINOUT_V0.2_CN.xlsx
http://sources.buildroot.net/linux-HEAD.tar.gz 编译时缺少不能下载的包 下载后将解压出来,然后将linux-HEAD.tar.gz放到buildroot/dl目录 RV1126_RV1109
荣品RD-RK3588-AHD开发板buildroot系统的包文件。rk-linux5.10-20240828.tar 我今天 需要下载的包才2GB。我 12:30开始编译的,编译完成 16点。花了3.5小时。 【原厂的包文件齐全的话,大概1.5小时搞定。】 基本上...
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. https://buildroot.org/
瑞芯微 linux开发,buildroot使用手册,下载
buildroot-2019.02.6
使用 Buildroot 构建 RK3399 系统时,首先需要根据目标平台选择或创建合适的配置文件,然后运行 `make` 命令进行编译。编译过程中,Buildroot 会下载源代码、配置选项、编译、打包,并生成一个完整的文件系统映像,...
**Buildroot 2018.05.1:构建嵌入式Linux系统的基石** **一、Buildroot简介** Buildroot是一个开源项目,用于构建嵌入式Linux系统的工具链、内核、根文件系统等核心组件。它简化了在各种硬件平台上创建定制化Linux...
Buildroot作为一个轻量级的工具,为开发者提供了一种方便的方式来构建嵌入式Linux系统的根文件系统。本文将详细探讨Buildroot 2019.05.1版本及其工作原理,同时也会涉及到mdb文件的相关知识。 首先,让我们深入了解...