Spectre和Meltdown相关

过完年第一天上班,我抽空看了一下Meltdown漏洞的机制,这里有一篇Raspberry Pi的Blog讲的很好。看完了解了个大概,感叹现代的处理器越来越先进复杂,触发漏洞的是不是单单一个子系统,而是CPU一堆子系统构成的机制(内存缓存、乱序执行、分支预判和Speculative execution),而且都是跟CPU性能相关的核心部件,所以修复起来肯定要伤筋动骨了。

这次的攻击是side-channel attack(翻译成旁路攻击吗?),就是类似观察系统执行指令消耗的时间去推测具体执行了什么(内存缓存对时间影响很大,所以可以判断出来地址时候缓存),这个攻击只能是查看内核或者别的进程的内存数据,还修改不了内存,不过跟之前的DRAM Row hammer结合起来就威力比较大了:)。

最后看了一下ARM受此漏洞的影响,看到A8受到影响,看来A8用了Speculative execution, Raspberry Pi用的是A7不受影响。

Apache频频Crash

自从换到WordPress后Apache频频Crash,每次都得手动重启Apache(怀念以前小巧的Python博客)-_-!!!。最近比较忙也懒的理,我推测是VPS内存太小(512M),伺候不好MySQL和Apache这些大爷啊:)。前几天查看了下进程列表发现MySQL内存飙到150M了,实在忍无可忍便优化了一下MySQL,网上大致的意思是Innodb引擎耗内存,换用MyISAM。

修改/etc/mysql/my.cnf,在[mysql]里加入

default-storage-engin=MyISAM
loose-skip-innodb

注意MySQL5.5.18中skip-innodb已经改成loose-skip-innodb了。

重启MySQL,发现内存占用一直保持在50M内,效果还不错。顺便关闭了一些不要的服务(DNS等),如果Apache还Crash,那得优化Apache了-_-!!!。

参考

http://www.justwinit.cn/post/4785/

Ubuntu装Win7双系统

最近朋友老是推荐我装Win7,禁不住劝告就装了一下试试。一般来说要先装Windows再装Linux,这个地球人都知道。因为windows回覆盖MBR的引导记录,如果预先装了Linux那你就倒霉了(现在有了grub4dos情况好一点了)。反观Linux,因为有神器grub什么都能引导,那就不用怕覆盖了:)。

我已经装了Ubuntu,为了体验Win7就不能用普通方法安装了。

分区

首先第一步就是划分一个主分区给Win7(windows一定要装在主分区上,而不是逻辑分区)。我用Ubuntu Live CD启动,用了gparted无损分区软件搞定(特别适合分割调整分区,而且不用担心数据丢失,理论上是的)。最后的分区如下,/dev/sda4是给Win7的,分了40G的空间(Win7很耗空间)。其他要注意的是要去掉/dev/sda1的Boot标记(Linux用不到,主要是留给Windows用的),只有一个主分区需要Boot而且是/dev/sda4。

Device     Boot     Start      End       Blocks     Id  System
/dev/sda1            2048    20000767     9999360   83  Linux
/dev/sda2        20000768    20391935      195584   82  Linux swap / Solaris
/dev/sda3        20393982   894525439   437065729    5  Extended
/dev/sda4   *   894525440   976771071    41122816    7  HPFS/NTFS/exFAT
/dev/sda5        20393984   894523391   437064704   83  Linux

备份MBR

下一步是备份MBR,因为Win7会修改MBR,如果要找回之前的Ubuntu只能恢复MBR:

sudo dd if=/dev/sda of=./mbr.txt bs=512 count=1

这里扯一下MBR,用hexdump看看mbr.txt

hexdump mbr.txt

基本上Linux和Win7的分区表识别是相同的(4个分区,每个分区有分区类型:例如5表示扩展分区,其他的是什么文件系统),不同在于分区表前的446个字节。所以恢复是只要恢复MBR的446个字节。

装Win7

这个不用多说,地球人都会。

恢复MBR

装完了Win7当然进不去Ubuntu了,所以用Live CD启动进去恢复MBR了。

sudo dd if=./mbr.txt of=/dev/sda bs=446 count=1

更新Grub配置

恢复MBR后进入Ubuntu更新Grub配置,Grub会扫描分区从而识别Win7。

$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-34-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-34-generic-pae
Found linux image: /boot/vmlinuz-3.2.0-33-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-33-generic-pae
Found linux image: /boot/vmlinuz-3.2.0-32-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-32-generic-pae
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda4
done

OK,大功告成。重启电脑,按住Shift键进入Grub选择Win7就就去了。进了Win7才发现没有网卡驱动、无线驱动,偏偏我的Dell笔记本是个裸机,连官网都找不到Win7驱动-_-!!!,看来还是Linux好啊。

BTW:今天发现Win7的设备管理器里可以在线搜索驱动,这个比较创新啊:)。A卡驱动仍旧没着落,无法安装,暂时用了Intel的集成显卡驱动。