- 浏览: 1482771 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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调试内核
想重新编译jslinux-network
的内核,其实就是比fabrice bellard的内核多了个e1000的网卡
使内核与用户空间通信的netlink socket可用
测试即是
ip link可用
关键点是make ARCH=i386 drivers/net/e1000/
最后一个/不能少
测试环境32位的centos7:
buildroot-2016.08.1.tar.gz
如果是普通的fabrice的内核
2.6.20 + buildroot
/ # ip link
Cannot open netlink socket: Invalid argument
bzImage4.0.3 +buildroot
3个设备,lo,eth0,sit0@NONE
这个内核比较大,后面放编译方法
判断是内核的问题导致netlink socket错误
找遍了.config内核选项,network driver相关的都没有
其实网卡因为太多相关不在.config里面
pwd
/opt/jslinux/kernel/linux-2.6.20
在网卡目录生成built-in.o
再编译内核
参考《LINUX+2.6内核标准教程》
生成内核的步骤
1.内核编译的时候会根据arch/i386/kernel/vmLinux.lds
把所有的buildin编译进内核,生成未压缩的src/vmLinux,连接偏移地址0xc0000000
(这里把e1000的网卡也编译进去了)
2.objcopy生成 /arch/i386/boot/compressd/vmlinux.bin
gzip生成vmlinux.bin.gz)
ld 根据连接脚本vmlinux.scr生成piggy.o
3.misc.o解压缩的c代码
head.o汇编为解压缩设置参数和堆栈
和piggy.o
ld生成arch/i386/boot/compressed/vmLinux
4.objcopy 生成 arch/i386/boot/vmLinux.bin
5.用build将bootsect(512字节),setup(512字节) ,vmLinux.bin生成bzImage
有了bzImage我们就可以用qemu启动了vm了
ip link不报错了
虽然qemu还是访问不了外网,但是这个额内核已经可以给jslinux-network使用了
具体步骤如下
★★★★
编译内核:
linux-2.6.20.tar.gz
ls
linux-2.6.20 tmp/linuxstart-20120111
添加tun的支持
cd linux-2.6.20
代码在
https://github.com/killinux/jslinux_reversed
https://github.com/killinux/jslinux-network
为了适应本机的
gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
vim Makefile
搜索/config %config
搜索/\/ %\/
检查CONFIG_TUN=y
这里最重要
.config里的
CONFIG_TUN 不要新增
而要删掉原来的 CONFIG_TUN is not set
变成
CONFIG_TUN=y
这句不用加的
这个驱动应该是ubuntu的那个内核要的驱动
在deobfuscated里面是不用加的
vim .config
确认 CONFIG_TUN=y是否还在
如果在 ,就执行
jslinux启动的时候如果有
则表示成功了
生成 linux-2.6.20/arch/i386/boot/bzImage
cd ../tmp/linuxstart-20120111/
生成jslinux可用的
vim Makefile
指定刚才的kernel路径
修改KERNEL_PATH=../../linux-2.6.20
make kernel 生成vmlinux26.bin
cp vmlinux2.6.bin /var/www/jslinux-network/
vim jslinux-network/jslinux.js
启动websocket的服务端进程,建立tap的通道
jslinux-network/websocketstuntap/launch.sh
进入jslinux-network
建立tap0
启动web页面上的connect or reconnect websockets
ping 10.0.2.2
以上是内核编译替换成功了
下面替换硬盘文件
###################################另外###########
如果想要带lo,eth0,sit0的的内核,
把
http://dl2.iteye.com/upload/attachment/0121/2645/d7cb6c0e-5039-30d7-a08a-49019f17d18c.jpeg
保存成.config编译linux-4.0.3的内核得到bzImage即可
内核的下载地址
https://www.kernel.org/pub/linux/kernel/v2.6/
测试
进入vm测试
其中
的内核,其实就是比fabrice bellard的内核多了个e1000的网卡
使内核与用户空间通信的netlink socket可用
测试即是
ip link可用
关键点是make ARCH=i386 drivers/net/e1000/
最后一个/不能少
测试环境32位的centos7:
[root@centos32 linux-2.6.20]# uname -a Linux centos32 3.10.0-327.18.2.el7.i686 #1 SMP Fri May 13 02:29:38 UTC 2016 i686 i686 i386 GNU/Linux [root@centos32 linux-2.6.20]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (AltArch) [root@centos32 linux-2.6.20]# make -v GNU Make 3.82 Built for i386-redhat-linux-gnu Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. [root@centos32 linux-2.6.20]# gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [root@centos32 linux-2.6.20]
buildroot-2016.08.1.tar.gz
如果是普通的fabrice的内核
2.6.20 + buildroot
/ # ip link
Cannot open netlink socket: Invalid argument
bzImage4.0.3 +buildroot
3个设备,lo,eth0,sit0@NONE
这个内核比较大,后面放编译方法
判断是内核的问题导致netlink socket错误
找遍了.config内核选项,network driver相关的都没有
其实网卡因为太多相关不在.config里面
pwd
/opt/jslinux/kernel/linux-2.6.20
make ARCH=i386 drivers/net/e1000/
在网卡目录生成built-in.o
再编译内核
time make ARCH=i386 -j16
参考《LINUX+2.6内核标准教程》
生成内核的步骤
1.内核编译的时候会根据arch/i386/kernel/vmLinux.lds
把所有的buildin编译进内核,生成未压缩的src/vmLinux,连接偏移地址0xc0000000
(这里把e1000的网卡也编译进去了)
2.objcopy生成 /arch/i386/boot/compressd/vmlinux.bin
gzip生成vmlinux.bin.gz)
ld 根据连接脚本vmlinux.scr生成piggy.o
3.misc.o解压缩的c代码
head.o汇编为解压缩设置参数和堆栈
和piggy.o
ld生成arch/i386/boot/compressed/vmLinux
4.objcopy 生成 arch/i386/boot/vmLinux.bin
5.用build将bootsect(512字节),setup(512字节) ,vmLinux.bin生成bzImage
有了bzImage我们就可以用qemu启动了vm了
qemu-system-i386 -kernel /opt/jslinux/kernel/linux-2.6.20/arch/i386/boot/bzImage -drive file=hda.img.lspci,if=ide,cache=none -append "console=ttyS0 root=/dev/hda rw rdinit=/sbin/init notsc=1" -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,ifname=tap1,script=./if-up,downscript=./if-down -nographic
ip link不报错了
虽然qemu还是访问不了外网,但是这个额内核已经可以给jslinux-network使用了
具体步骤如下
★★★★
编译内核:
linux-2.6.20.tar.gz
ls
linux-2.6.20 tmp/linuxstart-20120111
cp tmp/linuxstart-20120111/config_linux-2.6.20 linux-2.6.20/.config vim linux-2.6.20/.config CONFIG_TUN=y
添加tun的支持
cd linux-2.6.20
patch -p1 < ../tmp/linuxstart-20120111/patch_linux-2.6.20 patching file drivers/char/Kconfig patching file drivers/char/Makefile patching file drivers/char/jsclipboard.c patching file drivers/serial/8250.c patching file drivers/ide/ide-probe.c patch -p1 < /var/www/jslinux_reversed/contrib/patches/2.6.20_common_fixes.patch patching file arch/i386/kernel/Makefile patching file kernel/mutex.c patching file scripts/mod/sumversion.c [root@centos32 linux-2.6.20]#
代码在
https://github.com/killinux/jslinux_reversed
https://github.com/killinux/jslinux-network
为了适应本机的
gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
vim Makefile
搜索/config %config
config %config: scripts_basic outputmakefile FORCE 改成 %config: scripts_basic outputmakefile FORCE
搜索/\/ %\/
/ %/: prepare scripts FORCE 改成 %/: prepare scripts FORCE
检查CONFIG_TUN=y
这里最重要
.config里的
CONFIG_TUN 不要新增
而要删掉原来的 CONFIG_TUN is not set
变成
CONFIG_TUN=y
这句不用加的
make ARCH=i386 drivers/net/e1000/
这个驱动应该是ubuntu的那个内核要的驱动
在deobfuscated里面是不用加的
vim .config
确认 CONFIG_TUN=y是否还在
如果在 ,就执行
time make ARCH=i386 -j16
jslinux启动的时候如果有
tun: Universal TUN/TAP device driver, 1.6 tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
则表示成功了
生成 linux-2.6.20/arch/i386/boot/bzImage
cd ../tmp/linuxstart-20120111/
生成jslinux可用的
vim Makefile
指定刚才的kernel路径
修改KERNEL_PATH=../../linux-2.6.20
make kernel 生成vmlinux26.bin
cp vmlinux2.6.bin /var/www/jslinux-network/
vim jslinux-network/jslinux.js
if (!kernel_name) //kernel_name = "vmlinux-2.6.20.bin"; kernel_name = "vmlinux26.bin";
启动websocket的服务端进程,建立tap的通道
jslinux-network/websocketstuntap/launch.sh
进入jslinux-network
cat /dev/clipboard|sh
建立tap0
启动web页面上的connect or reconnect websockets
ping 10.0.2.2
以上是内核编译替换成功了
下面替换硬盘文件
###################################另外###########
如果想要带lo,eth0,sit0的的内核,
把
http://dl2.iteye.com/upload/attachment/0121/2645/d7cb6c0e-5039-30d7-a08a-49019f17d18c.jpeg
保存成.config编译linux-4.0.3的内核得到bzImage即可
内核的下载地址
https://www.kernel.org/pub/linux/kernel/v2.6/
测试
qemu-system-i386 -kernel bzImage -drive file=root.bin,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1" -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,ifname=tap1,script=./if-up,downscript=./if-down -nographic
进入vm测试
ifconfig eth0 192.168.122.3 netmask 255.255.255.0 route add default gw 192.168.122.1 echo "nameserver 114.114.114.114" >/etc/resolv.conf ping www.baidu.com
其中
[root@centos32 kvm]# cat if-up #!/bin/sh ip link set tap1 up #brctl addif br0 tap1 brctl addif virbr0 tap1
- config.4.0.3.jpeg (95.8 KB)
- 下载次数: 2
发表评论
-
sdl笔记
2019-01-31 17:19 741sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1441参考https://bellard.org/jslinux/t ... -
建立tap设备的c的代码
2019-01-08 19:09 480tapper.c #include <stdio.h& ... -
jslinux总结帖
2019-01-04 21:33 1160注意个问题: chrome不要用两个tab页,否则ping不通 ... -
emscripten asm.js的helloworld
2018-03-01 20:15 1119mac下安装: brew install SDL2 SDL2_ ... -
nginx代理wss和https
2018-02-27 15:34 3939nginx启用ssl yum install openssl ... -
jslinux-deobfuscated-network
2017-02-13 22:37 733基础知识 查看网络包 tcpdump -i eth0 -e ... -
用buildroot为jslinux建立最小rootfs
2016-11-18 17:59 1279############################### ... -
nginx rewrite替代apache rewrite
2016-10-18 20:30 844清理chrome的缓存 chrome://appcache-i ... -
websocket和tap使用select关联
2016-06-14 22:01 753c语言的socket基础http://haoningabc.i ... -
jslinux-network
2016-05-30 23:00 760git clone https://github.com/ki ... -
120M硬盘的jslinux
2016-05-21 21:08 914------------------------------- ... -
使用buildroot为jslinux创建root.bin
2016-05-02 00:37 1354环境 gcc 版本 4.8.5 centos ... -
i386上的busybox
2016-04-26 22:51 1033环境:在64位机器上总莫名其妙问题,交叉编译也会有想不到的地方 ... -
php rewrite
2016-04-23 15:58 837环境ubuntu14 apache2 php5 apt-g ... -
qemu以64位和32位的方式跑busybox
2016-04-07 22:06 1611两种方式x86_64 和32位的i386方式 ------ ... -
使用jslinux的hda.bin制作rootfs
2015-09-01 18:13 910把jslinux的硬盘下载下来 host=http: ...
相关推荐
在Linux内核中,设备驱动程序是作为内核模块编写的,可以动态加载或卸载,以增强系统的灵活性。本文深入探讨了Linux设备驱动程序的内核机制,特别是字符设备驱动程序的实现。 首先,驱动程序的基本概念包括驱动程序...
【标题】"jslinux总结帖"所涉及的知识点主要集中在JavaScript和Linux操作系统上,通过将JavaScript与Linux结合,实现了一种独特的技术体验。JavaScript是一种广泛应用于网页和网络应用的编程语言,而Linux则是开源的...
《Linux网络编程指南》这本书是针对那些希望通过编程实现Linux系统中的网络通信的开发者们的一份宝贵资源。在深入探讨这个主题之前,让我们先理解一下网络编程的基本概念:它是一种允许不同计算机之间进行通信的技术...
3. **Linux**: Linux 是一种自由且开源的操作系统内核,广泛应用于服务器和各种设备上。"linux-x64"表明这个版本是为64位的 Linux 系统设计的,它可以兼容大部分现代64位的 Linux 发行版,如 Ubuntu、CentOS、Debian...
开发者需要确保使用的摄像头型号与Linux内核兼容,并正确安装相应的驱动程序。 2. **视频捕捉库**:如`v4l2`(Video for Linux Two)接口,它是Linux系统下处理视频输入输出的主要API,允许应用程序访问摄像头和...
4. Linux网络接口配置,如`ifcfg-wlan0`文件的编辑。 5. Wi-Fi网络连接,可能需要使用到wpa_supplicant等工具。 6. 解决Linux与非标准硬件的兼容性问题。 这些知识对于Linux运维人员和开发者来说是必不可少的,特别...
总之,JS9331开发板结合openWRT提供了丰富的功能和灵活性,适合初学者和经验丰富的开发者进行物联网项目。通过深入学习和实践,你可以充分利用这款开发板实现各种创新应用。记得,每个新项目都是一个学习和成长的...
2. **操作系统信息**:提供了操作系统类型(如Linux、macOS、Windows)、版本、内核版本、发行版等。这对于跨平台应用的适配和优化至关重要。 3. **网络信息**:可以获取网络接口列表、IP地址、MAC地址、带宽利用率...
3. **资源优化**:考虑到移动端的性能和网络条件,可能需要对 PDF.js 进行裁剪和优化,减少不必要的功能和资源,提升加载速度。 4. **兼容性测试**:由于移动设备的浏览器版本和性能差异,需要进行广泛的兼容性测试...
Linux是一个开源的操作系统,其核心是Linux内核。它提供了命令行界面(CLI)和图形用户界面(GUI)。图书管理系统在Linux环境下运行,可能依赖于特定的Linux发行版如Ubuntu、Fedora或Debian。 2. **文件系统与目录...
Linux是一种自由和开放源代码的类UNIX操作系统,其内核由林纳斯·托瓦兹创建。Linux操作系统不仅在服务器领域广泛使用,也在个人电脑、移动设备和嵌入式系统中占据一席之地。它的优势在于稳定性、安全性和可定制性,...
Node.js 在 Linux 上运行时,可以充分利用其稳定性和高性能的特点,为开发者提供了一种构建高效网络应用的途径。 Node.js 4.4.4 版本包含了多项改进和修复,确保了在 Linux 平台上运行的可靠性和稳定性。这个版本...
在IT领域,Linux是一个广泛使用的开源操作系统内核,由林纳斯·托瓦兹在1991年首次发布。这个标题暗示我们将探讨与Linux系统相关的知识,包括但不限于系统管理、命令行操作、软件安装、网络配置以及系统安全等方面。...
根据上述内容,可以看出RHEL 8.4在安全性、网络功能、内核、编程语言与数据库支持、开发工具以及身份管理方面都有所提升和优化。企业用户可依据这些信息,更好地了解和利用RHEL 8.4的新特性,确保其软件环境的先进性...
1. **建立开发环境**:选用Rekhvi Linux作为论坛的基础开发环境,根据功能需求选择安装方式,通过网络下载并安装arm-linux-gcc等编译器。 2. **配置开发主机**:设置MINICOM为主机,配置参数如波特率、数据位、控制...
EXT2.0、EXT4.0 和 JS 是计算机科学领域中的三个重要概念,它们分别代表了Linux文件系统、JavaScript编程语言以及JavaScript库EXT JS的相关版本。 EXT2.0是Linux操作系统下的一种文件系统,它是EXT(第二扩展文件...
例如,动态库可能包括CEF的主库文件,如`libcef.dll`(Windows)或`libcef.so`(Linux),以及必要的运行时支持库。测试demo则提供了实际的例子,展示了如何初始化CEF、加载网页以及实现JS-C++的交互。 在CEF开发...
首先,我们要明确的是,Android是一种基于Linux内核的开源移动操作系统,由Google主导开发并广泛应用于智能手机和平板电脑。在"休闲生活网络版"这款应用中,开发者很可能利用了Android SDK(软件开发工具包)和Java...
标题中的"node-v5.7.0-linux-x64.tar"是一个特定版本的Node.js运行时环境的Linux发行版,适用于64位架构系统。这个文件是一个归档文件,使用了tar格式,常用于在Linux和Unix环境中打包多个文件和目录。在Linux世界里...