一、开篇

首先,我使用的是debian的linux,版本是stretch,其他发行版的话只能作为参考,无法照搬。

然后上参考:https://blog.csdn.net/politefish/article/details/4444417

在网上搜无盘系统,全部都是指导怎么启动安装器的,这个我之前已经做过了,没什么问题,但是如何做一个能直接运行的linux,倒还是第一次。上边这边文章里面洋洋撒撒一大串,不过还是指引了我找到了比较核心的内容。

二、组件部署

首先PXE启动系统我这边就不说了,参考有很多,比如说这个这个,还有这个。总所周之,PXE启动linux需要3个组件,一个DHCP服务器,一个tftp服务器,还有一个NFS服务器。因为我家的路由器系统都比较的有好,DHCP服务器方面都支持设置PXE的引导,所以不需要额外的架设一个DHCP服务器。

tftp服务器和NFS服务器我是使用我家的一台QNAP的NAS来做的,性能和整合度不错,由于是同一份文件的不同共享,所以就不需要每次更新了kernel之后还需要单独将kernel拷贝到tftp服务器去了。

 

首先是tftp服务器,先把tftp服务器开起来,指向目标,限制好来源

然后参考这个,把所需的文件放到目标

看起来像是这样:

PXE
├── debian
│ └── #这里放Debian的系统
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vesamenu.c32

再然后就是NFS系统,在系统中调整NFS分享,让/PXE能够以NFS的形式挂载,这就可以了,如何建立NFS服务器并且建立共享,这里不多说。

三、系统安装

然后先安装好基本系统,再回来修改default的配置文件

参考了网上搜出来的文章,我发现他用的方法就是使用debootstrap来安装系统。嗯?看着眼熟,不就是我当年做过的事情吗?哎呀,这就容易了嘛。

这里我选择的方法是用containerstation跑个LXC容器,将文件夹挂载到容器中。如果手边只有windows的机器,可以选择上虚拟机,然后挂载NFS共享。

假设将目标挂载到/mnt,就可以使用这样的方式来安装基本的debian系统

 

debootstrap –arch=amd64 stretch /mnt/ http://ftp.cn.debian.org/debian/

然后稍作等待,你就获得了一个debian系统了。当然,推荐使用同一个架构的CPU,因为这样接下来的后续安装就会方便很多。

chroot到新系统之后就可以向刚安装的系统一样去做后期的调整了。注意至少有一下这么几个

1.修改root的密码

2.新增用户

以下几个我是当时做了的配置但看起来并不是必须的,酌情参考

3.修改fstab和mtab,详细看参考链接,但是我登录系统之后看mount表完全不是那么一回事

4.配置网络,参考链接里面还是用的eth0,但是我登录系统后看到的接口都不是eth0而是en0了,又是一个过期的文档

5.调整时区,这个最好做一下,还有用timedatectl set-local-rtc 1 设置将RTC时钟设为本地时间而不是UTC时间,避免和windows来回切的时候导致windows时间混乱

然后把你想安装的东西都安装上。duang,系统就安装好了。

四、调整PXE启动配置

最后回来调整一下PXE的启动文件,这里是最精华的地方:

DEFAULT vesamenu.c32
PROMPT 0
MENU TITLE Home PXE-Boot Server
label Diskless Debian
MENU LABEL Diskless Debian
KERNEL debian/vmlinuz
append vga=normal initrd=debian/initrd.img ramdisk_size=14332 root=/dev/nfs nfsroot=NFS服务器地址:/PXE/debian rw --
TEXT HELP
Starts the Diskless Debian
ENDTEXT

需要注意的是,这里是系统的根目录下存在两个指向boot的链接,所以kernel和initrd才是这个位置,至于其他的参数,我暂时还没了解到如何使用,先保留着,看以后是否再需要优化。

配置完成后,就可以启动主机,然后选择从LAN启动了,启动之后,可以看到根目录是从nfs服务器挂载的。

 

参考:

https://archlinuxarm.org/forum/viewtopic.php?f=30&t=2452

https://archlinuxarm.org/forum/viewtopic.php?f=7&t=2451#p13657

 

最近把在吃灰的PogoPlug又重新捞出来丢到出租屋那边,刚才在网上瞎逛的时候突然发现Archlinux的论坛上有个家伙po了个帖子,说在研究能不能打开他手里的pogoplug的AES硬件加速,然后发现可行并且有点效果,于是我也尝试着试了一下,发现确实ok,于是先记一下。

由于好心人(pklaus)的付出,现在不需要重复 firefoxPL先生的老路了,现在只需要安装特定的软件包,并且创建文件让系统能够在启动的时候自动加载kernel mod就可以用了。

根据原po的说明以及大胆的猜测,初步推测不仅仅是pogoplug,其他使用kiriwoodCPU的设备都可以用相同的方法来开启硬件加速。

先安装所需的kernel header:

pacman -S linux-kirkwood-headers

然后安装cryptodev-dkms以及其所需的软件包:

pacman -S cryptodev-dkms

然后就会根据安装脚本自动编译kernel mod,由于是需要编译的,可能会出现其他的软件包需求。

安装完毕之后,就把openssl给替换掉:

pacman -S openssl-cryptodev

由于openssl-cryptodev会自动引用一个openssl,其版本不一定会是最新,所以要是提示有openssl可以更新的时候请不要在意,保持openssl-cryptodev是最新的即可。当然openssl和openssl-cryptodev会有冲突,安装的时候会有提醒的。

顺便贴一下我测试的开了硬件加速和没开硬件加速的区别:

这个是没开

[root@alarm ~]# openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 1360545 aes-128-cbc's in 2.78s
Doing aes-128-cbc for 3s on 64 size blocks: 489186 aes-128-cbc's in 2.99s
Doing aes-128-cbc for 3s on 256 size blocks: 133567 aes-128-cbc's in 2.99s
Doing aes-128-cbc for 3s on 1024 size blocks: 32897 aes-128-cbc's in 2.88s
Doing aes-128-cbc for 3s on 8192 size blocks: 4273 aes-128-cbc's in 2.98s
Doing aes-128-cbc for 3s on 16384 size blocks: 2143 aes-128-cbc's in 2.99s
OpenSSL 1.1.0h 27 Mar 2018
built on: reproducible build, date unspecified
options:bn(64,32) rc4(char) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DHAVE_CRYPTODEV -DHASH_MAX_LEN=64 -DOPENSSLDIR="\"/etc/ssl\"" -DENGINESDIR="\"/usr/lib/engines-1.1\"" -Wa,--noexecstack -D_FORTIFY_SOURCE=2 -march=armv5te -O2 -pipe -fstack-protector-strong -fno-plt -Wl,-O1,--sort-common,--as-needed,-z,relro
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 7830.47k 10470.87k 11435.84k 11696.71k 11746.45k 11742.78k

这个是开了

[root@alarm ~]# openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 36940 aes-128-cbc's in 0.11s
Doing aes-128-cbc for 3s on 64 size blocks: 37466 aes-128-cbc's in 0.07s
Doing aes-128-cbc for 3s on 256 size blocks: 33812 aes-128-cbc's in 0.07s
Doing aes-128-cbc for 3s on 1024 size blocks: 20341 aes-128-cbc's in 0.08s
Doing aes-128-cbc for 3s on 8192 size blocks: 5133 aes-128-cbc's in 0.01s
Doing aes-128-cbc for 3s on 16384 size blocks: 2984 aes-128-cbc's in 0.02s
OpenSSL 1.1.0h 27 Mar 2018
built on: reproducible build, date unspecified
options:bn(64,32) rc4(char) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DHAVE_CRYPTODEV -DHASH_MAX_LEN=64 -DOPENSSLDIR="\"/etc/ssl\"" -DENGINESDIR="\"/usr/lib/engines-1.1\"" -Wa,--noexecstack -D_FORTIFY_SOURCE=2 -march=armv5te -O2 -pipe -fstack-protector-strong -fno-plt -Wl,-O1,--sort-common,--as-needed,-z,relro
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 5373.09k 34254.63k 123655.31k 260364.80k 4204953.60k 2444492.80k

这效率差距不是一星半点。不过根据原po的另外一个测试,在使用openssh传输文件的时候,速度和带宽的差距并不明显,只是在打开了硬件加速的时候,CPU占用会下降。

主页在这里:http://radicale.org/

显着无聊,在LEDE的软件源里面到处找有什么有趣的服务,结果发现了一个叫做radicale的个人CalDAV/CardDAV服务器,直接装了跑起来之后总有点问题,于是稍微研究了一下,大概是由缺失了htpasswd的原因导致的,抓log也没报任何错误,但就是没法正常工作。最后还是去官网直接看部署过程才终于搞起来。

软件使用python编写,最新的版本使用python3,目前就我所知,软件包的需求最少也有python3、pip、htpasswd,及其所有所需软件包。功能上非常简陋,但核心的功能一个不漏,源码包不到100K,还自带一个简陋的web控制页面,可以用来新增文件夹。

安装过程就和官网所说,非常简单,最少只需要2条命令就能跑起来,不过想要用得好一点就还是需要进行一些配置。

先安装radicale

python3 -m pip install --upgrade radicale

然后pip就会搞定全部的需求,官方同时推荐对密码使用bcrypt进行加密,如果使用bcrypt加密,同时使用pip安装bcrypt。同时,根据不同的发行版,把htpasswd装上,LEDE由于没有将htpasswd从apache中拆出来,所以我就把apache装上就可以用了。

好了,服务器已经安装完,进入配置环节,radicale会自动尝试从“/etc/radicale/config~/.config/radicale/config或者是尝试从系统变量中读取RADICALE_CONFIG来找到配置文件,所以直接放在/etc/radicale/config就好,当然,可以直接加参数来运行,不过我觉得没有多少人会每次都加上一堆参数来运行的吧(笑)。

创建好配置文件,就向里面填入以下内容:

[auth]
type = htpasswd
htpasswd_filename = /path/to/users
htpasswd_encryption = plain
delay = 1

[server]
hosts = 0.0.0.0:5232
max_connections = 20
max_content_length = 10000000
timeout = 10
daemon = True
pid = /var/run/radicale.pid
ssl = True
certificate = /path/to/cert
key = /path/to/key
realm = Radicale - Password Required

[storage]
filesystem_folder = /path/to/storage

[rights]
type = authenticated

根据个人需求,可以酌情修改,比如说想要规模大一点,可以对权限进行更加详细的设定,比如说哪些人能读哪些人能写,参考这里
同时可以根据需要,抓取更加详尽的log,可以参考这里
在这个例子里面,我就参考LEDE默认的那个,直接用plain存储用户名和密码,同时使用SSL对通信进行加密,证书的做法有太多,这里就不详述。
users文件可以使用htpasswd来创建,大概的格式就是用户名:密码,如果用明文的话可以直接编辑users文件来修改密码。

创建好用户名和密码之后,可以尝试使用浏览器来访问https://your.domain:5232/,会自动跳转到一个非常简陋的web控制页面能够创建、编辑、删除包括地址簿、日历、todo清单等文件夹,根据我的测试来说暂时是没法在客户端创建这些文件夹的,所以现在web控制页面建好,然后就可以到客户端添加详细的条目了。

最近耍了一个RouterOS的x86版,自带kvm虚拟机,看起来碉堡了,但是使用了之后只能吐槽说各种bug,就连官方的建立img都会报个“failed to copy files to image(s)”,结果我还是用ultraiso建立了一个空的img文件才能用。openwrt的镜像倒是方便,把kernel也放出来了,启动参数也提供了,在routerOS中一填就OK,没什么大问题。至于安装其他的linux。。。。目前我只成功安装了CentOS7。

在目前的RouterOS版本(6.36.2)中,kvm虚拟机的vnc是用不了的,这让我安装windows的企图破灭了,没GUI玩个蛋蛋。剩下一种可行的链接方式就只有console,这让安装linux变得可能。

但是下载下来的iso镜像不能直接使用,因为很多发行版发布的镜像的grub是默认没有console输出的,这让我们需要重新打包iso镜像。

首先,找到grub的配置文件,视情况而定,有可能是grub.cfg、grub.conf、isolinux.cfg几种,ubuntu的配置文件更加复杂,详细去官方的wiki慢慢研究。

在grub的配置文件中全局的位置(大概是在那一堆label前)插入一句

serial 0 115200

就能够让grub输出到console,至于这时候有没有视频输出,我没试过。这时候routerOS就可以用过console看到grub的输出了。

然后就是kernel的参数,这让kernel启动之后输出到console,这段写在kernel的后面,像这样。

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz console=ttyS0,115200
  append initrd=initrd.img

之后就像正常安装linux一样安装就行了,不过只能够用文本的安装向导,详细查询各大发行版。

最近给小主机换成了CentOS,感觉人性化了非常多(虽然软件仓库还是缺少很多挺好用的货),于是就顺手想把wine给装上(我才不会乱说因为跑个有毒的game.exe中招了于是顺手换系统),于是出现了奇怪的问题,大量exe文件无法运行,报告一个错误

fixme:service:scmdatabase_autostart_services Auto-start service L"MountMgr" failed to start: 2
wine: Bad EXE format for Z:\home\ferrets\桌面\winbox.exe.

而且,wine的配置器也报告了类似的问题。

2016-02-09 18-29-46 的屏幕截图

经过一番Google,在CentOS的论坛上找到了答案,因为某些上游开发者的决策“要保持CentOS的64位纯洁性”,而砍掉了32位支持,只要去装个32位的wine就能解决。于是我找到了这篇教程

非常典型编译过程:

先安装工具包

yum groupinstall 'Development Tools'
yum install libX11-devel freetype-devel zlib-devel libxcb-devel

然后,下载源码,解压:

cd /usr/src wget http://dl.winehq.org/wine/source/1.8/wine-1.8.tar.bz2
tar xjf wine-1.8.tar.bz2

解压之后configure:

32位系统用: ./configure
64位系统用: ./configure --enable-win64

最后编译和安装:

make
make install

装完了运行一下作个测试。

32位系统运行:
# wine --version

64位系统运行:
# wine64 --version

不出什么意外的话安装就完成了

参考:http://wiki.centos.org/zh/AdditionalResources/Repositories

最近弄了个AWS玩,送了一年的免费试用(amazon真大方),于是上了个redhat,再重新部署VPN服务的时候发现没有openvpn,没有pptpd,果断加第三方软件源。

之前用过rpmforge,于是顺着老路子走,发现rpmforge也没有openvpn和pptpd,什么鬼……找到CentOS的wiki一查,发现rpmforge已经不被维护了,于是转战EPEL。

介绍页面在这里:https://fedoraproject.org/wiki/EPEL/zh-cn

来源:http://www.supershigi.com/forums/index.php?topic=888.0

今天又闲着将小主机的系统从windows server换到了debian,又重温了一下在Linux下用wine跑一些工口RPG小游戏的配置过程,为了避免忘记,做个记录。

原文有大量详细的说明,这里就只翻译一下通用的部分(至少我遇到的基本上都能跑起来)。

首先,你需要安装wine和winetricks这两个软件包(遇到需求问题的话自行解决)。

debian系的就用aptitude(原文用apt-get)来安装,推荐把q4wine也装上,用q4启动器的话可以设定语言环境,玩未汉化的游戏相当方便,至于是用32位还是用64位自行斟酌。

aptitude install wine winetricks q4wine

软件包的需求就好了。然后打开winecfg,添加两个函数库顶替:

winecfg
winecfg

没错,就是最底下的两货,分别是winegstreamerwinepulse.drv(会提示说禁用这个会有问题,无视之,会装个新的)。

禁用之后,再装上新的

winetricks directmusic

就会自动从网上扒下来,自动安装。

安装完之后,RPG Maker的作品就能够跑起来了。

至于特定的某些个游戏,这里就不叙述了。

因为打算手动写Pi的IP地址,于是很自然的打算vi /etc/rc.local,结果左下角出现了“新文件”的提示,然后我就纠结了,别这样,连自启动的脚本都没有了……我还怎么玩?

经过一番Google,在Ubuntu的论坛上发现了一个指导(为毛Arch的问题跑到Ubuntu的论坛去了):

http://forum.ubuntu.org.cn/viewtopic.php?f=155&t=395231

3楼说明了解决的办法:

修改/etc/systemd/system/rc-local.service

[Unit]
Description=/etc/rc.local Compatibility

[Service]
Type=oneshot
ExecStart=/etc/rc.local
TimeoutSec=0
StandardInput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

如果是简单的自定义命令,可写入/etc/rc.local,用上面的方法来处理。然后使用

systemctl enable rc-local.service

来启用这个脚本的服务。

不得不说ArchLinux这种管理方式也是相当的出色,但是因为刚接触,导致命令相当的不熟悉,让我控制的非常不舒服……

因为Debian系的Linux玩的有点多,于是想找另外一个发行版来玩一下。 先是装了个pidora,可是出了点问题,一启动就报错

drivers/rtc/hctosys.c: unable to open rtc device (rtc0)

在Google上搜索,但是结果只有两页,而且看了一些,也没有什么参考价值……好吧~我再换一个! 再继续在wiki上看有哪些系统可以玩……哎~ArchLinux,早听说过这个了,听说是超轻量级而且出色的Linux,好,就决定是你了! 先从Google找到ArchLinux的RaspberryPi版,下回来,大小不到200M,是目前找到的镜像里面最小的,解压出来,依旧有1.9G,这压缩率真恐怖。 然后就是将系统烧录到SD卡上。Windows的话就用Win32DiskImager,Linux或者MAC或者Unix系的话就dd,用法是

dd if=镜像 of=SD卡的设备名称

SD卡的设备名称一般为mmcblk,mmcblk0是第一张SD卡,mmcblk0p1是第一张SD卡的第一个分区,详情看自己的/dev。更多详情请自行Google。

写好之后最好还是找个Linux环境(用Windows又不想装Linux的给我弄个虚拟机去),以方便对SD的扩展操作。

因为没有显示器在手边,按照老方法,用TTL来登陆操作,下面是来自http://lavalink.com/2012/03/raspberry-pi-serial-interfacing/的示意图。 raspberry-pi-serial_sm 照着连接好之后,用终端工具连接,我这里用的是putty,简单快捷。

给RaspberryPi上电之后大概几秒钟(ArchLinux启动就是这么快!),系统就启动完成了。而且在TTL口没有调试信息的输出,当初还以为出了什么问题,结果点了几下回车,就出现了登陆提示……

最先要做的事情当然是修改locale,参考https://wiki.archlinux.org/index.php/Beginners’Guide(简体中文)

修改/etc/locale.gen,去掉想要的locale前面的注释,然后运行一次locale-gen。想要的locale就出来了。

下一步是改环境变量,

export LANG="zh_CN.UTF-8"

然后可以修改~/.config/locale.conf,加入自己想要的locale,以后登陆就不用每次都手动改变量了。

语言弄好了,接着就是扩展一下SD卡上的分区。因为镜像是根据2G的SD卡搞的,这意味着我手上的8G的SD卡有6G没有用到。

先找个Linux环境,因为磁盘操作的话不能在Pi自身上完成,就算是OpenWrt来做也可。

参考:http://conanblog.me/blog/raspberry-pi/hack/arch/linux/go/2013/02/17/play-with-raspberry-pi/

fdisk -uc /dev/mmcblk0

打开SD进行操作。

用p来列出分区表,用d来删除分区,用n来新建分区。

附上原文中的操作过程作为参考:

$ sudo fdisk -uc /dev/mmcblk0

# 打印分區表
Command (m for help): p

Disk /dev/mmcblk0: 3904 MB, 3904897024 bytes
64 heads, 32 sectors/track, 3724 cylinders, total 7626752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004f23a

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048      186367       92160    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          186368     3667967     1740800   83  Linux

# 刪除第二個分區
Command (m for help): d
Partition number (1-4): 2

# 新建一個分區
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2

# !!! 第一個扇區號必須和上面刪除的分區的起始扇區號一樣,這裏的話是186368 !!!
First sector (186368-7626751, default 186368): 186368
Last sector, +sectors or +size{K,M,G} (186368-7626751, default 7626751):
Using default value 7626751

# 保存剛剛的操作並退出
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

然后检查磁盘错误、扩容

$ sudo e2fsck -f /dev/mmcblk0p2
$ sudo resize2fs -p /dev/mmcblk0p2

然后就基本上能用了。

最近又给同学刷了一只路由,在设置wifi的时候突然来了兴致,不如用中文来做SSID吧~然后就干了,在luci上使用中文写了SSID,然后应用之后,发现luci的页面上能够正确的显示中文,但还到了windows上就变成了一串英文,然后用手机一搜,哟~中文哎。

显然是字符编码的问题了。

总所周知,windows使用的是GB的字符编码,而Linux一般使用的是UTF-8,除非你手动改成了GB。用Linux做底层的Android果然跟随了Linux的步伐,编码使用了UTF-8,而Openwrt的Luci也用的是UTF-8的编码,如此一来,便解释得通了。

用notepad++打开/etc/config/wireless,编码切换到GB,将SSID改成了中文,保存,然后重启WiFi,然后一搜:

中文SSID

果了个然,于是中文的SSID就出来了,别人看到都觉得很惊奇。这时候就可以给你的WiFi一个有趣的SSID,比如之前看到的“网络无法连接”,估计可以让相当一部分的人放弃连接你家WiFi的念头。

另外一件很有趣的事情就是,虽然使用了GB编码的SSID,但是Ubuntu却表示我能够正确的认出中文的SSID,并显示出来。UTF-8编码的中文SSID,Ubuntu同样能够正确地显示中文,这实在太不可思议了。

===========================接下来就是把密码给玩坏===============================

最初的时候,就尝试直接使用GB的编码来写中文密码。ok,windows说他能连上。但是Linux表示我们 UTF-8的编码没法通过密码验证。

问题就来了,怎么办呢?

把密码换成UTF-8如何?

然后Ubuntu就表示,嗯,我们没问题!

中文WiFi密码

啧……这可难办了,难道就没有两者都能兼容的办法么?

然后在来回切换编码的时候,我发现了一个问题,UTF-8转成GB之后是乱码,但是看起来却都是正确的中文字符……要不旧直接用这个乱码来试试连接吧……Windows说:没问题!然后就连上了。

GB编码下的SSID和密码
GB编码下的SSID和密码
UTF-8编码下的SSID和密码
UTF-8编码下的SSID和密码
乱码密码
乱码密码

看来连接是没有问题呢~

也就是说使用GB编码的SSID和UTF-8编码的中文密码是最优的组合~无论linux和windows都可以连接到。

最后就是客人的问题……

移动设备的话估计没什么问题,但是捧着运行着Windows的电脑过来的孩子……有的麻烦了呢……

==============================追加移动设备的研究================================

很可惜的是,android和IOS都可以认出UTF-8编码的SSID,但是无法认出GB编码的SSID,只能看到一串乱码,这个实在是太糟糕了。微软你赶紧投奔UTF-8的怀抱吧。

与此同时,测试了UTF-8编码的密码,Android和IOS都能够使用中文密码来连接,但是IOS在输入密码的时候,只能输入英文字符,所以,需要使用复制粘贴的方法,来完成密码的填写。Android的话,可以强制切换键盘来输入中文。

另外的就是,即使使用中文字符,也必遵循WPA2密码最少8个字符的原则,所以最短密码是八个中文字,而不是4个中文字。

等我以后能装OSX的之后再补上MAC的研究报告。