jslinuxネットワーク機能付きカーネル
詳細
jslinux-networkを再コンパイルしたい
のカーネルは、実はfabrice bellardのカーネルよりe 1000のNICが多いのです
カーネルとユーザ空間を通信するnetlink socketを使用可能にする
テストは
ip link利用可能
キーは
make ARCH=i386 drivers/net/e1000/
最後の1つ/少なくてはいけません
テスト環境32ビットのcentos 7:
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、eth 0、sit0@NONE
このカーネルは大きいので、後でコンパイル方法を入れます.
カーネルの問題と判断してnetlink socketエラーを起こす
探しました.configカーネルオプション、network driver関連はありません
実はネットカードが多すぎて関係がありません.configの中
pwd
/opt/jslinux/kernel/linux-2.6.20
NICディレクトリにbuilt-inを生成する.o
再コンパイルカーネル
参考『LINUX+2.6カーネル標準チュートリアル』
カーネルを生成するには
1.カーネルのコンパイルはarch/i 386/kernel/vmLinuxによる.ldsはすべてのbuildinをカーネルにコンパイルし、圧縮されていないsrc/vmLinuxを生成し、オフセットアドレス0 xc 00000000に接続する(ここではe 1000のNICもコンパイル).objcopy生成/arch/i 386/boot/compressd/vmlinux.bin gzipはvmlinuxを生成する.bin.gz)ldは接続スクリプトvmlinuxに従う.scrはpiggyを生成する.o 3.misc.o解凍cコードhead.o圧縮設定パラメータとスタックとpiggyをアセンブリする.o ldはarch/i 386/boot/compressed/vmLinux 4を生成する.objcopyはarch/i 386/boot/vmLinuxを生成する.bin 5.bootsect(512バイト)、setup(512バイト)、vmLinuxをbuildで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を削除します.TUNis not setがCONFIGになるTUN=y
この文はつけなくてもいいです.
この駆動はubuntuのカーネルが必要とする駆動であるべきだ.
deobfuscatedには入れなくてもいいです
vim .config
CONFIGの確認TUN=yはまだいるか
ある場合は実行
jslinux起動時に
成功した
linux-2.6.20/arch/i 386/boot/bzImageの生成
cd ../tmp/linuxstart-20120111/
jslinuxで使用可能な
vim Makefile
先ほどのkernelパスを指定します
修正KERNEL_PATH=../../linux-2.6.20
make kernelはvmlinux 26を生成する.bin
cp vmlinux2.6.bin/var/www/jslinux-network/
vim jslinux-network/jslinux.js
Websocketのサービス側プロセスを起動しtapのチャネルを確立する
jslinux-network/websocketstuntap/launch.sh
jslinux-networkに入ります
tap 0の作成
Webページのconnect or reconnect websocketsの起動
ping 10.0.2.2
以上がカーネルコンパイル置換に成功しました
ハードディスク(HDD)ファイルを置き換えます.
############################################################################
lo,eth 0,sit 0のカーネルを持ちたい場合は、
つかむ
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テストに進む
内 config.4.0.3.jpeg (95.8 KB) ダウンロード回数:1
jslinux-networkを再コンパイルしたい
のカーネルは、実はfabrice bellardのカーネルよりe 1000のNICが多いのです
カーネルとユーザ空間を通信するnetlink socketを使用可能にする
テストは
ip link利用可能
キーは
make ARCH=i386 drivers/net/e1000/
最後の1つ/少なくてはいけません
テスト環境32ビットのcentos 7:
[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
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、eth 0、sit0@NONE
このカーネルは大きいので、後でコンパイル方法を入れます.
カーネルの問題と判断してnetlink socketエラーを起こす
探しました.configカーネルオプション、network driver関連はありません
実はネットカードが多すぎて関係がありません.configの中
pwd
/opt/jslinux/kernel/linux-2.6.20
make ARCH=i386 drivers/net/e1000/
NICディレクトリにbuilt-inを生成する.o
再コンパイルカーネル
time make ARCH=i386 -j16
参考『LINUX+2.6カーネル標準チュートリアル』
カーネルを生成するには
1.カーネルのコンパイルはarch/i 386/kernel/vmLinuxによる.ldsはすべてのbuildinをカーネルにコンパイルし、圧縮されていないsrc/vmLinuxを生成し、オフセットアドレス0 xc 00000000に接続する(ここではe 1000のNICもコンパイル).objcopy生成/arch/i 386/boot/compressd/vmlinux.bin gzipはvmlinuxを生成する.bin.gz)ldは接続スクリプトvmlinuxに従う.scrはpiggyを生成する.o 3.misc.o解凍cコードhead.o圧縮設定パラメータとスタックとpiggyをアセンブリする.o ldはarch/i 386/boot/compressed/vmLinux 4を生成する.objcopyはarch/i 386/boot/vmLinuxを生成する.bin 5.bootsect(512バイト)、setup(512バイト)、vmLinuxをbuildで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を削除します.TUNis 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
成功した
linux-2.6.20/arch/i 386/boot/bzImageの生成
cd ../tmp/linuxstart-20120111/
jslinuxで使用可能な
vim Makefile
先ほどのkernelパスを指定します
修正KERNEL_PATH=../../linux-2.6.20
make kernelはvmlinux 26を生成する.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
tap 0の作成
Webページのconnect or reconnect websocketsの起動
ping 10.0.2.2
以上がカーネルコンパイル置換に成功しました
ハードディスク(HDD)ファイルを置き換えます.
############################################################################
lo,eth 0,sit 0のカーネルを持ちたい場合は、
つかむ
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