- 浏览: 1482753 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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调试内核
----------------------------------
浏览器上跑操作系统
目标,可定值内核(2.6.20,2.6.24,3.15,3.19): vmlinux26.bin
定制硬盘文件:hda.img,root.bin
可定制启动文件:linustart.bin
可定制网络(websocket,webrtc)
----------------------------------
创建硬盘的:
jslinux_reversed
https://github.com/killinux/jslinux_reversed
fabrice bellard原版的
jslinux-bellard
https://github.com/killinux/jslinux-bellard
copy from bellard.org
网络的:
jslinux-network
https://github.com/killinux/jslinux-network
copy from https://bitbucket.org/ivucica/jslinux-network/
jsmodem
https://github.com/killinux/jsmodem
看源码的:
jslinux-deobfuscated
https://github.com/killinux/jslinux-deobfuscated
另一种RISC-V指令集的的:
riscv-angel
https://github.com/killinux/riscv-angel
什么都带的
https://github.com/kmacrow/Vespen
###############################################
jslinux_reversed有一些问题:
因为squeeze的版本比较老,属于debian6,源要去归档里找http://archive.debian.org/debian,
contrib/createimage.sh
改成
##################
用更小一点的低版本镜像,需要装ssh
debootstrap --variant=minbase --include=ssh,psmisc,mini-httpd,net-tools,iproute,iputils-ping,procps,telnet,iptables,wget,tcpdump,curl,gdb,binutils,gcc,libc6-dev,lsof,strace --exclude=locales,aptitude,gnupg,cron,udev,tasksel,rsyslog,groff-base,manpages,gpgv,man-db,apt,debian-archive-keyring,sysv-rc,sysvinit,insserv,python2.6 --arch i386 etch etch 'http://archive.debian.org/debian
参考http://www.debian.org/releases/
##################
可能会有网络原因,多试验几次,可以include去掉一些,ssh比较大,加了就到130M了
如果网络不好可以下载
http://pan.baidu.com/s/1c14HKre
squeeze.tar.gz
如果想用ssh,去掉一些其他的
#################
###################
-------------------------------------------------------------------------------
解压后就可以按createimage.sh的进行了,
createimage.sh
https://github.com/killinux/jslinux_reversed/blob/master/contrib/createimage.sh
##################################
例子:
使用ubuntu14.04 32位
假设默认目录 /var/www
修改Makefile
#################################
################################
生成bzImage
编译内核完成
--------------------------------
cd jslinux_reversed/contrib
执行上面的debootstrap.....
生成squeeze,300多M,直接下载http://pan.baidu.com/s/1c14HKre。
./createimge.sh
#生成hda.img
#可以用qemu测一下img
如果在本机上测试需要刚才编译好的内核bzImage
还需要修改hda.img的sbin/init文件,把/dev/clipboard相关的去掉,这是jslinux和页面交互的
##########
##################
用jslinux_reversed 的2.6.20.config 注意root后是hda
默认的2.6.20的config是sda
如果想使用ramdisk,使用
编译内核的时候.config需要加
###########
###########
make
#注意这里,Makefile比fabrice的多了splitted
make会在jslinux_reversed生成了bin目录,把120M的hda.img切割,并把linuxstart.bin vmlinux26.bin拷过去
简单修改index.html,下面加一句<div id="canvas1"></div>
我们的目录是jslinux_reversed 所以假设里,var prefix='/jslinux_reversed';
################################################
几个关键点
1.-append后面的参数是和内核对应的,如果对不上,则可能会内核的panic错误,
如果是ramdisk的方式,最好在4M一下,修改了2.6.20的
#####
CONFIG_BLK_DEV_RAM_SIZE=4096
#####
似乎也不好使
大于4M 需要加ramdisk_size=128000,但是7,8M的时候就不好使了,
2.hda.img不能超过120M
注意IMAGE_SIZE=120 不能超过120M,否则会报245760的错,内核限制只能这么大
###################
##############################
3.hda.img的/sbin/init
如果生成的/dev下面没有文件,需要加一句/sbin/mdev -s
有一个16M内存
120M硬盘
能跑gcc的浏览器就直接打开的操作系统
而且是可定制的操作系统。
下篇继续讲tap设备+websocket打通web上的jslinux到真实服务器
jslinux-network
http://dl2.iteye.com/upload/attachment/0121/1991/2720f5ca-f9cb-30a4-96a8-506ee60cb652.jpeg
保存成
.config文件给
https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.3.tar.xz
用,生成的bzImage 启动后会自动带eth0 可供测试用
浏览器上跑操作系统
目标,可定值内核(2.6.20,2.6.24,3.15,3.19): vmlinux26.bin
定制硬盘文件:hda.img,root.bin
可定制启动文件:linustart.bin
可定制网络(websocket,webrtc)
----------------------------------
创建硬盘的:
jslinux_reversed
https://github.com/killinux/jslinux_reversed
fabrice bellard原版的
jslinux-bellard
https://github.com/killinux/jslinux-bellard
copy from bellard.org
网络的:
jslinux-network
https://github.com/killinux/jslinux-network
copy from https://bitbucket.org/ivucica/jslinux-network/
jsmodem
https://github.com/killinux/jsmodem
看源码的:
jslinux-deobfuscated
https://github.com/killinux/jslinux-deobfuscated
另一种RISC-V指令集的的:
riscv-angel
https://github.com/killinux/riscv-angel
什么都带的
https://github.com/kmacrow/Vespen
###############################################
jslinux_reversed有一些问题:
因为squeeze的版本比较老,属于debian6,源要去归档里找http://archive.debian.org/debian,
contrib/createimage.sh
改成
##################
debootstrap --variant=minbase --include=psmisc,mini-httpd,net-tools,iproute,iputils-ping,procps,netcat-openbsd,telnet,iptables,wget,tcpdump,curl,gdb,binutils,gcc,libc6-dev,lsof,strace --exclude=locales,aptitude,gnupg,cron,udev,tasksel,rsyslog,groff-base,manpages,gpgv,man-db,apt,debian-archive-keyring,sysv-rc,sysvinit,insserv,python2.6 --arch i386 squeeze squeeze 'http://archive.debian.org/debian'
用更小一点的低版本镜像,需要装ssh
debootstrap --variant=minbase --include=ssh,psmisc,mini-httpd,net-tools,iproute,iputils-ping,procps,telnet,iptables,wget,tcpdump,curl,gdb,binutils,gcc,libc6-dev,lsof,strace --exclude=locales,aptitude,gnupg,cron,udev,tasksel,rsyslog,groff-base,manpages,gpgv,man-db,apt,debian-archive-keyring,sysv-rc,sysvinit,insserv,python2.6 --arch i386 etch etch 'http://archive.debian.org/debian'
debootstrap --variant=minbase --include=ssh,psmisc,mini-httpd,net-tools,iproute,iputils-ping,procps,telnet,iptables,wget,tcpdump,curl,gdb,binutils,gcc,libc6-dev,lsof,strace --exclude=locales,aptitude,gnupg,cron,udev,tasksel,rsyslog,groff-base,manpages,gpgv,man-db,apt,debian-archive-keyring,sysv-rc,sysvinit,insserv,python2.6 --arch i386 etch etch 'http://archive.debian.org/debian
参考http://www.debian.org/releases/
##################
可能会有网络原因,多试验几次,可以include去掉一些,ssh比较大,加了就到130M了
如果网络不好可以下载
http://pan.baidu.com/s/1c14HKre
squeeze.tar.gz
如果想用ssh,去掉一些其他的
#################
debootstrap --variant=minbase --include=iputils-ping,ssh,gdb,binutils,gcc,libc6-dev --exclude=locales,aptitude,gnupg,cron,udev,tasksel,rsyslog,groff-base,manpages,gpgv,man-db,apt,debian-archive-keyring,sysv-rc,sysvinit,insserv,python2.6 --arch i386 squeeze squeeze 'http://archive.debian.org/debian'
###################
-------------------------------------------------------------------------------
解压后就可以按createimage.sh的进行了,
createimage.sh
https://github.com/killinux/jslinux_reversed/blob/master/contrib/createimage.sh
##################################
例子:
使用ubuntu14.04 32位
假设默认目录 /var/www
ls linux-2.6.20 jslinux_reversed cd linux-2.6.20 patch -p1 < ../linuxstart-20120111/patch_linux-2.6.20 patch -p1 < ../linuxstart-20120111/2.6.20_common_fixes.patch https://github.com/socketpair/jslinux_reversed/blob/master/contrib/patches/2.6.20_common_fixes.patch
修改Makefile
#################################
config %config: scripts_basic outputmakefile FORCE Instead of: %config: scripts_basic outputmakefile FORCE The 1268 line of code: / %/: prepare scripts FORCE Instead of: %/: prepare scripts FORCE
################################
time make ARCH=i386 -j16
生成bzImage
编译内核完成
--------------------------------
cd jslinux_reversed/contrib
执行上面的debootstrap.....
生成squeeze,300多M,直接下载http://pan.baidu.com/s/1c14HKre。
./createimge.sh
#生成hda.img
#可以用qemu测一下img
如果在本机上测试需要刚才编译好的内核bzImage
还需要修改hda.img的sbin/init文件,把/dev/clipboard相关的去掉,这是jslinux和页面交互的
##########
#!/bin/sh show_boot_time 2>/dev/null echo "JSLinux started, initializing..." export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin export HOME=/root export TERM=vt100 mount -n -t proc /proc /proc mount -n -t sysfs /sys /sys mount -n -t devpts devpts /dev/pts mount -n -t tmpfs /tmp /tmp mkdir -p "/tmp/root" #/sbin/mdev -s ip link set up dev lo main() { # echo >/dev/clipboard while :; do echo "hello this is haoning s debian" setsid sh -c "exec bash 0<>/dev/ttyS0 1>&0 2>&0" done } #. /dev/clipboard main "$@"
##################
用jslinux_reversed 的2.6.20.config 注意root后是hda
qemu-system-i386 -kernel /var/www/linux-2.6.20/arch/i386/boot/bzImage -hda hda.img -append "console=ttyS0 root=/dev/hda rw init=/sbin/init notsc=1" -nographic
默认的2.6.20的config是sda
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
如果想使用ramdisk,使用
编译内核的时候.config需要加
###########
CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_NBD is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 CONFIG_BLK_DEV_INITRD=y
###########
qemu-system-i386 -kernel /var/www/jslinux-network/tmp/linux-2.6.20/arch/i386/boot/bzImage -initrd rootfs.ext2 -append "console=ttyS0 root=/dev/ram0 rw init=/sbin/init notsc=1 ramdisk_size=128000" -nographic
make
#注意这里,Makefile比fabrice的多了splitted
make会在jslinux_reversed生成了bin目录,把120M的hda.img切割,并把linuxstart.bin vmlinux26.bin拷过去
简单修改index.html,下面加一句<div id="canvas1"></div>
我们的目录是jslinux_reversed 所以假设里,var prefix='/jslinux_reversed';
################################################
几个关键点
1.-append后面的参数是和内核对应的,如果对不上,则可能会内核的panic错误,
如果是ramdisk的方式,最好在4M一下,修改了2.6.20的
#####
CONFIG_BLK_DEV_RAM_SIZE=4096
#####
似乎也不好使
大于4M 需要加ramdisk_size=128000,但是7,8M的时候就不好使了,
2.hda.img不能超过120M
注意IMAGE_SIZE=120 不能超过120M,否则会报245760的错,内核限制只能这么大
###################
[root@centos32 linux-2.6.20]#grep -nR 245760 * arch/ppc/platforms/gemini_serial.h:14:#define BASE_BAUD (24576000 / 16) drivers/atm/idt77252_tables.h:554:/* 245760.00 => 246 */ 0xf6, /* => 245504.00 */ drivers/net/wan/pc300.h:130:#define PC300_OSC_CLOCK 24576000 include/media/saa7115.h:38:#define SAA7115_FREQ_24_576_MHZ 24576000 /* 24.576 MHz crystal */ sound/pci/sonicvibes.c:189:#define SV_REFFREQUENCY 24576000
##############################
3.hda.img的/sbin/init
如果生成的/dev下面没有文件,需要加一句/sbin/mdev -s
有一个16M内存
120M硬盘
能跑gcc的浏览器就直接打开的操作系统
而且是可定制的操作系统。
下篇继续讲tap设备+websocket打通web上的jslinux到真实服务器
jslinux-network
http://dl2.iteye.com/upload/attachment/0121/1991/2720f5ca-f9cb-30a4-96a8-506ee60cb652.jpeg
保存成
.config文件给
https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.3.tar.xz
用,生成的bzImage 启动后会自动带eth0 可供测试用
发表评论
-
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############################### ... -
jslinux带网络功能的内核
2016-11-15 15:35 822想重新编译jslinux-network 的内核,其实就是比f ... -
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 ... -
使用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: ...
相关推荐
后来学C和Node.js等后端语言的时候,明显感受到shell命令行和Linux环境对于开发的重要性。所以后面打算再补四章的内容:script和软件安装,进程与程序管理和Linux中常见的网络命令^_ ^ 目录 一、计算机系统与Linux ...
安装过程中,作者选择了只安装LINUX、C++、.NET Core、*** Web开发和Node.js开发等工作负载。这说明用户可以根据自己的开发需求灵活选择安装Visual Studio的不同组件,而不是一次性安装全部内容,从而节省磁盘空间。...
--js 广告JS目录 --javascript 不可更改 --log 日志存放目录 存放包括数据库出错日志,需要读写权限 --advertiser 不可更改 --service 不可更改 --affiliate 不可更改 --templates 模版目录 包括前台,会员...
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 ...JS:javascript源文件 JSP:HTML网页,其中包含有对一个Java servlet...
硬件环境:P4以上服务器,1G内存,10G以上硬盘; 网络环境:10M;推荐10M以上。 MYSQL(my.ini) sql-mode选项 修改为以下值 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 安装说明 app lib www为同级...
硬件环境:P4以上服务器,1G内存,10G以上硬盘; 网络环境:10M;推荐10M以上。 MYSQL(my.ini) sql-mode选项 修改为以下值 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 安装说明 app lib www为同级...
硬件环境:P4以上服务器,1G内存,10G以上硬盘; 网络环境:10M;推荐10M以上。 MYSQL(my.ini) sql-mode选项 修改为以下值 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 安装说明 app lib www为同级...
硬盘: 250 GB 分辨率:全屏模式下:1280 * 800,最低分辨率:1024 * 768 工具运行所需依赖: 操作系统平台环境无特别要求(Win, Linux, MAC) Node.js 0.6.8+ x86/x64 Chrome 27.0.1453.94 m Internet Explorer 9.0...
硬件环境:P4以上服务器,1G内存,10G以上硬盘; 网络环境:10M;推荐10M以上。 流量小于10万,一般虚拟主机,即可完美运行。 系统特点 1、广告主和网站主,同一帐号,广告主和网站管理中心一键切换。 2、多种广告...
6. 数据类型:字符串用‘’或“ ”,正向递增序号、反向递减序号正向 0 开始编号索引:可以使用 [M] 索引其中单个字符切片:可以使用 [M:N] 返回其中一段子串,从第 M 到第 N-1 个字符。数字类型:整数、浮点数。...
硬件环境:P4以上服务器,1G内存,10G以上硬盘; 网络环境:10M;推荐10M以上。 MYSQL(my.ini) sql-mode选项 修改为以下值 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 安装说明 app lib www为同级...
硬件环境:P4以上服务器,1G内存,10G以上硬盘; 网络环境:10M;推荐10M以上。 MYSQL(my.ini) sql-mode选项 修改为以下值 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 安装说明 app lib www为同级...
服务器选用了四核、8GB内存、100GB硬盘空间的云服务器,配备10M独享带宽的光纤连接,保证全国范围内的高速访问。采用BGP多线机房,确保网络流量的均衡。机房具备防静电、24x7网络监控、不间断电源和备用发电机,提供...