----------------------------------
浏览器上跑操作系统

目标,可定值内核(2.6.20,2.6.24,3.15,3.19): vmlinux26.bin
定制硬盘文件:hda.img,root.bin
可定制启动文件:linustart.bin
可定制网络(websocket,webrtc)

----------------------------------
创建硬盘的:
jslinux_reversed
[url]https://github.com/killinux/jslinux_reversed[/url]
fabrice bellard原版的
jslinux-bellard
[url]https://github.com/killinux/jslinux-bellard[/url]
copy from bellard.org
网络的:
jslinux-network
[url]https://github.com/killinux/jslinux-network[/url]
copy from https://bitbucket.org/ivucica/jslinux-network/
jsmodem
https://github.com/killinux/jsmodem
看源码的:
jslinux-deobfuscated
[url]https://github.com/killinux/jslinux-deobfuscated[/url]
另一种RISC-V指令集的的:
riscv-angel
[url]https://github.com/killinux/riscv-angel[/url]
什么都带的
[url]https://github.com/kmacrow/Vespen[/url]
###############################################
jslinux_reversed有一些问题:
因为squeeze的版本比较老,属于debian6,源要去归档里找[url]http://archive.debian.org/debian[/url],
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了
如果网络不好可以下载
[url]http://pan.baidu.com/s/1c14HKre[/url]
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
[url]https://github.com/killinux/jslinux_reversed/blob/master/contrib/createimage.sh[/url]
##################################
例子:
使用ubuntu14.04 32位
假设默认目录 /var/www

lslinux-2.6.20 jslinux_reversedcd linux-2.6.20patch -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 FORCEInstead of:%config: scripts_basic outputmakefile FORCEThe 1268 line of code: / %/: prepare scripts FORCEInstead 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/shshow_boot_time 2>/dev/nullecho "JSLinux started, initializing..."export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/binexport HOME=/rootexport TERM=vt100mount -n -t proc /proc /procmount -n -t sysfs /sys /sysmount -n -t devpts devpts /dev/ptsmount -n -t tmpfs /tmp /tmpmkdir -p "/tmp/root"#/sbin/mdev -sip link set up dev lomain() {#    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/clipboardmain "$@"

##################
用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 setCONFIG_BLK_DEV_RAM=yCONFIG_BLK_DEV_RAM_COUNT=16CONFIG_BLK_DEV_RAM_SIZE=4096CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024CONFIG_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的错,内核限制只能这么大
###################
[code="java"]
#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
[/code]
##############################
3.hda.img的/sbin/init
如果生成的/dev下面没有文件,需要加一句/sbin/mdev -s

[img]http://dl2.iteye.com/upload/attachment/0117/5817/e8307d00-6a53-3290-b5fb-916b1df90258.png[/img]
有一个16M内存
120M硬盘
能跑gcc的浏览器就直接打开的操作系统
而且是可定制的操作系统。
下篇继续讲tap设备+websocket打通web上的jslinux到真实服务器
jslinux-network

[url]http://dl2.iteye.com/upload/attachment/0121/1991/2720f5ca-f9cb-30a4-96a8-506ee60cb652.jpeg[/url]
保存成

.config文件给
[url]https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.3.tar.xz[/url]

用,生成的bzImage 启动后会自动带eth0 可供测试用

120M硬盘的jslinux相关推荐

  1. Linux单系统手动分区教程,【教程贴】Linux类系统手动操作篇--标准分区硬盘和目录扩容...

    [root@aioCloud ~]# lsblk    #查看硬盘容量 NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT sda      8:0    0   4 ...

  2. 激活硬盘被关闭的DMA模式

    激活硬盘被关闭的DMA模式  宣恩向 2010-05-16 11:32:40 一.DMA小知识 DMA的英文拼写是"Direct Memory Access",汉语的意思就是直接内 ...

  3. 黑苹果内置硬盘识别成外置硬盘_拥有希捷这款硬盘更加方便了我们的数据转移、保密和随时随地使用...

    随着众多消费者对超大数据便携性的强烈需求,数据存储设备的需求也呈现爆炸式增长.特别是蓝光电影.影音处理.超大工程制图及建模等数据存储和携带转移的需求,使笔记本电脑的内置硬盘(一般仅有1T,不超过2T) ...

  4. [ubuntu20]查看是否是固态硬盘

    1.查看硬盘名称 fdisk -l 2. 查看磁盘类型:0为固态 1位机械 lsblk -d -o name,rota 机械磁盘的读写速度一般为120m/s 固态磁盘的读写速度一般为500m/s

  5. 使用桥接网络的jslinux

    测试demo在:http://www.hackernel.com/jslinux/ 本文代码在:https://github.com/killinux/jslinux-tap 2011年很火的jsli ...

  6. Google Colab 免费GPU服务器使用教程 挂载云端硬盘

    一.前言 二.Google Colab特征 三.开始使用 3.1在谷歌云盘上创建文件夹 3.2创建Colaboratory 3.3创建完成 四.设置GPU运行 五.运行.py文件 5.1安装必要库 5 ...

  7. 固态硬盘与QLC闪存

    固态硬盘与QLC闪存 致钛系列消费级固态硬盘 以极"致"产品定义闪存科技新"钛"度 长江存储致钛系列两款消费级固态硬盘(SSD)新品,分别为PCIe接口PC00 ...

  8. 增强型固态硬盘支持人工智能工作负载

    增强型固态硬盘支持人工智能工作负载 Enhanced SSDs support AI workloads 多伦多--关于人工智能(AI)和机器学习工作负载所需的内存和架构已经有很多讨论,而Micron ...

  9. 服务器创建和附加虚拟磁盘,Windows 7 虚拟硬盘中的新增功能

    [IT168 专稿]Microsoft 虚拟硬盘文件格式 (.vhd) 是一种公用格式规范,用于指定封装在单个文件中的虚拟硬盘,它能够承载本机文件系统并支持标准的磁盘操作. Microsoft Win ...

最新文章

  1. cocos2dx-3.9 集成admob
  2. 一个参数一个Excel表,让你玩转Pandas中read_excel()表格读取!
  3. Java_基础—List的三个子类的特点
  4. day38-数据库应用软件
  5. 如何使用Python操作MySQL数据库
  6. js获取用户在input标签中输入的值,然后改变html下各个标签的值或者属性
  7. (转)Hadoop入门进阶课程
  8. 纯CSS实现鼠标滑过缩略图放大显示代码
  9. 黑群晖的网络录像机启用并直通互联网的几个关键点
  10. 互联网大厂的薪资和职级一览
  11. 使用ntop监控局域网网络流量
  12. 英国第一位重要的浪漫主义诗人
  13. 一天一个小算法——最小生成树(kru Prm)
  14. Debian 国内常用镜像源
  15. 机器人运动估计——IMU运动方程与ESKF原理介绍(上)
  16. java计算机毕业设计乡村基层政务管理系统源代码+数据库+系统+lw文档
  17. 学做网站有哪些注意事项(上)
  18. 分析OpenSL回声Demo
  19. 以面试官的角度来看 React 工作面试
  20. SAX 解析XML文件:将XML转换成Java对象

热门文章

  1. 微信公众号测试账号总结
  2. 地铁框架保护的原理_浅析地铁直流框架保护原理及应急处置
  3. coreldraw凹槽_Coreldraw教程:打造逼真静物写生
  4. OSX的一些基本知识
  5. 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)
  6. insert 插入数据
  7. Linux下安装google浏览器
  8. 家庭库存管理系统Homebox
  9. JAVA中native方法(实现例子)
  10. windows SVN server