default

转载自 http://www.tsingfun.com/html/2015/dev_0804/hello_os_word_my_first_os.html

首先阐述下程序运行的基本原理:计算机CPU只执行二进制指令,我们使用的开发语言开发出的程序最终由相应的编译器编译为二进制指令,二进制中包含程序相关的数据、代码指令(用我们最常见的公式描述就是:程序=数据+算法)。CPU读取相应的指令、数据后开始执行,执行后的结果输出到外部设备,如屏幕、磁盘等。整个过程中,CPU发挥最为核心的作用,与其他设备一起完成程序的执行、输出。

OS本身也是程序,它的运行也是如此,开机后从指定地址处(0x7c00),开始执行指令。先看看本节例子最终运行效果:

编译运行环境:
nasm:Inter x86汇编编译工具,用户将我们的汇编代码编译为二进制。
(下载地址 http://www.tsingfun.com/html/2015/soft_0804/nasm_asm.html)
Bochs:运行os的虚拟机工具,模拟加载我们生成的软盘映像,并运行os。
(下载地址 http://www.tsingfun.com/html/2015/soft_0804/Bochs_Lightweight_VirtualMachine.html)

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
;--------------------------------------------------------------
; 平凡OS(Pf OS) 一个最简单的OS
; Author : tsingfun.com
;--------------------------------------------------------------

; FAT12引导扇区
ORG 0x7c00 ;引导开始地址,固定的,主板BIOS决定,本条指令只是申明,不占字节(有兴趣的可以单独编译这条指令,然后查看二进制,文件0k)
JMP _START ;CPU执行的第一条指令,就是跳转到_START地址处(这里是标签,实际编译后_START是有一个相对地址的)
TIMES 3-($-$$) NOP ;NOP:一个机器周期。$:当前地址,$$:首地址。因为以上信息必须占3个字节,所以不足的部分用nop指令填充,
;具体nop占用几个字节请读者使用二进制查看工具自行验证。

DB "PFOSBEST" ; 标识(公司、品牌等)8个字节
DW 512 ; 每扇区字节数
DB 1 ; 每簇扇区数
DW 1 ; Boot内容占几个扇区
DB 2 ; 共有多少FAT表
DW 224 ; 根目录文件数最大值
DW 2880 ; 扇区总数
DB 0xf0 ; 介质描述符
DW 9 ; 每FAT扇区数
DW 18 ; 每磁道扇区数
DW 2 ; 磁头数(面数)
DD 0 ; 隐藏扇区数
DD 2880 ; 若上面“扇区总数”为0,则这个值记录扇区总数
DB 0,0,0x29 ; 中断13的驱动器号;未使用;拓展引导标记
DD 0xffffffff ; 卷序列号
DB "PFOS v1.0.0" ; 卷标(11个字节)
DB "FAT12 " ; 文件系统类型(8个字节)
;---------------------------------------------------------------------
; 448个字节,引导代码、数据及其他填充字符
TIMES 18 DB 0

_START:
MOV AX, 0 ;AX:累加寄存器,CPU内置的16位寄存器,最为常用,可以用于存储运行的中间结果,此处清零
MOV SI, MSG ;SI:(source index)源变址寄存器,常用来存储待操作的数据的首地址,此处指向数据区的字符串
_LOOP: ;循环指令开始
MOV AL, [SI] ;[]取地址中的内容,AL是AX的低8位,所以取8bit,即1字节,字符串的ASCII。
ADD SI, 1 ;字符串往后移动一个字节
CMP AL, 0 ;判断当前取出的ASCII是否是0,
JE _END ;JE:Equal则Jmp,等于零表示字符串显示完了,结束。
MOV AH, 0x0e ;调用系统10h中断显示ASCII字母,AH,BX指定显示模式及参数(详见:http://www.tsingfun.com/html/2015/dev_0804/570.html)
MOV BX, 15
INT 0x10
JMP _LOOP ;继续下一个字符的显示
_END:
JMP $ ;跳到当前的地址,当然就陷入无限循环啦,此处为了让程序停在此处。

;数据区,就是待输出的字符串信息
MSG DB 0x0a, "----------------------------------------------", 0x0d, 0x0a, \
"| Hello, OS World! |", 0x0d, 0x0a, \
"----------------------------------------------", 0x0d, 0x0a, 0x0

TIMES 510-($-$$) DB 0
DW 0xaa55 ; 结束标志
;----------------------------------------------------------------------

; FAT数据区
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
TIMES 4600 DB 0
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
TIMES 1469432 DB 0

其中,主要的步骤代码中都有详尽的注释,如有任何问题,请移步至论坛《深入OS》板块发帖讨论。

编译执行过程:
打开dos窗口,进入源码所在目录,执行命令nasm boot.asm -o pfos.img:

同目录下生成一个”pfos.img”软盘映像文件,接下来只需要把它装载到虚拟机运行即可,当然有条件的话可以实际写入老式的软盘用真机运行,结果是一样的。

同目录下新建一个 pfos.bxrc Bochs配置文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#how much memory the emulated machine will have
megs:4

#filename of ROM images
romimage:file=$BXSHARE\BIOS-bochs-latest,address=Oxf0000
vgaromimage: file=$BXSHARE\VGABIOS-elpin-2.40

#what disk images will be used
floppya:1_44="pfos.IMG",status=inserted

#Choose the boot disk
boot:a

#where do we send log messages?
#log:bochsout.txt

双击“pfos.bxrc”启动Bochs运行即可启动我们自己写的os了。
源码下载:http://www.tsingfun.com/uploadfile/2016/0628/hello os world.zip

接下来解释一下运行原理:

首先,软盘大小是1.44M(这个是固定的),所以我们在程序中指定它为1,474,560 字节,除了程序本身的指令、数据外,不足的部分全部补零。

TIMES 1469432 DB 0 就是此处开始写1469432个字节的0。

软盘采用的是FAT12文件格式,我们现在的常见的文件格式有FAT32、NTFS、EXT3等,FAT12是早期的一种文件格式。文件格式是文件格式化存储的一种算法,比如我们要将一个文件存储到软盘(磁盘)上,有些人可能会想我直接从地址0开始存储,直到结束,那么文件名、文件大小、创建时间等其他信息怎么存?紧接着后面继续存储么?那该给各部分分配多少字节空间?先不说后续查找文件的效率,这种存储方法无章可循会完全失控,是不行的方案。

文件格式化算法就解决了此类问题,而且兼顾文件的高效率查找。基本原理就是给软盘(磁盘)分区:FAT区、目录区、数据区,存储文件时先存储文件基本信息到目录区,然后文件的数据按照一定格式存储到数据区,目录区中有数据区中文件数据的地址。

这里只简单介绍一下FAT12格式,后续篇章会深入解析每个字节代表的含义。

我们来看看我们生成的映像里面到底有什么东西?这时我们需要用到二进制查看工具WinHex,点此下载 http://www.tsingfun.com/html/2015/soft_0804/WinHex.html

以上看到的是二进制静态代码,实际运行中各指令的地址都是动态变化的,下来一起借助Bochs的debug功能来一探究竟。
我们双击“pfos.bxrc”默认是以运行模式启动Bochs,实际上我们应该启动bochsdbg.exe,因此写个简单的批处理脚本启动它吧,如下:

1
2
3
4
5
6
7
8
9
@echo off

SET BXSHARE=C:\Program Files (x86)\Bochs-2.5

if %PROCESSOR_ARCHITECTURE% == x86 (
SET BXSHARE=C:\Program Files\Bochs-2.4.6
)

"%BXSHARE%"\bochsdbg -q -f "pfos.bxrc"

双击脚本,启动debug模式,如下:

Bochs常用的debug命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
b 0x...   断点命令,指定地址处调试
info break 显示当前断点信息
c 继续执行
s 步入执行
n 单步执行
info cpu 查看cpu寄存器(可分别执行 r/fp/sreg/creg)
print-stack 打印堆栈
xp /长度 地址 显示地址处内容(xp:物理地址,x:线性地址)
u 起始地址 结束地址 反汇编一段代码
trace on 反汇编执行的每条指令
trace-reg on 每执行一条指令都打印一下cpu信息
exit 退出调试

大家有兴趣的话可以调试下,然后看看每步骤寄存器值的变化。

总结:本篇主要是让大家对操作系统有个整体概念上的认识,揭开os神秘的面纱,从底层调试到运行,每个过程都真真切切展现在大家面前。至于汇编指令、地址寻址暂时不懂的话,也不要紧,后续章节会继续作详细阐述,力求使大家在不断的运行、调试过程中逐渐熟悉并掌握汇编及计算机底层技术。

不知原文出自哪里,如果您是作者,请私信我补充来源链接。

前言

记录一些排查常见日志的命令,方法wiki,欢迎补充(Markdown 语法)。

常用命令

  1. 查找关键词并统计行数

    1
    cat 2015_7_25_test_access.log | grep "sqlmap" | wc -l
  2. 删除含有匹配字符的行

    1
    sed -i '/Indy Library/d' 2015_7_25_test_access.log
  3. 查找所有日志中的关键词

    1
    find ./ -name "*.log" |xargs grep "sqlmap" |wc -l
  4. 获取特殊行(如id)并且排序统计

    1
    cat cszl988.log | awk '{print $1}' | awk -F : '{print $2}' | sort -u | wc -l
  5. 正则匹配内容(如提取ip)

    1
    grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}"
  6. 去重并统计数量

    1
    tail 3.log | awk '{print $7}' | sort | uniq -c
  7. 批量提取(全流量中)数据包并且过滤数据

    1
    2
    3
    4
    5
    #!/bin/bash 
    for file in ` ls $1 `
    do
    parse_pcap -vvb $file | grep -v "Host:" | grep -v "Cookie:" | grep -v "User-Agent:" | grep -v "Accept:" | grep -v "Accept:" | grep -v "Accept-Language:" | grep -v "Accept-Encoding:" | grep -v "Connection:" | grep -v "Content-Type:" | grep -v "Content-Length" | grep -v "Server"
    done
  8. url 解码

    1
    cat luban.log | grep sqlmap | awk '{print $7}' | xargs python -c 'import sys, urllib; print urllib.unquote(sys.argv[1])'
  9. 欢迎补充….

示范:xxxx站注入日志排查

  • 查看所有sqlmap注入记录条数

    1
    2
    [root@pentest temp]# cat luban.log | grep sqlmap | wc -l
    1241
  • 预览几条url

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cat luban.log | grep sqlmap | awk '{print $7}' | more
    /news.php?id=771%28.%28%22%29.%27%29%29%27&fid=168
    /news.php?id=771%27IddP%3C%27%22%3EvCBw&fid=168
    /news.php?id=771%29%20AND%201148%3D8887%20AND%20%288975%3D8975&fid=168
    /news.php?id=771%29%20AND%208790%3D8790%20AND%20%287928%3D7928&fid=168
    /news.php?id=771%20AND%204294%3D9647&fid=168
    /news.php?id=771%20AND%208790%3D8790&fid=168
    /news.php?id=771%27%29%20AND%205983%3D7073%20AND%20%28%27UwRr%27%3D%27UwRr&fid=168
    /news.php?id=771%27%29%20AND%208790%3D8790%20AND%20%28%27hwaT%27%3D%27hwaT&fid=168
    /news.php?id=771%27%20AND%206578%3D7565%20AND%20%27EoTZ%27%3D%27EoTZ&fid=168
    /news.php?id=771%27%20AND%208790%3D8790%20AND%20%27lBdL%27%3D%27lBdL&fid=168
    /news.php?id=771%25%27%20AND%205177%3D1107%20AND%20%27%25%27%3D%27&fid=168
    /news.php?id=771%25%27%20AND%208790%3D8790%20AND%20%27%25%27%3D%27&fid=168
  • 方便查看 urldecode

    1
    2
    3
    4
    5
    6
    7
    cat luban.log | grep sqlmap | awk '{print $7}' | xargs python -c 'import sys, urllib; print urllib.unquote(sys.argv[1])'
    /news.php?id=771&fid=168
    /news.php?id=771&fid=168 AND ASCII(SUBSTRING((SELECT DISTINCT(COALESCE(CAST(schemaname AS CHARACTER(10000)),(CHR(32)))) FROM pg_tables OFFSET 1 LIMIT 1)::text FROM 3 FOR 1))>
    97
    /news.php?id=771&fid=168 UNION ALL SELECT NULL,(CHR(113)||CHR(122)||CHR(106)||CHR(120)||CHR(113))||(CHR(103)||CHR(75)||CHR(78)||CHR(87)||CHR(76)||CHR(74)||CHR(110)||CHR(1
    15)||CHR(100)||CHR(85))||(CHR(113)||CHR(122)||CHR(120)||CHR(113)||CHR(113)),NULL,NULL,NULL,NULL,NULL,NULL,NULL UNION ALL SELECT NULL,(CHR(113)||CHR(122)||CHR(106)||CHR(120)||CHR(113))||(CHR(113)||CHR(71)||C
    HR(74)||CHR(82)||CHR(101)||CHR(120)||CHR(69)||CHR(112)||CHR(117)||CHR(79))||(CHR(113)||CHR(122)||CHR(120)||CHR(113)||CHR(113)),NULL,NULL,NULL,NULL,NULL,NULL,NULL--

快捷键 操作
Ctrl + a 移到命令行首
Ctrl + e 移到命令行尾
Ctrl + f 按字符前移(右向)
Ctrl + b 按字符后移(左向)
Alt + f 按单词前移(右向)
Alt + b 按单词后移(左向)
Ctrl + xx 在命令行首和光标之间移动
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Ctrl + w 从光标处删除至字首
Alt + d 从光标处删除至字尾
Ctrl + d 删除光标处的字符
Ctrl + h 删除光标前的字符
Ctrl + y 粘贴至光标后
Alt + c 从光标处更改为首字母大写的单词
Alt + u 从光标处更改为全部大写的单词
Alt + l 从光标处更改为全部小写的单词
Ctrl + t 交换光标处和之前的字符
Alt + t 交换光标处和之前的单词
Alt + Backspace 与 Ctrl + w 类似 重新执行命令
Ctrl + r 逆向搜索命令历史
Ctrl + g 从历史搜索模式退出
Ctrl + p 历史中的上一条命令
Ctrl + n 历史中的下一条命令
Alt + . 使用上一条命令的最后一个参数 控制命令
Ctrl + l 清屏
Ctrl + o 执行当前命令,并选择上一条命令
Ctrl + s 阻止屏幕输出
Ctrl + q 允许屏幕输出
Ctrl + c 终止命令
Ctrl + z 挂起命令 Bang (!)命令
!! 执行上一条命令
!blah 执行最近的以 blah 开头的命令,如 !ls
!blah:p 仅打印输出,而不执行
!$ 上一条命令的最后一个参数,与 Alt + . 相同
!$:p 打印输出 !$ 的内容
!* 上一条命令的所有参数
!*:p 打印输出 !* 的内容
^blah 删除上一条命令中的 blah
^blah^foo 将上一条命令中的 blah 替换为 foo
^blah^foo^ 将上一条命令中所有的 blah 都替换为 foo

Debian是我日常使用的桌面系统,这里记录了我在使用Debian和其他Linux时所有的问题和解决办法,以及一些其他的心得体会。
向Debian致敬!


找回桌面系统关机按钮

在/etc/polkit-1/localauthority/50-local.d/新建文件50-admin.pkla,写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
[disable suspend]   
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultAny=no
ResultInactive=no
ResultActive=no
[disable hibernate]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no


无线不能使用的解决方法

安装rfkill工具

install rfkill```
1
2
3
4

然后运行:

```rfkill list all

可以查看到网卡设备的状态如下:

1
2
3
4
5
6
0: dell-wlan: Wireless LAN   
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no

根据软件或者硬件的状态解锁。


wireshark设置普通用户权限

1
2
3
4
5
6
sudo groupadd wireshark 
sudo usermod -a -G wireshark YOUR_USER_NAME
sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod 750 /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
sudo getcap /usr/bin/dumpcap

Adobe flash player的正确安装姿势

首先下载flash player,保存为flash.tar.gz
then:

1
2
3
tar -zxvf flash.tar.gz
mv usr/* /usr/
mv libflashplayer.so /usr/lib/mozilla/plugins/

重启浏览器即可。


修复Debian8 pptp不能连接的问题

报错内容:(/var/log/syslog)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sep 15 14:58:21 debian NetworkManager[13550]: ** Message: pppd started with pid 14188
Sep 15 14:58:21 debian pppd[14188]: Plugin /usr/lib/pppd/2.4.6/nm-pptp-pppd-plugin.so loaded.
Sep 15 14:58:21 debian NetworkManager[13550]: Plugin /usr/lib/pppd/2.4.6/nm-pptp-pppd-plugin.so loaded.
Sep 15 14:58:21 debian NetworkManager[13550]: ** Message: nm-pptp-ppp-plugin: (plugin_init): initializing
Sep 15 14:58:21 debian pppd[14188]: pppd 2.4.6 started by root, uid 0
Sep 15 14:58:21 debian NetworkManager[13550]: ** Message: nm-pptp-ppp-plugin: (nm_phasechange): status 3 / phase 'serial connection'
Sep 15 14:58:21 debian pppd[14188]: Using interface ppp0
Sep 15 14:58:21 debian pppd[14188]: Connect: ppp0 <--> /dev/pts/0
Sep 15 14:58:21 debian NetworkManager[13550]: Using interface ppp0
Sep 15 14:58:21 debian NetworkManager[13550]: Connect: ppp0 <--> /dev/pts/0
Sep 15 14:58:21 debian NetworkManager[13550]: ** Message: nm-pptp-ppp-plugin: (nm_phasechange): status 5 / phase 'establish'
Sep 15 14:58:21 debian NetworkManager[13550]: <info> (ppp0): new Generic device (driver: 'unknown' ifindex: 57)
Sep 15 14:58:21 debian NetworkManager[13550]: <info> (ppp0): exported as /org/freedesktop/NetworkManager/Devices/15
Sep 15 14:58:21 debian NetworkManager[13550]: <info> devices added (path: /sys/devices/virtual/net/ppp0, iface: ppp0)
Sep 15 14:58:21 debian NetworkManager[13550]: <info> device added (path: /sys/devices/virtual/net/ppp0, iface: ppp0): no ifupdown configuration found.
Sep 15 14:58:52 debian pppd[14188]: LCP: timeout sending Config-Requests
Sep 15 14:58:52 debian pppd[14188]: Connection terminated.
Sep 15 14:58:52 debian avahi-daemon[588]: Withdrawing workstation service for ppp0.
Sep 15 14:58:52 debian NetworkManager[13550]: ** Message: nm-pptp-ppp-plugin: (nm_phasechange): status 11 / phase 'disconnect'
Sep 15 14:58:52 debian NetworkManager[13550]: <info> devices removed (path: /sys/devices/virtual/net/ppp0, iface: ppp0)
Sep 15 14:58:52 debian pptp[14193]: nm-pptp-service-14185 warn[decaps_hdlc:pptp_gre.c:216]: pppd may have shutdown, see pppd log
Sep 15 14:58:52 debian pppd[14188]: Modem hangup
Sep 15 14:58:52 debian pppd[14188]: Exit.
Sep 15 14:58:52 debian NetworkManager[13550]: ** Message: nm-pptp-ppp-plugin: (nm_phasechange): status 1 / phase 'dead'
Sep 15 14:58:52 debian NetworkManager[13550]: ** Message: nm-pptp-ppp-plugin: (nm_exit_notify): cleaning up
Sep 15 14:58:52 debian NetworkManager[13550]: ** (nm-pptp-service:14185): WARNING **: pppd exited with error code 16

依次输入如下命令:

1
2
3
modprobe nf_nat_pptp
modprobe nf_conntrack_pptp
modprobe nf_conntrack_proto_gre

下次启动还会失效,所以要编辑/etc/modules-load.d/modules.conf文件,添加如下三行:

1
2
3
nf_nat_pptp
nf_conntrack_pptp
nf_conntrack_proto_gre


减少开机等待时间

  • 减少grub等待时间:
    修改/etc/default/grub,将
    1
    GRUB_TIMEOUT=5

改为 (grub等待超时改成1秒):

1
GRUB_TIMEOUT=1

然后运行

1
# update-grup

  • 减少开关机超时
    修改/etc/systemd/system.conf,修改开关机超时时间为5s:
    1
    2
    DefaultTimeoutStartSec=5s
    DefaultTimeoutStopSec=5s

重启


使用随机MAC地址

出于隐私需求,不想暴露真实mac地址,把下面这个脚本的内容加入/etc/init.d,就可以在每次开机的时候为网卡随机设置一个mac地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
#Chorder
#2016/12/08

mhash=`date +%s|md5sum`

ifconfig eth0 down
ifconfig eth0 hw ether `echo ${mhash:$((RANDOM % 13)):2}:\
${mhash:$((RANDOM % 13)):2}:${mhash:$((RANDOM % 13)):2}:\
${mhash:$((RANDOM % 15)):2}:${mhash:$((RANDOM % 15)):2}:\
${mhash:$((RANDOM % 15)):2} `
ifconfig eth0 up

ifconfig wlan0 down
ifconfig wlan0 hw ether `echo ${mhash:$((RANDOM % 13)):2}:\
${mhash:$((RANDOM % 13)):2}:${mhash:$((RANDOM % 13)):2}:\
${mhash:$((RANDOM % 15)):2}:${mhash:$((RANDOM % 15)):2}:\
${mhash:$((RANDOM % 15)):2} `
ifconfig wlan0 up


gnome删除多余的菜单文件夹

运行

1
gsettings set org.gnome.desktop.app-folders folder-children ['']


CentOS删除旧内核

1
for k in `rpm -qa | grep kernel |grep -v \`uname -r\``;do yum remove $k;done

鼠标滚轮方向调整

修改 ~/.Xmodmap 文件

如果想要鼠标逆序滚动,就将其中的内容改为

pointer = 1 2 3 4 5 6 7 8 9 10 11 12

否则,就将内容改为:

pointer = 1 2 3 5 4 6 7 8 9 10 11 12

4和5代表的是鼠标滚轮方向的映射。


Debian9 GNOME 允许root登录

修改三个文件:

  1. /etc/gdm3/daemon.conf

在Security节,加入

1
AllowRoot=true

  1. /etc/pam.d/gdm-password

注释掉下面这一行

1
auth required pam_succeed_if.so_user != root quiet_success

  1. /etc/pam.d/gdm-autollgoin

注释掉下面这一行

1
auth required pam_succeed_if.so_user != root quiet_success

重启。

以Debian系发行版Kali为例

首先,安装fcitx输入法框架和fcitx-pinyin作为默认的拼音输入法:

1
apt-get install fcitx fcitx-pinyin

安装好之后,系统应该会多出这两个图标(在gnome桌面下)

之后,将系统的输入源切换到fcitx,运行

1
im-config

或是在菜单中,点击这个红圈圈住的图标:

一路下一步,在最后一步选择fcitx

切换好之后,在fcitx中配置pinyin输入法:

选择pinyin即可,不需要选择google拼音(感觉并没有fcitx-pinyin好用)
然后重启系统,或是重启X11系统。

然后就可以用啦,默认是Ctrl+空格切换输入法:

如果不想用Ctrl+空格切换输入法,可以改为使用shift切换输入法,同样是在fcitx中配置:

SPFlashTool版本 MTK处理器型号
SP_Flash_Tool-v3.1224.0.100 MT6516,MT6573,MT6573,MT6575,MT6575,MT6577,
SP_Flash_Tool-v3.1332.0.187 MT6516,MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6582,MT8135,
SP_Flash_Tool-v3.1344.0.212 MT6516,MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6582,MT8135, MT6592,MT6571,
SP_Flash_Tool-v5.1352.01 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT6592,
SP-Flash-Tool-v5.1436.00 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,
SP-Flash-Tool-v5.1528.00 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6735M,MT6753,MT8163,MT8590,MT6580,MT6570,
SP-Flash-Tool-v5.1532.00 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6735M,MT6753,MT8163,MT8590,MT6580,MT6570,MT6755,
SP_Flash_Tool_5.1343 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT6592,
SP_Flash_Tool_5.1504 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6735M,MT6753,
SP_Flash_Tool_5.1520 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6735M,MT6753,MT8163,MT8590,MT6580,MT6570,
SP_Flash_Tool_5.1524.00 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6735M,MT6753,MT8163,MT8590,MT6580,MT6570,
SP_Flash_Tool_v5.1452 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6735M,MT6753,
SP_Flash_Tool_v5.1512 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6735M,MT6753,MT8163,MT8590,MT6580,MT6570,
SP_Flash_Tool_v5.1516 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6735M,MT6753,MT8163,MT8590,MT6580,MT6570,
SP_Flash_Tool_v5.1548 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737,MT6735M,MT6753,MT8163,MT8590,MT6580,MT6570,MT6755,MT6797,
SP_Flash_Tool_v5.1552 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT7623,MT6580,MT6570,MT6755,MT6797,
SP_Flash_Tool_v5.1604 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,
SP_Flash_Tool_v5.1612 MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,
SP_Flash_Tool_v5.1616_Win MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,ELBRUS,MT6798,MT0507,
SP_Flash_Tool_v5.1620_Win MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,ELBRUS,MT6798,MT0507,MT8160,MT0633,
SP_Flash_Tool_v5.1624_Win MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,ELBRUS,MT6798,MT0507,MT8167,MT0633,
SP_Flash_Tool_v5.1628_Win MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,ELBRUS,MT6799,MT0507,MT8167,MT0633,
SP_Flash_Tool_v5.1632_Win MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT8521,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,ELBRUS,MT6799,MT0507,MT8167,MT6570,MT0690,
SP_Flash_Tool_v5.1636_Win MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT8521,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,ELBRUS,MT6799,MT6798,MT8167,MT6570,MT0690,
SP_Flash_Tool_v5.1640_Win MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT8521,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,MT6757D,ELBRUS,MT6799,MT6798,MT8167,MT6570,MT0690,
SP_Flash_Tool_v5.1644_Win MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT8521,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,MT6757D,ELBRUS,MT6799,MT6798,MT8167,MT6570,MT0690,
SP_Flash_Tool_v5.1648_Win MT6573,MT6573,MT6575,MT6575,MT6577,MT6589,MT6572,MT6571,MT6582,MT8135,MT8127,MT6592,MT6595,MT6752,MT2601,MT6795,MT8173,MT6735,MT6737T,MT6735M,MT6737M,MT6753,MT8163,MT8590,MT8521,MT7623,MT6580,MT6570,MT6755,MT6750,MT6797,MT6757,MT6757D,ELBRUS,MT6799,MT6759,MT8167,MT8516,MT6570,MT6763,

下载链接:

http://spflashtools.com/windows/sp-flash-tool-v5-1343
http://spflashtools.com/windows/sp-flash-tool-v5-1352
http://spflashtools.com/windows/sp-flash-tool-v5-1436
http://spflashtools.com/windows/sp-flash-tool-v5-1452
http://spflashtools.com/windows/sp-flash-tool-v5-1504
http://spflashtools.com/windows/sp-flash-tool-v5-1512
http://spflashtools.com/windows/sp-flash-tool-v5-1516
http://spflashtools.com/windows/sp-flash-tool-v5-1520
http://spflashtools.com/windows/sp-flash-tool-v5-1524
http://spflashtools.com/windows/sp-flash-tool-v5-1528
http://spflashtools.com/windows/sp-flash-tool-v5-1532
http://spflashtools.com/windows/sp-flash-tool-v5-1548
http://spflashtools.com/windows/sp-flash-tool-v5-1552
http://spflashtools.com/windows/sp-flash-tool-v5-1604
http://spflashtools.com/windows/sp-flash-tool-v5-1612
http://spflashtools.com/windows/sp-flash-tool-v5-1616
http://spflashtools.com/windows/sp-flash-tool-v5-1620
http://spflashtools.com/windows/sp-flash-tool-v5-1624
http://spflashtools.com/windows/sp-flash-tool-v5-1628
http://spflashtools.com/windows/sp-flash-tool-v5-1632
http://spflashtools.com/windows/sp-flash-tool-v5-1636
http://spflashtools.com/windows/sp-flash-tool-v5-1640
http://spflashtools.com/windows/sp-flash-tool-v5-1644
http://spflashtools.com/windows/sp-flash-tool-v5-1648

最近手上多了一个树莓派2代,于是折腾就这么开始了。
因为总是得要个显示屏或者路由器或者插根网线才能玩,有点麻烦,所以有了此文。

设备清单:

树莓派2代
EDUP EP-N8508GS无线网卡(USB)
普通网线一根

最终实现的效果是树莓派的有线网卡用来作为wan口,无线网卡建立热点
笔记本可以通过连接wifi连接上树莓派进行操作

下面说说过程:
首先我参考了

http://elinux.org/RPI-Wireless-Hotspot

这篇文章中的方法,但是并没有成功。后来看到文章的末尾才知道,是驱动对不上号,文章末尾明确标明默认的hostapd程序不支持rtl8188系列网卡,而我的usb网卡就是rtl8188cus系列。
所以在开始之前,建议先用lsusb命令看一下网卡的型号再考虑进行下一步。

如果你的网卡不是rtl8188系列那你可以参考上面文章中的方法来配置,如果是那么可以参考我的方法。

根据那篇文章最后给出的连接,找到了这个驱动:

https://github.com/lostincynicism/hostapd-rtl8188

然而当编译好驱动重新运行之后仍然是不行,还是不支持。

最后还是参考了这篇文章:

http://wangye.org/blog/archives/845/?_t_t_t=0.7382462719884554

原因可能就是因为我这个系列网卡比较特殊。但是最后在这个文章中发现了编译好的第三方驱动,虽然有点不满意,但还是凑合着用了。
http://www.daveconroy.com/turn-your-raspberry-pi-into-a-wifi-hotspot-with-edimax-nano-usb-ew-7811un-rtl8188cus-chipset/
具体步骤:
先切换为root用户,可以省去很多不必要的麻烦。
所以以下操作都是以root用户:
1.安装hostapd和udhcpd服务并且更换hostapd程序

apt-get install udhcpd hostapd
wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
unzip hostapd.zip 
mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
mv hostapd /usr/sbin/hostapd.edimax 
ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd 
chown root.root /usr/sbin/hostapd 
chmod 755 /usr/sbin/hostapd

2.编辑/etc/udhcpd.conf文件,配置dhcp服务:
确保文件当中有下列内容

start 192.168.1.2
end 192.168.1.254
interface wlan0
remaining yes
opt dns 223.5.5.5 223.6.6.6
opt subnet 255.255.255.0
opt router 192.168.1.1
opt lease 864000 #

相信一般都能看懂,其中的interface需要根据情况来写。
3.编辑/etc/default/udhcpd 文件,将下面这行注释掉。

DHCPD_ENABLED="no"

4.将无线网卡wlan0的ip设为192.168.1.1

ifconfig wlan0 192.168.42.1

5.修改/etc/network/interfaces文件,添加下面的内容

iface wlan0 inet static
  address 192.168.1.1
  netmask 255.255.255.0

并且将下面这两条注释掉

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet manual

6.接着就正式开始配置无线相关的选项了,编辑/etc/hostapd/hostapd.conf,如果没有这个文件就自行创建它。

interface=wlan0
driver=rtl871xdrv
ssid=无线名称
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=无线密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

7.在/etc/default/hostapd文件中指定hostapd服务的配置文件,内容如下

DAEMON_CONF="/etc/hostapd/hostapd.conf"

8.更改系统的转发规则和iptables规则,依次运行下列命令:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
iptables-save > /etc/iptables.nat
service hostapd start
service udhcpd start
update-rc.d hostapd enable
update-rc.d udhcpd enable

9.最后一点点收尾工作:
编辑/etc/network/interfaces文件,在末尾加上着一条:

up iptables-restore < /etc/iptables.nat

以及/etc/sysctl.conf文件,确保下面的选项存在

net.ipv4.ip_forward=1

到此为止就全部完成了,用手机,电脑等无线设备都可以连接上树莓派了。
为后续的折腾打下基础。

折腾的整个过程还挺复杂的,需要修改多处文件,而且每一处修改都会微妙的影响到最后路由器的运行,小小的改变都有可能造成瘫痪或者影响性能。由此可见,想DIY一款高性能的个性无线路由器还是很有挑战性的。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×