- 浏览: 1476434 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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调试内核
这里是原创哦
被引用的
http://www.programering.com/a/MTM2gzNwATc.html
图片都木有换
硬盘的挂载和修改参考
http://haoningabc.iteye.com/blog/2142532
今天说一下jslinux内核的编译
环境:再linode的64位的centos7下
gcc版本
修改自带的Makefile为
注意加了make ARCH=i386 -C $(KERNEL_PATH) -j4 >log.txt 2>error.txt
---------------------------------------------
错误0:
Makefile:1442: *** mixed implicit and normal rules.
参考http://blog.csdn.net/fengyaqi123/article/details/7873940
解决:
在Makefile中
将420行代码:
即可编译通过!
------------------------------------------
错误1
参考 http://blog.csdn.net/livingpark/article/details/3732679
modifying linux-2.6.x/scripts/mod/sumversion.c, and adding #include <limits.h>
----------------------------------------------
错误2:
这个问题是由于 gcc 4.6 不再支持 linker-style 架构
需要 gcc -m elf_i386 改成gcc -m32
但是ld不改
参考http://blog.sina.com.cn/s/blog_8f9cdbbd01014lxj.html
解决:
查找所有的文件 grep -nR "\-m elf_i386" *
开始想这样做,但是这个方法不行
执行多文件替换
#sed -i "s/\-m elf_i386 \-m elf_i386/\-m elf_i386/g" `grep "\-m elf_i386" -rl .`
#sed -i "s/m elf_i386/m32/g" `grep "m elf_i386" -rl .`
只改vim arch/i386/kernel/Makefile 中的 -m elf_i386 变-m32 注意只改gcc后面的,ld的不修改
错误3:
如果是mutex相关的错误
未定义什么mutex加锁和解锁
kernel/mutex.c
这个好使,其他的都是扯淡,什么该config参数,什么加__used都不行,需要把static去掉,加锁和解锁的
https://github.com/socketpair/jslinux_reversed/blob/master/contrib/patches/2.6.20_common_fixes.patch
__mutex_lock_slowpath 的两个方法的static去掉
__mutex_unlock_slowpath的两个方法的static去掉
修改完了之后去make kernel
linux-2.6.20和linuxstart-20120111同级目录
运行效果
把vmlinux26.bin考到和index.html相同的位置
然后修改jslinux.js
jslinux.js中start3
为啥要选这些数字?
用emeditor搜索“Welcome to JS/Linux”
grep不行哦,会发现hda0000000781.bin里面有个echo "Welcome to JS/linux"
惊天秘密么?why,系统文件中怎么找这个?
文件时随机写的,但是某个文件写的时候是连续的吧
不要改呀 改了就起不来了,比如我们改了JS/linux为JJ/linux则会
原来是/sbin/init 有问题了
恢复文件后
vi /sbin/init
果然在这里啊
cat </sbin/init >/dev/clipboard 输出出来
被引用的
http://www.programering.com/a/MTM2gzNwATc.html
图片都木有换
硬盘的挂载和修改参考
http://haoningabc.iteye.com/blog/2142532
今天说一下jslinux内核的编译
环境:再linode的64位的centos7下
gcc版本
[root@#localhost linux-2.6.20]# gcc --version gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) Copyright (C) 2013 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.
修改自带的Makefile为
注意加了make ARCH=i386 -C $(KERNEL_PATH) -j4 >log.txt 2>error.txt
root@#localhost linuxstart-20120111]# pwd /data/qemu/linuxstart-20120111 [root@#localhost linuxstart-20120111]# cat Makefile LD=ld -m elf_i386 CC=gcc -m32 CFLAGS= -O2 -Wall -fno-builtin -fno-stack-protector #-march=i386 HOST_CFLAGS=-O2 -Wall # modify to set the kernel path KERNEL_PATH=../linux-2.6.20 all: linuxstart.bin linuxstart.out: linuxstart_head.o linuxstart.o libc.o $(LD) -o $@ -N -Ttext 0x00010000 $^ linuxstart.bin: linuxstart.out objcopy -O binary $< $@ cp /data/qemu/linuxstart-20120111/linuxstart.bin /data/qemu/backup/jslinux_debug/jslinux %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< %.o: %.S $(CC) -m32 -D__ASSEMBLY__ -c -o $@ $< # target to generate kernel kernel: #make ARCH=i386 -C $(KERNEL_PATH) -j4 make ARCH=i386 -C $(KERNEL_PATH) -j4 >log.txt 2>error.txt objcopy -O binary $(KERNEL_PATH)/vmlinux vmlinux26.bin clean: rm -f linuxstart.bin linuxstart.out *.o *~ [root@#localhost linuxstart-20120111]#
[root@#localhost linux-2.6.20]# pwd /data/qemu/linux-2.6.20 cp ../linuxstart-20120111/config* .config patch -p1 <../linuxstart-20120111/patch_linux-2.6.20 注意只有打了这个patch才能正常使用jslinux的剪切板
---------------------------------------------
错误0:
Makefile:1442: *** mixed implicit and normal rules.
参考http://blog.csdn.net/fengyaqi123/article/details/7873940
解决:
在Makefile中
将420行代码:
config %config: scripts_basic outputmakefile FORCE 改为: %config: scripts_basic outputmakefile FORCE 将1268行代码: / %/: prepare scripts FORCE 改为: %/: prepare scripts FORCE
即可编译通过!
------------------------------------------
错误1
scripts/mod/sumversion.c:384: error: ‘PATH_MAX’ undeclared 错误 scripts/mod/sumversion.c, and adding #include <limits.h>
参考 http://blog.csdn.net/livingpark/article/details/3732679
modifying linux-2.6.x/scripts/mod/sumversion.c, and adding #include <limits.h>
----------------------------------------------
错误2:
gcc: error: elf_i386: No such file or directory gcc: error: unrecognized command line option ‘-m’
这个问题是由于 gcc 4.6 不再支持 linker-style 架构
需要 gcc -m elf_i386 改成gcc -m32
但是ld不改
参考http://blog.sina.com.cn/s/blog_8f9cdbbd01014lxj.html
解决:
查找所有的文件 grep -nR "\-m elf_i386" *
开始想这样做,但是这个方法不行
执行多文件替换
#sed -i "s/\-m elf_i386 \-m elf_i386/\-m elf_i386/g" `grep "\-m elf_i386" -rl .`
#sed -i "s/m elf_i386/m32/g" `grep "m elf_i386" -rl .`
只改vim arch/i386/kernel/Makefile 中的 -m elf_i386 变-m32 注意只改gcc后面的,ld的不修改
错误3:
如果是mutex相关的错误
未定义什么mutex加锁和解锁
kernel/mutex.c
这个好使,其他的都是扯淡,什么该config参数,什么加__used都不行,需要把static去掉,加锁和解锁的
https://github.com/socketpair/jslinux_reversed/blob/master/contrib/patches/2.6.20_common_fixes.patch
__mutex_lock_slowpath 的两个方法的static去掉
__mutex_unlock_slowpath的两个方法的static去掉
修改完了之后去make kernel
linux-2.6.20和linuxstart-20120111同级目录
运行效果
把vmlinux26.bin考到和index.html相同的位置
然后修改jslinux.js
//pc.load_binary("vmlinux-2.6.20.bin", 0x00100000, start2); pc.load_binary("vmlinux26.bin", 0x00100000, start2);
jslinux.js中start3
block_list = [ 0, 7, 3, 643, 720, 256, 336, 644, 781, 387, 464, 475, 131, 589, 468, 472, 474, 776, 777, 778, 779, 465, 466, 473, 467, 469, 470, 512, 592, 471, 691, 697, 708, 792, 775, 769 ];
为啥要选这些数字?
用emeditor搜索“Welcome to JS/Linux”
grep不行哦,会发现hda0000000781.bin里面有个echo "Welcome to JS/linux"
惊天秘密么?why,系统文件中怎么找这个?
文件时随机写的,但是某个文件写的时候是连续的吧
不要改呀 改了就起不来了,比如我们改了JS/linux为JJ/linux则会
原来是/sbin/init 有问题了
恢复文件后
vi /sbin/init
果然在这里啊
cat </sbin/init >/dev/clipboard 输出出来
#!/bin/sh export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin export HOME=/var/root export TERM=vt100 mount -a mkdir /var/tmp mkdir /var/root ifconfig lo 127.0.0.1 # allow running DOS .COM executables with the small 'runcom' utility echo ':DOSCOM:E::com::/usr/bin/runcom:' > /proc/sys/fs/binfmt_misc/register stty -F /dev/ttyS0 rows 30 show_boot_time cd $HOME cp /root/hello.c $HOME ln -sf /root/dos $HOME echo "Welcome to JS/Linux" while /bin/true; do setsid sh -c 'exec sh </dev/ttyS0 >/dev/ttyS0 2>&1' done
发表评论
-
xl2tp 备份
2019-09-24 16:25 6892019年9月24日更新: 注意,需要开启firewall ... -
sdl笔记
2019-01-31 17:19 732sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1432参考https://bellard.org/jslinux/t ... -
aws搭建xl2tp给iphone使用
2018-12-26 21:37 18902019年12月26日 可以参考原来的配置 https:// ... -
consul的基本使用
2017-06-27 11:13 1399### 安装 [centos7上consul的安装](ht ... -
lvs的helloworld
2017-06-13 20:36 596###################lvs######### ... -
系统调用的helloworld
2017-05-04 16:14 632《2.6内核标准教程》 p293 #include < ... -
bitcoin和cgminer的安装
2017-04-05 22:45 1958参考 http://blog.csdn.net/rion_ch ... -
ceph安装和常用命令
2017-03-21 21:55 953/etc/hosts ssh-keygen ssh-copy- ... -
mobile terminal 笔记
2016-12-02 15:35 624找出旧的iphone4 越狱之后可以变个小操作系统 mobi ... -
socket基础和select(python)
2016-06-14 17:21 1799上接 c语言的socket基础ht ... -
socket基础(c语言)
2016-06-14 16:45 994不使用select 普通的基础socket连接,对多个客户端的 ... -
ffmpeg+nginx 的直播(2,直播摄像头和麦克风)
2016-05-28 20:21 4357假设我的服务器是centos7 192.168.139.117 ... -
ffmpeg+nginx 的直播(1,直播播放的视频文件)
2016-05-26 17:11 659164位操作系统centos7 ############ 1.一 ... -
socat和netcat(nc)
2016-04-29 22:36 1742转 原文链接: http://www.wenquan.name ... -
neutron基础九(qemu nat网络)
2016-02-06 17:21 1621接上基础八,kvm透传nested忽略 1.在主机ce ... -
neutron基础八(qemu 桥接网络)
2016-02-06 13:13 1542qemu的桥接和nat的qemu启动命令是一样的,但是后续的脚 ... -
neutron基础七(qemu tap)
2016-02-02 17:02 1030使用qemu 建立个虚拟机 然后用tap设备, 根据基础六,t ... -
neutron基础六(bridge fdb)
2016-01-28 18:30 2263转发表 在三台机器上建立三个namespace 192.16 ... -
南北流量
2016-01-23 23:26 1822一、三层网络架构: 接入层:负责服务器的接入和隔离 汇聚层:汇 ...
相关推荐
2. `dkms.conf`: DKMS(Dynamic Kernel Module Support)是Linux下的一个工具,用于管理内核模块,使得模块能随内核更新自动重建。 3. `repoTest2.htm` 和 `repoTest1.js` 似乎不是直接与驱动程序相关的,可能是遗留...
4. **跨平台支持**:esy 支持多种操作系统,包括 Linux、macOS 和 Windows,使得 OCaml 项目可以轻松地在不同平台上构建和运行。 在 `esy-mirage-kernel-master` 压缩包中,我们可以找到项目的基本结构和源代码。...
1. **开发工具**:RHEL6支持多种编程语言,如C、C++、Java和Python等,提供了GCC(GNU Compiler Collection)作为主要的编译工具,支持跨平台的开发。此外,GDB(GNU Debugger)用于调试程序,Valgrind则用于检测...
此外,项目可能还使用了其他技术,如Node.js作为后端服务器,处理WebSockets连接,以及可能的虚拟化技术,如KVM(Kernel-based Virtual Machine)或者QEMU,来模拟硬件环境,使Linux内核能够在WebAssembly上运行。...
在Linux环境下,你需要先安装Node.js (12.13.0+版本) 和 hpm 命令行工具。然后,你可以根据项目需求在HPM网站选择并下载所需组件,使用`hpm install`命令进行安装。 3. **用包管理器命令行获取**:如果你已经拥有...
其中,内核层包含了Linux Kernel和LiteOS等操作系统核心组件;应用层则是由系统应用、桌面应用、电话应用等构成;而应用框架层则包含了多种子系统,如图形图像子系统、安全子系统等。 综上所述,HarmonyOS元服务的...
该编译器提供了丰富的编译资源,包括JavaScript、C++、AppJS等。这些资源可以帮助开发者快速开发和部署应用程序。 MonkeyUI Designer MonkeyUI Designer是藏经阁的一站式服务型开发生态的核心设计工具。该设计工具...
为了方便开发,"BPI-files"可能还包括交叉编译工具链,允许你在其他计算机上编译香蕉PI的程序,以及调试工具如GDB(GNU调试器)。 6. **软件包**: 除了基本系统,"BPI-files"还可能包含预装的软件包,如Python、...
All available kernel: 0. linux-3.4 Choice: 0 All available boards: 5. perf3_v1_0 wenyuanbo@cm-System-Product-Name:/home/wwt/r58_bma250/lichee$ ./build.sh wenyuanbo@cm-System-Product-Name:/home/wwt/...
1. **KVM (Kernel-based Virtual Machine)**:这是一个全虚拟化的解决方案,允许在一个单一的物理服务器上运行多个独立的操作系统实例。测试人员可以利用KVM创建和管理不同的测试环境,模拟真实的用户场景,对软件...
如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。 bootcfg /list 列出引导列表中已有的条目。 bootcfg /disableredirect 在启动引导程序中禁用重定向。 ...