Macbook Pro 三系统 Mac + Win + Linux 安装攻略

Macbook Pro 三系统 Mac + Win + Linux 安装攻略

前几天把笔记本清空重装,顺便整理一下 Macbook Pro 装三系统的攻略。这个应该是最简单的方案了,不用装 rEFIt 引导分区,也不用再手动运行 GRUB 修复 Linux 或 Windows 的引导。

0.1 技术思路,简要地说,就是 Macbook 用 GPT 管理硬盘分区,但 Windows 的 MBR 只能识别 GPT 的前四个分区。所以先在 Mac OS 下用 BootCamp 划出 Mac 以外的分区,然后先用 Linux 安装盘的工具把整个硬盘分区,把 Win 装到第四个分区,再安装 Linux 顺便用 GRUB 自动引导 Win 。

0.2 Win 和 Linux 都是用光盘安装,没有光驱的机器,请去自行查询如何用 ISO 制作 Macbook 的 USB 安装盘——其实满复杂的,新人建议去找个外置光驱……

0.3 安装环境:
Macbook Pro 5.5(2009年款,另外附上作为非果粉当年的吐槽评测
Mac OS X 10.8 Mountain Lion(10.6 Snow Leopard 之后的都可以,之前的没试过)
Windows 7,XP 也可以
Ubuntu 12.04 LTM —— 推荐新人和懒人用这个版本。最新的12.10安装盘内置的 partman 分区软件在 Mac 下会报错。也可以用其它发行版如 Xubuntu 12.04 之类,但 Xubuntu 安装盘自带的 GRUB 包好像不全,安装过程中建议把网络连上自动更新,否则引导程序可能会自动安装失败,可以事后手动安装,但不叫做简单了。

1 安装 Mac OS,安装前用 Mac 安装盘里的【磁盘工具】,把要安装的硬盘设成一个分区(Mac OS),分区方式选择 Guid 。 / 没有安装盘的,也可以找个移动硬盘,Guid 分区后把现有系统映像过去,用移动硬盘启动,Guid 现有分区后,再映像回来。——总之就是确保 Mac OS 所在硬盘是 Guid 格式的分区,不然 BootCamp 不能通过。已有 Guid 系统的可以直接到下一步。

2 Mac OS下,放入 Windows 安装盘( BootCamp 要检测到 Win 安装盘才工作),【应用程序 - 实用工具 - BootCamp】,选择安装 Win ,划分区,系统重启时按【Option】键进入 Mac 引导界面,按退出键退出 Win 安装盘,插入 Linux 安装盘。

3 从 Linux 安装盘启动,不要直接安装,选择【Try Ubuntu】,打开【终端 Terminal】,输入【sudo gparted】,在 gparted 中将现有硬盘分区:

如图,sda1 和 sda2 是 Mac OS 的系统分区,不要动,后面有1个(BootCamp做的 Win 分区)或2个(可能有的 Mac 会留个系统恢复区)分区,把这些全部删除,重新添加分区;

sda3 是我硬盘中最大的分区,作为三个系统共同的数据分区,可以格式化成 ext2(推荐,Mac和Win都要装驱动识别、后期还要在Linux下调整权限)、NTFS、或者FAT32(其实这个最方便,但有单个文件4G的限制);

sda4 是给 Windows 留的分区,建议格式化为 FAT32,在Win安装界面下再重新格为 NTFS(如果直接格 NTFS,安装Win时可能不识别)。另外传说 Win 一定要装在第4个分区,装在第3个会引导失败,我以前试过一个好像也没问题,懒得多试了;

sda5 是Ubuntu分区,这后面的分区Win都无法访问了。随便你格式化成 ext2/3/4、ReiserFS 都可以。如果不需要数据分区的话,把 Linux 装到 sda3 也无所谓;

sda6 是Linux的交换分区,内存够大的话,没有也可以。

点击【√】确认所有修改,退出系统,关机。

4 开机,按【Option】,换碟,从 Win 安装盘启动,安装 Windows 时选择高级自定义分区,分区界面里只显示前四个分区(后面的显示未分配,不要动),把第4个分区格式化,安装 Win 到第4个分区。和一般装Win时一样,过程中会重启几次,直到 Win 全部装完。关机。

5 开机,换 Linux 安装盘,安装 Ubuntu 。安装类型选择【Something else】,打开分区软件,挂载要安装的 Linux 分区( /dev/sda5 → / 、 /dev/sda3 → /home or /data )。最下面的Boot Loader安装位置,确认是 /dev/sda 。

安装完成,每次开机时按【Option】键,选择启动 Mac OS 还是 Windows(可以在 Mac 或 Win 的 BootCamp 设置默认),选择 Win 后进入 Linux 的 Grub 菜单,选择进入 Linux 还是 Windows(可以在 Linux 里更改默认项和等待时间;另外从 Grub 里启动 Mac OS 似乎不管用的,以后可以研究或者直接删掉)。

好久没写技术帖了。

Bitvise Tunnelier + AutoProxy / Switchy 翻墙 端口设置

用SSH翻墙的一些人,在一些电脑上,按照网上那些攻略(自己去搜)配置好Bitvise Tunnelier + AutoProxy(Firefox)或Switchy(Chrome)后,仍然不能翻墙上网,但此时Bitvise Tunnelier显示连接正常。

此类问题主要是电脑内用于连接Bitvise Tunnelier和AutoProxy的监听端口被禁用,尤其是那些装了Comodo或360之类防火墙的用户,Bitvise Tunnelier可以正常连接到SSH,但AutoProxy不能通过机内端口和Tunnelier通信,所以网络还是连不上去。

网上搜了一下,居然没搜到这方面的解决方案。个么贴出来share一个。

我本来以为需要在各自的防火墙软件界面里面,根据不同情况,随机应变进行修改的。后来发现只要在windows自带的防火墙里添加端口例外就可以了。我也不明白为什么装了其它的防火墙,这个还能在windows自带防火墙里面设。总之这样就可以了,大家试一下。

Win XP
------------
控制面板 - Windows防火墙 - 上面三页面板中的 例外(Exceptions) - 添加端口
名称随便起;端口号7070(就是你在Tunnelier和AutoProxy里用的那个,要一致),TCP

Win 7
------------
控制面板 - Windows防火墙 - 高级设置 - Inbound Rules - New Rule - 端口 - TCP 7070 - 允许 - next - 名称随便起

测试的时候AutoProxy最好用Global模式。有时候有些网站上不去(尤其是youtube),不是翻墙软件的问题,而是你所用网络的DNS,把网站地址解析到了其它山寨ip,这就需要手动更改本机DNS地址了。

景深与画幅的关系

Ted GUO: 仔细看了弥散圈概念和景深的推导过程,发现景深与胶片/CCD尺寸相关。在景深计算器里照相机/底片尺寸是参数。所以胶片机镜头上的景深标尺不能直接用在非全副数码机上,超焦距也不同。呃,幸好早发现,没拍多少。

呃,这么说倒是没错。但问题比你想象滴复杂。。。

弥散圆(CoC)和景深(DoF)是两个概念。弥散圆是指焦外一点在底片上形成的像斑大小,就是这个公式(wiki:示意图):

可以看出,弥散圆大小是由(光孔-A,焦距-f,像距-S)决定,也就是教材中的景深三要素,和相机型号、画幅大小无关,任何一支镜头,三要素固定后,把后面的机身换成数码、非全幅、120甚至大画幅,形成的弥散圆不变。

景深则是人为的定义。它首先给定一个常数c,然后计算形成的弥散圆小于c的那段像距范围。在定义c时,首先认定人眼在25cm外的分辨率是0.2mm,然后计算把照片放大到10英寸(25cm)时,照片上的0.2mm对应底片上多长的距离。底片越小,0.2mm对应的弥散圆c越小,成像小于c的范围就越短,景深也就越小。直观上很好理解:小底片需要比大底片放大更多倍才能到10寸,那些本来在景深范围内还算清晰的,放大了就会更不清晰。

所以,与其说“景深与胶片/CCD尺寸相关”,不如说与你要把照片放多大相关。镜头上那个景深标识只是理想条件下(放大10寸,距离25cm)的数值。当你在显示器上把同一张照片全屏显示和嵌在网页里显示,这两种方式的景深就已经不一样了。另外有的时候我们需要的未必是这种定义下的景深,买全幅相机的目的之一是为了印出更大的图片,同样的CCD技术下,同一个镜头,如果把全幅和非全幅的相机都印出和各自的最大分辨率对应的1:1的照片,凑近看,它们的焦外清晰程度是完全一样的。所谓非全幅其实就是在全幅画面中挖出中间一块,然后非要把这一块放大到原先大小去比哪个清楚。。。那个“与CCD尺寸相关”的说法实在是欺侮弱小 ^-^

当然了,照片越大,通常观看的距离就越远,所谓(10寸,25cm)的定义,其实指的是一个大约53度的视角。所以说【胶片机镜头上的景深标尺不能直接用在非全副数码机上】,这么说完全正确。但景深这种凭感觉定义出来的东西,受影响的因素太多了。景深受三要素尤其是像距(是的,新人想玩景深的话,凑近了拍效果远比用大光圈明显)的影响远远大于受画幅的影响。甚至在把照片导出到JPG过程中做了自动锐化的话,景深也被改变了。除非是摄影棚里拍静物广告,否则也没什么人需要精确计算这个----控制在一个数量级内也就够了。

想准确地计算画幅改变后的新的景深范围,是很难的。这个变化幅度随三要素而改变,手头没有专门软件,基本不可能换算出来。但所幸超焦距的变化是线性的。譬如Canon 500D的等效焦距要x1.6,全幅50mm镜头在f8光圈下的超焦距为大约10m,也就是说从5m到无穷远的距离可以同时清晰;那么在500D上只需简单把这个数值x1.6:焦距放在约16m,从8m到无穷远同时清晰。

而且弥散圆随画幅的变化也是线性的。上面的例子看似少了3m的清晰范围,实际上这5m-8m内的物体,其清晰程度也就从原先的一个点变成了最多1.6个点,和你照片是按1280 * 960还是800 * 600显示,造成的影响差不多,小于锐化造成的影响。这种改变你拍人文完全无视也无所谓的。

但不管怎样,不要把焦距等效成50mm * 1.6 = 80mm再去求景深,完全不一样的。

由此引发的一些相机上的问题:
----------------------------------------
1、那些非全幅镜头上的景深标尺,是已经修正过的么?(我没怎么用过非全幅头,它们有标景深咩?)

2、故老相传,在一些自动单反相机尤其是Canon上,存在一种叫景深优先曝光的东东。用户可以分别对需要的最近和最远清晰点对焦,然后相机根据范围自动计算出光圈。俺没用过这东东,不知道全幅和非全幅的计算结果有没有区别?

3、关于景深预测。单反相机中,本来在胶片/CCD位置的成像经三次反射进入拍摄者眼中,其景深的观测环境也应该满足(CCD画幅 : 内部光路总长度)的比例关系。如果你觉得取景器里的视角不像是53度的话(绝大多数都不是),那么这个景深预测本身就是错滴。当然我说过的这种弥散圆一两个点的变化完全可以无视,再继续掰就是矫情了。

re ninety:
----------------------------------------
其实我们平时拍照时,真正想要关注的【景深效果】,并不是指这个清晰的范围(任何照片放大到一定规模,谈清晰什么的就都没意义了),而是弥散圆随着物体在焦点前后移动而放大的速度。也就是

c / |S2 - S1| = A * f / S2 * ( S1 - f )

这个就是纯粹的三要素了:景深效果的强烈程度,和光孔大小成正比、和镜头焦距成正比、和距离成反比、和画幅和CCD无关。

EXIF vs ICC

(本文不提供名词解释。)

前几天打算去掉手头一批照片的exif信息(主要是去掉拍摄日期保护隐私)。然后想到:这样做会不会同时去掉照片的色彩空间/内嵌ICC信息?照片信息中对色彩空间的定义,是不是和exif信息放在一起的?

首先要找到能够识别图片的色彩空间和exif的软件。专业图片处理工具如Photoshop、GIMP,能够识别图片内嵌的色彩空间,但似乎需要另外的插件才能读exif。绝大多数看exif的常用小工具(如Exif Viewer)都不支持查看色彩空间。Windows下有个叫PhotoMe的免费软件,可以查看/修改图片的各种信息,用着还不错。

查了下Exif的标准,在EXIF Sub IFD里,确实有一个地址[A001]被定义为ColorSpace的,但我试过的所有exif软件里都看不到这个字段的内容(回头试试直接源文件寻址),而photoshop等软件嵌入色彩空间信息时,似乎也是存在了别的地方,和这个字段无关。所以貌似exif里是可以定义色彩空间的,但似乎没人这样用过。。。

其实照片的头信息中,有很多种不同的结构标准:Exif、IPTC、GPS、ICC、XMP....之间彼此独立,可以共存于照片文件中。照片的色彩空间信息是存在ICC的部分,和Exif无关。所以理论上移除exif信息,是不会影响图片的icc信息的。但事实上很多号称移除exif的软件,都是不分青红皂白,把文件的很多其它信息一起删除,慎用。推荐一下jhead,有选项可以控制只删除exif还是删除所有信息,多平台,命令行模式,支持批处理。

jhead -de -di -dx ×.jpg
移除所有jpg文件的Exif、IPTC、XMP信息,保留ICC色彩空间信息

另外发现有些软件(如GIMP)在把照片存贮为sRGB空间时,实际上并没有往照片的ICC信息中写入任何内容,而是直接存成了无色彩定义的文件(?待验证)。虽然这种无定义的文件在显示时基本都被默认当成sRGB了,但理论上用户可以把自己的默认显示定义为其它非sRGB空间,所以GIMP这样处理似乎不大好?

最后做一下试验。八张图

0.  1.
2.  3.
4.  5.
6.  7.

0. 源文件,包含exif信息,指定sRGB空间(Lightroom导出)
1. 在GIMP中,把0重新指定(Assign)为sRGB空间,但这时候另存为的文件其实是没有指定任何icc的

2. 在GIMP中,把0不做任何转换,直接指定为AdobeRGB空间(Assign Color Profile)
3. 在GIMP中,把0转换到AdobeRGB空间(Convert to Color Profile),注意2和3的区别!

4. 移除2的exif信息,保留icc
5. 移除3的exif信息,保留icc

6. 移除2的全部信息,pure jpg
7. 移除3的全部信息,pure jpg

童鞋们可以思考一下,这八张图都应该是什么效果(完全看不出区别的请自剐双目)

答案(用鼠标选中下列文字):
--------------------
一共有三种效果:
A - 原图效果
B - sRGB被显示成AdobeRGB,造成的失真
C - AdobeRGB被显示成sRGB,造成的失真

在支持色彩空间的浏览器,如Firefox(需要改变默认配置#)、Safari上,效果为AABABAAC
在不支持色彩空间的浏览器,如IE、Chrome上,效果为AAACACAC

--------------------

Update:发现2012年以后的 Chrome 好像增加了色彩管理功能,可以正常显示了。只是时不时还传出中间某些版本功能突然失灵的消息……

这个网站通过鼠标悬浮动态演示,几种效果间的对比更好看。

升级到 WordPress 2.7

本站更新技术日志

因为文件结构变动较大,不在原来2.6的基础上做版本管理了,另开了一个2.7的branch,把需要的改动手动合并过去。

最大的变动是采用了Thread Comment,可以针对某条留言进行回复。本来wp 2.7自身添加了留言回复模块,但需要在使用的主题里更改代码,弄着很麻烦。所以还是用了刚升级到能够兼容2.7的wordpress-thread-comment插件,感觉很好用。反正后台数据结构都一样,以后也有再换的余地。

之前我都是延续从歪酷留下来的习惯,直接编辑留言,用缩进<blockquote>的方式做回复。这次直接在数据库里写了几句SQL,把原来的那些回复分离成现在的thread方式。有需要的可以参考一下(随手写的,懒得做优化了)。

CREATE TABLE IF NOT EXISTS `comment_tmp` (
`id` bigint(20) unsigned NOT NULL,   `idx1` int(10) unsigned default NULL,   `idx2` int(10) unsigned default NULL,
`c1` text,   `c2` text,   `c3` text,   PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

insert into comment_tmp (id,c1) (select comment_id,comment_content from wp_comments where comment_content like '%<blockquote>%');
update comment_tmp set idx1=locate('<blockquote>',c1);
update comment_tmp set idx2=locate('</blockquote>',c1);
update comment_tmp set c2=trim(trim('\n' from substring(c1,1,idx1-1)));
update comment_tmp set c3=trim(trim('\n' from substring(c1,idx1+12,idx2-idx1-12)));

INSERT INTO wp_comments
(comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_approved, comment_agent, comment_type, comment_parent, user_id)
(select
comment_post_ID, 'fivestone', 'mail@mail.com', 'http://blog.fivestone.info', '', DATE_ADD(comment_date,INTERVAL 2 MINUTE),DATE_ADD(comment_date_gmt,INTERVAL 2 MINUTE), c3, 1, '', '', id, 1
from wp_comments,comment_tmp where wp_comments.comment_id=comment_tmp.id);

update wp_comments set comment_content = ( select c2 from comment_tmp where id=comment_id) where comment_id in (select id from comment_tmp);

DROP TABLE `comment_tmp`;

留言表wp_comments中,comment_parent字段对应所要回复的留言的comment_id;user_id对应做出评论的人(fivestone)在wp_users表中对应的用户id。SQL运行后,新生成的那些fivestone的留言不能显示avator,后来发现如果user_id不为0的话,系统是根据wp_users表中用户注册的email而不是留言里填的email取获取avator,更改用户信息后一切正常。

-----------------------------
TODO:

留言的分页显示功能需要测试,不过现在每篇文章也就十几条评论,一时还不需要。

因为用的是英文版,后台管理页面的汉字字号很小,看起来不舒服,回头要调一下。

自动发邮件功能还不能用。用Configure SMTP和Swift SMTP插件都搞不定。后者发测试信时报错:

Uncaught Error of type [swift_connection_exception] with message [Authentication failed using username 'reply' and password '**********']

或者(用gmail):

Uncaught Error of type [swift_connection_exception] with message [The SMTP connection failed to start [tls://smtp.gmail.com:465]: fsockopen returned Error Number 110 and Error String 'Connection timed out']

-----------------------------
现在使用的插件:

中文 WordPress 工具箱 1.2
Disable autosave 0.1
Peter's Random Anti-Spam 1.0.5
Simple Tags 1.5.8-2.7
Twitter Tools  1.0
Wordpress Thread Comment 1.4.9.2
WP-DownloadManager 1.31
Google XML Sitemaps 3.1.0.1

-----------------------------
停用wp-db-backup。用这个插件导出的SQL,导入到本地机器后。总是会出现一两个字的乱码(如图)。在文本编辑器里查看SQL文件,乱码就已经存在了。但是如果把这份SQL不做修改直接备份回原来的服务器,乱码的地方又恢复成正常的汉字...搞不懂。直接用phpMyAdmin里的导出功能,还没发现出现这样的问题。