Jul 5

WR1041N v2 安装openwrt 不指定

felix021 @ 2016-7-5 22:31 [IT » 硬件] 评论(0) , 引用(0) , 阅读(1890) | Via 本站原创
(懒得看细节的同学直接拉到末尾下载带有shadowsocks的镜像)


TP-Link很久没给我的路由器更新固件了,而且它运行一段时间以后就需要重启才能保证wifi正常,这对于家里有基于Wifi的智能设备来说是不能忍的,所以只能折腾了,上OpenWRT吧。

记得09年的时候折腾路由器,WL520GU,刷上了DD-WRT,然后再交叉编译弄了个锐捷的客户端,这样就可以把校园网分享出来用。心血来潮到珞珈山水去翻了一下,当年发的帖子竟然还在Linux版置顶……

回归正题,1041n的OpenWRT页面在这里: https://wiki.openwrt.org/toh/tp-link/tl-wr1041n

虽然可以从 这里 下载预编译好的镜像,但是不折腾一下感觉不带感,所以参考官方的教程,自定义镜像。

1. 下载 Image Generator

当年玩WL520gu的时候,好辛苦,先得用openwrt的buildroot脚本创建一个交叉编译环境,那个脚本特别不适合中国国情,用wget慢慢下载国外的源……等得我都快崩溃了,于是拉出它的下载连接直接用迅雷下好放进去再启动。现在可好,直接就有现成的环境直接下载,一分钟就搞定了。

具体参考这个页面:https://wiki.openwrt.org/doc/howto/obtain.firmware.generate

正好1041n是ar71xx架构的,照做就好了。

2. 生成image

可惜1041n只有4M的flash,否则我一定把php和python都打进去,这样还能跑起个shadowsocks server。

最后权衡了下,是这么生成的:

    make image PROFILE=TLWR1041 PACKAGES='luci luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn libev libpolarssl curl'

之所以把 libev 也打进去,主要是想之后可以用shadowsocks-libev,但是编译了一下发现可执行文件竟然 1M+,strip以后也还有两三百KB,还是算了。

如果不用curl的话,可以把libpolarssl和curl去掉,不过好像也没什么其他特别有用的了(或者是pptp?)。curl我是用来请求DnsPod的,这样可以及时把家里的IP刷到某个域名上去。

如果没什么错的话,生成的 image 就是这个了:

    bin/ar71xx/openwrt-15.05.1-ar71xx-generic-tl-wr1041n-v2-squashfs-factory.bin

3. 升级配置

tp不校验固件,所以直接通过路由器管理页面升级就行了。

升级了以后  telnet 192.168.1.1 登上去,用 passwd 修改root密码,然后就可以ssh登录,或者访问luci  http://192.168.1.1

image里面带了中文语言包,登录以后可以在 System -> Language 里面修改成简体中文。

配置PPPoE:打开  网络->接口,点击 WAN 接口的修改,看着配就好了。就那么点东西。

剩下的就是瞎折腾了

4. 创建用户

没什么卵用,弄着玩,这样就可以用另一个用户登录路由器,而且还是通过publickey authentication。

引用

echo 'felix021:*:103:100::/overlay/felix021:/bin/ash' >> /etc/passwd
echo 'felix021:*:16831:0:99999:7:::' >> /etc/shadow
mkdir -p /overlay/felix021/.ssh
cd /overlay/felix021/.ssh
echo $PUBKEY >> authorized_keys
chmod 600 authorized_keys
chown -R felix021:users /overlay/felix021/




==== UPDATE ====


还是花了一个晚上折腾了shadowsocks

1 安装SDK

参考:https://wiki.openwrt.org/doc/howto/obtain.firmware.sdk

下载SDK: https://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/OpenWrt-SDK-15.05.1-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2

2 编译

$ git clone https://github.com/shadowsocks/shadowsocks-libev.git package/shadowsocks-libev.git

$ make menuconfig #选中 network 下的 shadowsocks-libev-polarssl

$ make -j

编译好的文件位于:./build_dir/target-mips_34kc_uClibc-0.9.33.2/shadowsocks-libev-polarssl/shadowsocks-libev-2.4.7/ipkg-install/usr/bin/

3 腾出空间(回到Image Builder)

对于4M flash的image来说,openwrt给的空间实在太小了,所以只好打起现有package的主意。翻了一下,ipv6似乎占了比较大的空间,考虑到国内确实用不上ipv6,所以就拿它开刀吧。

参考前面 https://wiki.openwrt.org/doc/howto/obtain.firmware.generate 的 Remove useless files from firmware

修改 Makefile,添加 FILES_REMOVE 选项,并在 files_remove 文件中添加:
引用

/etc/modules.d/20-ipv6
/etc/modules.d/nf-ipt6
/etc/modules.d/nf-conntrack6
/lib/modules/3.18.23/ip6_tables.ko
/lib/modules/3.18.23/ip6t_REJECT.ko
/lib/modules/3.18.23/ip6table_filter.ko
/lib/modules/3.18.23/ip6table_mangle.ko
/lib/modules/3.18.23/ip6table_raw.ko
/lib/modules/3.18.23/ipv6.ko
/lib/modules/3.18.23/nf_conntrack_ipv6.ko
/lib/modules/3.18.23/nf_defrag_ipv6.ko
/lib/modules/3.18.23/nf_log_ipv6.ko
/lib/modules/3.18.23/nf_reject_ipv6.ko


4 加入shadowsocks

$ mkdir -p files/etc/init.d files/usr/bin

$ cp /path/to/ss-server /path/to/ss-local files/usr/bin

$ cp /path/to/shadowsocks-libev/openwrt/files/shadowsocks.json files/etc/ss-server

$ cp /path/to/shadowsocks-libev/openwrt/files/shadowsocks.init files/etc/init.d/ss-server #修改配置文件路径为 /etc/ss-server,去掉 -b 0.0.0.0

$ cp /path/to/shadowsocks-libev/openwrt/files/shadowsocks.json files/etc/ss-local

$ cp /path/to/shadowsocks-libev/openwrt/files/shadowsocks.init files/etc/init.d/ss-local #修改配置文件路径为 /etc/ss-local

$ chmod +x files/etc/init.d/*

5 重新生成image

make image PROFILE=TLWR1041 PACKAGES='luci luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn libev libpolarssl curl libpthread -kmod-ip6tables -ip6tables -kmod-ipv6 -kmod-nf-ipt6 -luci-proto-ipv6 -libip6tc' FILES=files/ FILES_REMOVE="files_remove"


升级一下新的rom,然后就可以在路由器上启动shadowsocks的server/client了。

在路由器上启动server,配合surge,就变成一个简易VPN了,效果相当赞。


附:带有shadowsocks的镜像下载地址为 http://pan.baidu.com/s/1bpl9jK7 密码: 7ugp (貌似不加密码很容易失效)
Dec 17

usbip小记 不指定

felix021 @ 2015-12-17 09:55 [IT » 硬件] 评论(1) , 引用(0) , 阅读(2562) | Via 本站原创
好早以前看到过这个项目,不过当时没有测试成功,昨天晚上看了一下,有点眉目了,先记录一点东西。

1. 项目主页:http://usbip.sourceforge.net/ ,但是这里实际上已经没有再维护了,内核模块已经merge到linux kernel(drivers/usb/usbip)。这里有提供经过ReactOS(这个神奇的项目)签名的windows驱动程序(windows下只有client,没有server),但是不知道四年过去了还能不能用……

2. ubuntu默认安装没有相关模块,需要安装 linux-image-extras ,然后 cd /lib/modules/[KERNEL_VER]/kernel/drivers/usb/usbip && sudo insmod *.ko

3. ubuntu源里的usbip包已经是很老的版本,无法利用新的内核模块,会提示“usbipd requires usbip_common_mod.ko and usbip.ko kernel modules”,实际上userspace tool也已经挪到kernel source里了,位于 linux-source/tools/usb/usbip,编译方法可参考该目录下的README文件,类似于:
引用
./autogen.sh
./configure --with-usbids-dir=/usr/share/misc/
sudo make install

但是我是直接下载的kernel source,没有安装在系统目录,所以在编译的时候会提示 libsrc/usbip_common.h 找不到 linux/usbip.h ,解决方法很简单,把那一行改为 #include "usbip.h" ,然后把 linux-source/include/uapi/linux/usbip.h 复制到 libsrc 目录,再编译就行了(对,就是这么粗暴简单)。

4. update@2015-12-25:在linux下测试成功。windows的driver废弃太久,已经不能支持新版代码的协议了。

p.s. 还有一个收费的商业项目 usb-over-ethernet ,有free trial版本,但是没尝试过。
p.s. 2. 还有一个开源的项目SPICE,有一个 usbredir 模块 http://www.spice-space.org/page/UsbRedir ,不过好像还不完善。
Jan 5
UPDATE@2014.02.19 升级到windows8.1以后似乎一切都正常了,买了个start8,慢慢习惯不习惯的地方吧……

最近给机器升级了CPU(i5 4570s)和主板(ASRock B85M-Pro4,C2步进),然后经常出现机器卡死的情况(一天一次的频率),有时候等上一两分钟还能活过来,有时候不行。事后查看windows事件查看器,没发现什么异常的地方。

升级之后的另一个蛋疼问题是,手头这块PLU ML-G3000青轴在打字的时候偶尔会出现几个随机按键(有次还“随机”到直接关机了)。频率也是一天1~2次的样子。前两天把键盘换成以前的Dell 8115以后暂时没有再出现,可能是键盘自己有点问题。

升级之前是AMD X3 450 + GigaByte 880GM-USB3,机箱内其他配件都没动(海盗船DDR3.1600[4G×2]、日立1TB、三星830.64G、TT XP420),升级之前系统相当正常,使用了2年几乎没遇到什么问题,用得挺爽的,平时中度使用,VBox虚拟机也常驻后台,机器是长期不关机,晚上都让它待机。

先怀疑是待机有问题(8系列主板C1步进的那个BUG也跟睡眠有关,但是我的主板是C2步进),这几天都没有用睡眠,但还是出现卡死的情况。

又怀疑硬盘出了问题,用HDTune的错误扫描把SSD和HDD都扫了一遍,全都是绿块很正常。

So,暂时不知道还可以做些什么,求建议。


== UPDATE@2014-01-05 23:59 ==
有人说可能跟Intel Rapid Storage Technology(就是Intel的SATA AHCI驱动)有关,在AS SSD Benchmark里面显示是iaStor,卸掉后变成了msahci(微软的驱动),但是刚刚还是假死了十几秒(然后恢复了)。

看到有人说到Windows 7 的这个BUG: “当你将磁盘设备使用的SATA模式更改为AHCI标准后,使用Windows 7和Server 2008 R2的计算机或某些应用程序会出现随机假死、60秒或更长时间没反应的情况。” 按照这个页面的说法,是M$的驱动有问题,我装了Intel的RST驱动应该正常了才对。搞不明白是咋回事啊……上面这个知识库里给的hotfix下载了提示“此更新不适用于您的计算机”……仔细看了下,这个页面提到的受影响的msahci.sys的文件日期是2009年的,我系统里的是2010的,可能已经修复了。

== UPDATE@2014-01-11 23:43 ==
升级到最新版的Intel RST驱动12.9.0.1001版以后,到目前为止没有再出现过假死的情况。

== UPDATE@2014-01-15 22:51 ==
又出现了一次,没死彻底,又恢复了。

@23:10 发现另外一个可能导致假死的BUG(win7/server 2008 r2,跟lsass有关的,但是同样提示“不适合我的计算机”,摔!
Dec 27

popobox折腾记 不指定

felix021 @ 2013-12-27 00:49 [IT » 硬件] 评论(0) , 引用(0) , 阅读(5824) | Via 本站原创
其实这货已经到手一个多月了,最初是在v2ex上看到这个帖子,发现它居然只要29块钱(其实是因为出了2代,1代亏本清仓),虽然CPU只是arm9 360MHz的,但是有256M内存、2GB Flash、原生Linux系统,这样一个嵌入式设备能做的事情也不少了,于是果断在京东下单。

11月12号到手,然后没几天各个地方就都卖断货了。外观上看起来做工还是可以的,大小像一般家用路由器一样,有2个USB口,其中一个是USB2.0,另一个官方说仅用于向该设备供电(这样就不需要电源适配器了),但是在扣扣群里看到帖子说是可以改造。可惜sandy那套螺丝刀工具套装找不到了,那个特殊的六角形螺丝拆不了,只能先折腾软件了。

popo里头内置了一套它们的云服务(用python写的,通过它的服务器中转,可以在公网上分享USB存储设备上的内容),并且默认启用了samba服务供内网访问,而且居然还启动了一个minidlna服务。不过这些东西都太耗内存了,怪不得这样一个设备需要256M的内存,直接被吃掉了一大半。全都停掉以后,内存占用只有17M,可用200多M,比外头的好多vps可是大多了(我现在就用着一个64M的openvz vps来翻墙)……预装的Linux里头有transmission,扣扣群里还流传着一个官方给2代提供的迅雷远程下载插件,在一代也可以用,不过其实没什么意思,自从买了迅雷会员以后,都是在迅雷离线下载好再直接下载到本地。。。

系统默认的ssh很奇怪,可能是精简得太厉害了,连scp都不支持,按照群里某教程换了个dropbear上去,然后参照Yongke同学的这篇Blog,给上面倒腾了一个chroot的debian,不过我没有蛋疼地搞一个loop的img,而是直接放在一个文件夹里,拷贝和解压的时候都省了好多时间,还免了挂载这一步。有了debian以后能做的事情就很多了,可是因为手头的mk802性能比它好得多,而且稳定运行了1年多时间(最长连续200+天,因意外被重启。。),所以好像也没什么需要它干的事情,所以就放着了。

第二天远程到公司,发现有个人在群共享里放了个kernel module,可以把boot所在的nand分区显示出来,这样就可以挂载了。然后我就2乎乎地用yaffs把那个分区挂载上去了……然后……实际上那个分区并不是那样的,但是yaffs可不管这个,挂载出了一个空分区,还自动创建了一个lost+found文件夹……当时我就快哭了。经过了多番折腾,把分区dd出来,然后再用别人dd出来的对比,修改,再mtd-utils工具包里的nandwrite写回去,最后终于……砖了。

于是很无耻地向京东申请换货,京东倒是很爽快,第二天就给换了一个。原样再倒腾一遍,然后就一直撂着了,直到上周,因为给电脑升级CPU(i5 4570s)买配件,顺便买了一套螺丝刀套装,19号到货以后,按照群里的图,把NR127和NR128两个口短接了(用的就是当时给机械键盘换轴的时候买的电烙铁套装),于是那个本来仅用于供电的USB口也可以被识别成一个USB1.1口了。

点击在新窗口中浏览此图片

然后想着干脆再折腾一下,于是在淘宝上下单买了个USB转TTL适配器,杜邦线,以及一堆导线什么的(最后没用上导线),23号收到以后当晚就开始折腾,搞得房间烟雾缭绕……其实松香的味道还是挺好闻的。倒腾了几次,在扣扣群里朋友的指导下,才搞清楚原来RX是要接TXD、TX是要接RXD。用putty连上对应的COM口,设置115200的Baud Rate,终于连上了它的console,以后瞎倒腾不愁变砖了。最后成品图如下,虽然焊点很难看,但是杜邦线从底部通风口引出去的设计不错吧XD,这样就可以在不给外壳动手术的情况下把外壳合上用TTL了。

点击在新窗口中浏览此图片

大概就是这样了,只是因为有mk802在先,好像这货还是不知道可以用来干啥。。。
Jul 3
先吐槽一下,顺便说下起因。

去年9月买的这个ML-G3000,青轴全无冲(回想起来有点2,青轴又不是拿来玩游戏的,买什么全无冲。。还贵了50块……),419入手的。它的键位基本上是标准的,但是R-Win变成了“禁用Win”功能键(直接在键盘电路逻辑里实现的,OS里检测不到keyCode的)、右键菜单(属性)键变成了功能键(配合Fx实现多媒体/音量控制什么的)。禁用Win对于游戏控来说是挺不错了,但是对于我这种几乎不怎么玩PC游戏的人来说就太废了点,而且还经常把这个当成Win键误按,例如我要Win+L锁屏,经常就变成了禁用Win,然后再换"左Win"+L,可是这时候Win已经被禁用了……各种抓狂。于是就用拔键器拔了一下,没想到键帽和轴结合太紧,直接把轴给拔坏了,里面弹簧蹦了出来。然后心里很不爽,就拿CapsLock开刀,果然又拔坏了……于是就成了这个样子:
Mar 23

mk802的wifi配置 不指定

felix021 @ 2013-3-23 16:21 [IT » 硬件] 评论(0) , 引用(0) , 阅读(7666) | Via 本站原创
本来这篇应该很早就写的,一直偷懒。今天简单记录一下吧。

其实很早就想买raspberry pi,但是代购的话比原价贵太多,不了了之。后来看到mk802,说是Arm Cortex A8 1GHz + 1GB Ram,性能远超树莓派,而且可以刷原生Linux(自带的是安卓),一冲动就买了。买回来才发现,mk802只有HDMI输出,用 hdmi 转 dvi 线连 dvi 显示器不行,所以刚买回来的时候蛋疼了两天。

首先是为内置的android配置wifi。幸亏默认是打开了USB调试的,连上PC,用类似腾讯手机管家这样的软件可以看到桌面截图,如果开启连续截图的话,就可以像幻灯片一样“远程桌面”。而mk802有一个标准usb host和一个mini usb otg,因此可以直接连接鼠标和键盘。主要问题是慢,相当慢。有耐心的话还是可以设置好的,甚至我把usb摄像头连上去,可以通过android qq跟电脑视频。

其次是刷Linux。这个才是重点——如果不是它可以刷原生Linux的话我就不会买了。从MiniAnd的这个帖子下载到了ubuntu的镜像包(直接dd写到tf卡),不过问题是Linux下面默认没办法看到桌面了(没有显示器,没有网络),所以只能通过不断修改配置文件的方式来尝试让它一启动就自动连接wifi。蛋疼了好久,不过还好最后问题解决了,而且解决办法也很简单,没兴趣看基本思路的同学可以直接跳到第3步。

基本思路是:

1. 挂载tf卡(拆下来在linux上挂载,或者也可以直接在mk802的android上挂载,通过adb shell连上去即可),修改 rc.local 或其他配置,让它在启动的时候自动执行一些命令,例如 ifconfig -a 和 iwconfig 、 iwscan 等。

2. 启动mk802,等待一段时间,让它把命令的输出并重定向到某个文件,然后关掉它,再次挂载tf,读取那些信息。由此可知它的网卡名字是 wlan0 ,并且可以搜到家里的wifi。

3. 挂载tf卡,修改 /etc/network/interfaces ,加入以下这一段配置(#号和它后面的就别加了),重启后它就自动连上wifi了:
引用
auto wlan0
iface wlan0 inet static
address 192.168.1.11
gateway 192.168.1.1
netmask 255.255.255.0
dns-nameservers 192.168.1.1
wpa-ssid OpenWrt_2E8B84 #这里是WIFI的SSID
wpa-psk password #这里是WIFI的密码
wpa-key-mgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN
wpa-ap-scan 1
wpa-scan-ssid 1


后记:某次用一个5000mah的移动电源测试大约坚持了13个小时,推算功率大约是1.5w,后来它就一直开机,作为一个小vps用了。。。

后记@2014.10.12
引用
As root, create a file /etc/modprobe.d/8192cu.conf with the following contents:
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
This prevents the power down/up cycles of the 8192 wifi chip.

//from https://www.miniand.com/forums/forums/2/topics/82?page=9
Mar 3

Yet Another False-Sharing Test 不指定

felix021 @ 2013-3-3 23:31 [IT » 硬件] 评论(0) , 引用(0) , 阅读(3151) | Via 本站原创
前天在 coolshell 里看到 并发框架Disruptor译文 以后 ,才感慨了CPU娘的傲娇,没一会儿就看到 Dutor 同学的 A False-Sharing Test ,发现差距好大(4线程4倍- ,16线程8倍+ ,我用dutor的代码实测16线程性能差距接近20倍),于是也写了段小代码来测试它。跟dutor同学不一样,我用的是 c 实现的,看起来可能没那么易读。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/time.h>
#include <limits.h>

void *tester(void *arg)
{
    long *nloop = (long *)arg; //这里之前笔误写成int了。
    while ( (*nloop)-- );
    return NULL;
}

int driver(int nthread, int nloop, int npad)
{
    size_t size = npad + sizeof(long); //每个线程占用sizeof(long) + npad的空间
    char buff[size * nthread];
    pthread_t th[nthread];

    struct timeval s, e;
    gettimeofday(&s, NULL);

    for (int i = 0; i < nthread; i++) {
        int *arg = (int *)(buff + size * i);
        *arg = nloop;
        pthread_create(&th[i], NULL, tester, (void *)arg);
    }

    void *pret;
    for (int i = 0; i < nthread; i++)
        pthread_join(th[i], &pret);

    gettimeofday(&e, NULL);

    return (e.tv_sec - s.tv_sec) * 1000000 + e.tv_usec - s.tv_usec;
}

int main()
{
    int nloop = 1024 * 1024 * 128, nthread = 16, npad, best_padding = 0, best_usage = INT_MAX;
    printf("nloop = %d, nthread = %d\n\n", nloop, nthread);
    for (npad = 64; npad >= 0; npad -= 8) { //之所以步长为8是为了避免非8字节对齐long可能有的性能损失
        int i, usage = 0;;
        for (i = 0; i < 3; i++)
            usage += driver(nthread, nloop, npad);
        usage /= 3;
        if (usage < best_usage) {
            best_usage = usage;
            best_padding = npad;
        }
        printf("padding: %2d, time usage: %12d\n", npad, usage);
    }
    printf("\nbest padding: %2d, time usage: %12d\n", best_padding, best_usage);
    return 0;
}

引用
$ gcc false_sharing.c -lpthread -std=c99
$ ./a.out
nloop = 134217728, nthread = 16

padding: 64, time usage:      491395
padding: 56, time usage:      477760
padding: 48, time usage:      853594
padding: 40, time usage:      834318
padding: 32, time usage:      905200
padding: 24, time usage:      940989
padding: 16, time usage:      991595
padding:  8, time usage:      1040412
padding:  0, time usage:      1112716

best padding: 56, time usage:      477760

该机器使用的是4颗4核8线程的Xeon E7520@1.87GHz (16个物理核心32个逻辑核心),64GB RAM,/proc/cpuinfo里的cache_alignment是64

可以看出来,padding=56(也就是正好对齐到一个cache行)的时候效率最高,是没有填充时的2倍+的效率,虽然明显,但是显著地没有dutor的测试那么夸张。

把dutor的代码稍微改了下,s[ith].n = NLOOP,且pthread_create的时候传入的参数改成 (void *)&(s[ith].n),然后hook程序改成
size_t *n = (size_t *)args;
while ( (*n)-- );
return NULL;

其运行效率提升显著,padding=56的时候能快10%左右,而padding=0的时候能快达7倍之巨,最终的性能差距大约可以降至 3 倍的差距。这说明dutor的测试方法并不是测试裸的性能差距,带来的了一定的误差。

由于现在多数CPU都已经有了共享的L2或者L3 Cache,Cache Line失效的问题得到了相当的改善,不过不同物理CPU上仍然需要注意这个问题。

然而有一点我不能理解,这个修改对两种情况的影响竟相差这么大,这里头又有什么玄机呢...... #UPDATE: 后根据dutor的测试,我去掉了 for 循环中用到的循环变量 i 之后,性能差距立即将至2倍左右,修改循环的方向或者将for改成while则无效,因此这很可能是分支预测失效带来的问题了。
Nov 22
贱板 GA-880GM-USB3 rev3.1 很不幸买的时候没有注意,只有SATA II。怀揣Hitachi 7k1000,垂涎M4性能良久,无奈囊中羞涩。

最近看到×讯的Corsair Vengeance 4G*2特价299,于是入了一对,恰逢×迅搞活动,拿到了1000-100的优惠券,M4 64G=725-100,价格就还不错,于是于是一狠心,跟别人凑单买了这个M4 64G。

因为是在公司收到货的,所以提前带了个USB2.0的移动硬盘盒,装上测试了一下,惨不忍睹,读取30写入20,连我的S102 16GB都不如(35/25),但是读写延时还是很给力了,分别是0.1/0.2ms。大概扫了一下确认全盘读取没有问题,于是等回家再测。

亏得先前买了个2.5=>3.5的架子(把移动硬盘卸下来装上去了),于是到家以后马上把M4架上去折磨。AS SSD Benchmark一测,不对,分数才165,坑爹啊!后发现原来不知道啥时候把BIOS里的SATA改成了Native IDE(但分区是4K对齐的)。于是sysprep了一把(否则重启会蓝屏),然后把BIOS改回AHCI,正常了,418分,0002固件,中规中矩,貌似大家64G@SATA2都是这个分数吧。

点击在新窗口中浏览此图片
分页: 1/6 第一页 1 2 3 4 5 6 下页 最后页 [ 显示模式: 摘要 | 列表 ]