July 2010 Archives

这几天改 FreeBSDcoretemp(4) 遇到了一个问题。直接使用 rdmsr 的话,如果那个 MSR 不存在,则会触发 #GP(0),不了解 CPU 型号的情况下直接去杵肯定是不行的。后来翻了一下 cpuctl(4) 的代码发现 FreeBSD 上也有 rdmsr_safe。它的实现并不复杂( sys/amd64/amd64/support.S):

        movq    PCPU(CURPCB),%r8 // %r8 = PCPU(CURPCB); 将当前CPU的编号保存到r8。
        movq    $msr_onfault,PCB_ONFAULT(%r8) // 设置发生异常时调用msr_onfault。

然后是翻译 AMD64 ABI:

        movl    %edi,%ecx // 参数1放到ecx
        rdmsr // 实际执行rdmsr(将ecx指定的MSR的高、低32bit结果放到edx、eax中)
        salq    $32,%rdx  // rdx <<= 32
        movl %eax,%eax // 将rax最高32 bit清零
        orq     %rdx,%rax // rax |= rdx
        movq    %rax,(%rsi) // rax 存入 *rsi
        xorq    %rax,%rax // 返回值默认为0

最后恢复先前的异常处理状态。

        movq    %rax,PCB_ONFAULT(%r8)
        ret

msr_onfault是一个很简单的处理程序,它将异常处理指针清零,然后将rax置为EFAULT,并直接返回。

SSH提供了很多种不同的身份验证,其中最常用的两种便是密码验证和基于公钥/私钥的身份验证。

基于公钥/私钥的身份验证有非常多的优点。

首先,公钥/私钥可以从根本上挫败监听来截取验证信息的企图。

公钥/私钥验证本质上是一种 零知识证明。即,在身份验证的过程中,服务器并不需要知道用户的私钥是什么。【注:公钥/私钥验证并不是零知识证明,感谢 snnn 指正。】

公钥/私钥验证在身份验证的过程中,服务器只需要知道用户的公钥,而用户则使用自己的私钥对一组数据签名,并在服务器端进行验证。服务器并不需要知道用户的私钥。目前为止,还没有有效的方法能从这些信息推导出私钥。

与密码相比,这种方法有显著的优点:在验证身份的那一方,没有任何办法可以拿到用户的私钥,即使获得了那台机器的root权限。验证信息只能使用一次----这意味着,也没有办法把这个验证信息用于在其他地方再次验证身份。

其次,公钥/私钥要比密码长的多,因而可以挫败通过穷举的方式破解的可能性。

典型的密码是8位字符,假设可以使用大小写字母、数字和特殊符号,可选的范围无非是96^8而已,我们不妨算它128^8。典型的私钥有2048个bit,如果按7个来分组的话,有128^(2048/7)。当然,最高位和最低位一定是1,但向下取整,也有128^292种。

最后,除了吃点带宽之外,SSH口令穷举对于仅采用公钥/私钥验证的服务器安全不构成任何威胁。

通过适当的配置sshd,可以让其直接明确地告诉对方此处不支持口令验证,并且能够容易地将攻击者记录在案,并将数据反馈给防火墙来减少带宽的占用。

Intel CPU的Tj(max)的获得

| 1 Comment | No TrackBacks

本文主要是笔记,不保证其正确性,也不保证其不导致死机、崩溃或任何其他问题。


CPU的Tj(max)值可以通过读 MSR IA32_TEMPERATURE_TARGET,即 0x1a2 来获得【1】。目前,Intel正式的开发文档中并没有明确对这一MSR进行说明。早期的CPU中,Tj(max)值需要加上40到50摄氏度,目前不清楚具体哪些CPU必须如此,但从公开文档来看,已知:

Xeon 7100系列需要加修正值。其中,150W TDP的CPU需要加50摄氏度;95W TDP的CPU需要加40摄氏度。【2】

Xeon 5200系列不需要加修正值。【3】从文字上推测,5200以后的系列都不需要加修正值。

Xeon 5400系列不需要加修正值。【4】

使用LGA771 SMT socket、L3 cache不超过8M的Xeon MP系列需要加修正值50摄氏度。【5】

双核 Xeon 2.8G 处理器(根据文档推测,Prescott、Nocona和Potomac系列)需要加修正值50摄氏度。【6】

系统总线800MHz的Xeon处理器需要加修正值50摄氏度。【7】

双核Xeon 5000系列需要加修正值60摄氏度(没错,是60摄氏度,不是50摄氏度)。【8】

Xeon 7400系列不需要加修正值。【9】

支持超线程的Mobile Pentium 4处理器需要加修正值50摄氏度,同时,这个值的范围是0-30摄氏度。【10】

姑且推断5200系列之后不需要修正值?(model 0x17之后)能够公开获得的文献中,提到这个寄存器最早的一份是2004年6月出的第一版。

FreeBSD目前不支持从这个MSR直接搞Tj(max)温度出来,我做了个patch,测试了Xeon L5630和Core i7 CPU,不过其他的暂时还没测过。

Linux驱动这部分逻辑很让人费解(drivers/hwmon/coretemp.c):如果读MSR得到了有效的值(80-120之间,而文档【1】上说的至少70度是存在的。如果读MSR失败,或驱动认为值无效,则用了一套相当奇怪的逻辑去猜测实际的数值,某些型号的Atom使用旧的逻辑去判断,等等。问题是(1)这段相当的混乱,而且与文档有很多不一致的地方;(2)为什么不先判断CPU型号再访问MSR呢?


参考文献

【1】CPU Monitoring With DTS/PECI。Intel 文档编号322683。

【2】Dual-Core Intel® Xeon® Processor 7100 Series Datasheet.Intel 文档编号314553。

【3】Dual-Core Intel® Xeon® Processor 5200 Series in Embedded Applications, Thermal/Mechanical Design Guidelines。Intel文档编号319012。

【4】Quad-Core Intel® Xeon® Processor 5400 Series, Thermal/Mechanical Design Guidelines。Intel文档编号318611。

【5】64-bit Intel® Xeon™ Processor MP with 8 MB L3 Cache, Thermal/Mechanical Design Guidelines。Intel文档编号306753。

【6】Dual-Core Intel® Xeon® Processor 2.80 GHz, Thermal/Mechanical Design Guidelines。Intel文档编号309160。

【7】Intel® Xeon™ Processor with 800 MHz System Bus, Thermal/Mechanical Design Guidelines。Intel文档编号302661。

【8】Dual-Core Intel® Xeon® Processor 5000 Series, Thermal/Mechanical Design Guidelines。Intel文档编号313062。

【9】Intel® Xeon® Processor 7400 Series, Thermal/Mechanical Design Guidelines。Intel文档编号320337。

【10】Mobile Intel® Pentium® 4 Processor Supporting Hyper-Threading Technology on 90-nm Process Technology Datasheet。Intel文档编号302424。

"如果我当年去问顾客他们想要什么,他们肯定会告诉我:'一匹更快的马。'" 这告诉我们:顾客的意见虽然重要,但是只问用户的意见是做不出突破性的新产品的。

FreeBSDChina 最近又出现了很多垃圾广告等信息。针对一些常见的灌水机实现了一些临时的workaround,并且删除了大约3万2千的用户。

越忙越有人添乱。

补充:为论坛的链接增加了 rel="nofollow" 的标记。

nginx中的TLS/SSL配置

| 2 Comments | No TrackBacks

nginx可以作为很多种不同的用途。对Web服务器来说,nginx可以直接用作https服务器,也可以用于为现有的http Web服务器作为前端代理和负载平衡的同时提供https之用。

nginx支持TLS协议的SNI扩展(Server Name Indication,简单地说这个扩展使得在同一个IP上可以以不同的证书serv不同的域名;较早前唯一的办法是签署一个通配证书,即 CNAME 中为 *.delphij.net 这样的证书)。不过,SNI扩展还必须有客户端的支持,另外本地的密码学函数库,例如OpenSSL也必须支持它。

如果启用了SSL支持,nginx便会自动识别OpenSSL并启用SNI。是否启用SNI支持,是在编译时由当时的 ssl.h 决定的(SSL_CTRL_SET_TLSEXT_HOSTNAME),如果编译时使用的OpenSSL库支持SNI,则目标系统的OpenSSL库只要支持它就可以正常使用SNI了。

FreeBSD 8.0起的所有版本附带的OpenSSL均启用了SNI支持。这一特性是OpenSSL 1.0才开始默认启用的新功能,如果系统不是 FreeBSD 并且采用的是较早版本的 OpenSSL, 可能需要自行重新编译,并在config的时候指定enable-tlsext。注意:OpenSSL在多数系统中都有重要的其他用途,重新安装OpenSSL时,最好不要与厂商采用的参数差别太大;另外还有一种解决办法是安装到不同的目录并在运行程序的时候指定搜索路径或静态联编;FreeBSD不需要做这些配置,故不再赘述。

检查nginx是否支持SNI的方法是使用

nginx -V
来查看。

nginx version: nginx/0.8.45
TLS SNI support enabled
configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --with-ipv6 --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx-access.log --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module --with-pcre

以上标红的一行表示以目前的方式运行nginx时可以使用SNI。

使用SNI并不需要额外的配置,对nginx来说只需和HTTP主机一样配置多个https主机的server配置段即可。

以下是nginx中用于TLS的配置。可将其保存为一个单独的文件,例如 tls_param:

	listen	443; # 端口(IPv4)
        listen	[::]:443; # 端口(IPv6)

	ssl on; # 启用SSL
	ssl_session_timeout  5m; # SSL会话超时时间

        ssl_protocols  TLSv1; # 只启用TLSv1
        ssl_ciphers   TLSv1:+HIGH:-MEDIUM:-LOW:-EXPORT:-aNULL:-eNULL:@STRENGTH # 启用的加密算法,见下
        ssl_prefer_server_ciphers   on; # 协商时优先使用服务器指定的加密算法

采用的加密算法集具体请参见 OpenSSL 联机手册 ciphers(1)。这里只解释采用的选项:

  • TLSv1:TLSv1使用的加密算法组合
  • -MEDIUM:排除中等加密强度的算法组合
  • -LOW:排除低加密强度的加密算法组合
  • -EXPORT:排除出口级别强度的加密算法组合
  • -aNULL:排除不做身份验证的加密算法组合
  • -eNULL:排除不做加密的加密算法组合
  • @STRENGTH:按加密强度排序

除了上面这些配置之外,还需要和传统的http主机一样指定server_name(主机名),以及采用的证书文件和公钥/私钥对文件( ssl_certificate、ssl_certificate_key)。

2015-03-05更新:本文中部分干货已过时,本文本身也不再更新。请参阅 这张作弊条

SSL/TLS协议中,服务器证书是用于向客户端证明服务器身份的凭据,同时它还向用户提供了服务器的公钥,而服务器公钥则可以用来建立客户端到服务器的安全通讯(具体的通讯流程要比这个复杂,纯从技术而言,服务器的公钥主要用于与客户端进行会话密钥的协商)。

服务器的公钥只能确保拥有私钥的服务器(或人)能够解密信息,但它本身并不能确认服务器的身份。在实践中有很多种不同的方法来确保公钥确实来自受信任的服务器,在通常的SSL/TLS协商过程中,采用的方法是根据证书链来逐层验证公钥是否是有效的及其身份。简单地说,就是以安全的方法(例如安装光盘,或互相认证的签名等)事先将证书链上的某一个或某几个证书发给客户端,以便其验证最终用于服务器的安全证书。关于这一流程的具体细节,已经有很多文章进行了介绍,在此不再赘述。

如此,我们在实现采用SSL/TLS的服务器的时候,需要为证书准备的事项包括:

  • 找到一家被客户端信任的、具备签发证书资质的发证机构。发证机构可以是根CA(对于浏览器来说,通常可以在安全选项中找到类似"查看证书"之类的选项),也可以是这些根CA认可的二级发证机构。
  • 收集用于验证服务器身份的信息,例如服务器的FQDN,等
  • 生成一对用于SSL/TLS的公钥/私钥。

有了这些信息,就可以制作证书申请(CSR)供发证机构去签名了。一般来说,发证机构需要首先验证申请人的身份信息,然后对CSR提交的信息进行核对和签名,并将签名之后的证书发给申请者,或供其下载。下面以 FreeBSD、OpenSSL 为例介绍从生成公钥/私钥对到签发、安装证书的全过程。

一两个星期里,各地的大学都有毕业的班次,都有得多的毕业生离开学校去开始他们的成人事业。

学生的生活是一种享有特殊优待的生活,不妨幼稚一点,不妨吵吵闹闹,社会都能纵容他们,不肯严格的要他们负行为的责任。现在他们要撑起自己的肩膀来挑他们自己的担子了。在这个国难最紧急的年头,他们的担子真不轻!我们祝他们的成功,同时也不忍不依据自己的经验,赠他们几句送行的赠言,----虽未必是救命毫毛,也许做个防身的锦囊罢!

你们毕业之后,可走的路不出这几条:绝少数的人还可以在国内或国外的研究院继续做学术研究;少数的人可以寻着相当的职业;此外还有做官,办党,革命三条路;此外就是在家享福或者失业亲居了。

走其余几条路的人,都不能没有堕落的危险。堕落的方式很多,总括起来,约有这两大类:

第一是容易抛弃学生时代求知识的欲望。你们到了实际社会里,往往学非所用,往往所学全无用处,往往可认完全用不着学问,而一样可认胡乱混饭吃,混官吃。在这种环境里即使向来抱有求知识学问的人,也不免心灰意懒,把求知的欲望渐渐冷淡下去。况且学问是要有相当的设备的;书籍,实验室,师友的切磋指导,闲暇的工夫,都不是一个平常要糊口养家的人的能容易办到的。没有做学问的环境,又谁能怪我们抛弃学问呢?

第二是容易抛弃学生时代理想的人生的追求。少年人初次和冷酷的社会接触,容易感觉理想与事实相去太远,容易发生悲观和失望。多年怀抱的人生理想,改造的热诚,奋斗的勇气,到此时候,好像全不是那么一回事了。渺小的个人在那强烈的社会炉火里,往往经不起长时期的烤炼就熔化了,一点高尚的理想不久就幻灭了。抱着改造社会的梦想而来,往往是弃甲抛兵而走,或者做了恶势的俘虏。你在那牢狱里,回想那少年气壮时代的种种理想主义,好像都成了自误误人的迷梦!从此以后,你就甘心放弃理想人生的追求,甘心做现在社会的顺民了。要防御这两方面的堕落,一面要保持我们求知识的欲望,一面要保持我们对人生的追求。

有什么好方法子呢?依我个人的观察和经验,有三种防身的药方是值得一试的。

第一个方子只有一句话:"总得时时寻一两个值得研究的问题!"问题是知识学问的老祖宗;古往今来一切知识的产生与积聚,都是因为要解答问题,---要解答实用上的困难和理论上的疑难。所谓"为知识而求知识",其实也只是一种好奇心追求某种问题的解答,不过因为那种问题的性质不必是直接应用的,人们就觉得这是无所谓的求知识了。

我们出学校之后,离开了做学问的环境,如果没有一二个值得解答的问题在脑子里盘旋,就很难保持求学问的热心。可是,如果你有了一个真有趣的问题逗你去想他,天天引诱你去解决他,天天对你挑衅你无可奈何他,---这时候,你就会同恋爱一个女子发了疯一样,坐也坐不下,睡也睡不安,没工夫也得偷出工夫去陪她,没钱也得缩衣节食去巴结她。没有书,你自会变卖家私去买书;没有仪器,你自会典押衣物去置办仪器;没有师友,你自会不远千里去寻师访友。你只要有疑难问题来逼你时时用脑子,你自然会保持发展你对学问的兴趣,即使在最贫乏的知识中,你也会慢慢的聚起一个小图书馆来,或者设置起一所小试验室来。所以我说,第一要寻问题。脑子里没有问题之日,就是你知识生活寿终正寝之时!古人说,"待文王而兴者,凡民也。若夫豪杰之士,虽无文王犹兴。"试想伽利略(GALIEO)和牛顿(NEWTON)有多少藏书?有多少仪器?他们不过是有问题而己。有了问题而后他们自会造出仪器来解决他们的问题。没有问题的人们,关在图书馆里也不会用书,锁在试验室里也不会有什么发现。

第二个方子也只有一句话:"总得多发展一点非职业的兴趣,"离开学校之后,大家总是寻个吃饭的职业。可是你寻得的职业未必就是你所学的,未必是你所心喜的,或者是你所学的而和你性情不相近的。在这种情况之下,工作往往成了苦工,就感觉兴趣了。为糊口而做那种非"性之所近而力之所能勉"的工作,就很难保持求知的兴趣的生活的理想主义。最好的救济方法只有多多发展职业以外的正当兴趣与活动。

一个人应该有他的职业,也应该有他非职业的玩艺儿,可以叫做业余活动。往往他的业余活动比他的职业还更重要,因为一个人成就怎样,往往**他怎样利用他的闲暇时间。他用他的闲暇来打麻将,他就成了个赌徒;你用你的闲暇来做社会服务,你也许成个社会改革者;或者你用你的闲暇去研究历史,你也许成个史学家。你的闲暇往往定你的终身。英国十九世纪的两个哲人,弥儿(J。S,MILL)终身做东印度公司的秘书,然而他的业余工作使他在哲学上,经济学上,政治思想史上都占一个很高的位置;斯宾塞(SPENCER)是一个测量工程师,然而他的业余工作使他成为前世纪晚期世界思想界的一个重镇。古来成大学问的人,几乎没有一个不善用他的闲暇时间的。特别在这个组织不健全的中国社会,职业不容易适合我们的性情,我们要想生活不苦痛不堕落,只有多方发展。

有了这种心爱的玩艺,你就做六个钟头抹桌子工作也不会感觉烦闷了,因为你知道,抹了六个钟的桌子之后,你可以回家做你的化学研究,或画完你的大幅山水,或写你的小说戏曲,或继续你的历史考据,或做你的社会改革事业。你有了这种称心如意的活动,生活就不枯寂了,精神也就不会烦闷了。

第三个方法也只有一句话:"你得有一点信心。"我们生当这个不幸的时代,眼中所见,耳中所闻,无非是叫我们悲观失望的。特别是在这个年头毕业的你们,眼见自己的国家民族沉沦到这步田地,眼看世界只是强权的世界,望极天边好像看不见一线的光明----在这个年头不发狂自杀,已算是万幸了,怎么还能够保持一点内心的镇定和理想的信任呢?我要对你们说:这时候正是我们要培养我们的信心的时候!只要我们有信心,我们还有救。

古人说:"信心(FAITH)可以移山。" 又说:"只要工夫深,生铁磨成绣花针。"你不信吗?当拿破仑的军队征服普鲁士,占据柏林的时候,有一位教授叫做费希特(FICHTE)的,天天在讲堂劝他的国人要有信心,要信仰他们的民族是有世界的特殊使命的,是必定要复兴的。费希特死的时候,谁也不能预料德意志统一帝国何时可以实现。然而不满五十年,新的统一的德意志帝国居然实现了。

一个国家的强弱盛衰,都不是偶然的,都不能逃出因果的铁律的。我们今日所受的苦痛和耻辱,都只是过去种种恶因种下的恶果。我们要收获将来的善果,必须努力种现在新因。一粒一粒的种,必有满仓满屋的收,这是我们今日应有的信心。我们要深信:今日的失败,都由于过去的不努力。我们要深信:今日的努力,必定有将来的大收成。

佛典里有一句话:"福不唐捐。"唐捐就是白白的丢了。我们也应该说:"功不唐捐!"没有一点努力是会白白的丢了的。在我们看不见想不到的时候,在我们看不见的方向,你瞧!你下的种子早已生根发叶开花结果了!你不信吗?法国被普鲁士打败之后,割了两省地,赔了五十万万法朗的赔款。这时候有一位刻苦的科学家巴斯德(PASTEUR)终日埋头在他的化学试验室里做他的化学试验和微菌学研究。他是一个最爱国的人然而他深信只有科学可以救国。他用一生的精力证明了三个科学问题:(1)每一种发酵作用都是由于一种微菌的发展;(2)每一种传染病都是一种微菌在生物体内的发展;(3)传染病的微菌,在特殊的培养之下可以减轻毒力,使他们从病菌变成防病的药苗。

这三个问题在表面上似乎都和救国大事业没有多大关系。然而从第一个问题的证明,巴斯德定出做醋酿酒的新法,使全国的酒醋业每年减除极大的损失。从第二个问题的证明巴斯德教全国的蚕丝业怎样选种防病,教全国的畜牧农家怎样防止牛羊瘟疫,又教全世界怎样注重消毒以减少外科手术的死亡率。从第三个问题的证明,巴斯德发明了牲畜的脾热瘟的疗治药苗,每年替法国农家减除了二千万法朗的大损失;又发明了疯狗咬毒的治疗法,救济了无数的生命。所以英国的科学家赫胥黎(HUXLEY)在皇家学会里称颂巴斯德的功绩道:"法国给了德国五十万万法朗的赔款,巴斯德先生一个人研究 科学的成就足够还清这一笔赔款了。" 巴斯德对于科学有绝大的信心,所以他在国家蒙奇辱大难的时候,终不肯抛弃他的显微镜与试验室。他绝不想他有显微镜底下能偿还五十万万法朗的赔款,然而在他看不见想不到的时候,他已收获了科学救国的奇迹了。

朋友们,在你最悲观失望的时候,那正是你必须鼓起坚强的信心的时候。你要深信:天下没有白费的努力。成功不必在我,而功力必不唐捐。

原载1932年7月3日《独立评论》第7号

今天帮陈总研究一个奇怪的问题的时候误操作导致机器停止ssh响应,遂请机房重启。由于机房做的是power cycle,导致部分数据丢失。先前在配置OpenLDAP时,忘记在其中配置checkpoint,另外也没有对这台机器的LDAP进行备份,因此只好尝试从现有的数据库中恢复。冗余不做,日子甭过;备份不做,十恶不赦!

记录一下修复过程。

第一件事是把出问题的数据库做一份备份:rsync -av /var/db/openldap-data/ /var/db/openldap-data.old/

接着尝试slapcat。出现下面的错误:

bdb(dc=********.com): file id2entry.bdb has LSN 1/1476384, past end of log at 1/374639
bdb(dc=********.com): Commonly caused by moving a database from one database environment
bdb(dc=********.com): to another without clearing the database LSNs, or by removing all of
bdb(dc=********.com): the log files from a database environment
bdb(dc=********.com): /var/db/openldap-data/id2entry.bdb: unexpected file type or format
bdb_db_open: database "dc=********.com": db_open(/var/db/openldap-data/id2entry.bdb) failed: Invalid argument (22).

尝试使用BerkeleyDB的修复工具修复:

# db_recover-4.6 -vvf
Finding last valid log LSN: file: 1 offset 374639
recovery 0% completeRecovery starting from [1][374527]
recovery 67% completeRecovery complete at Tue Jul 13 16:41:59 2010
Maximum transaction ID 800000c0 Recovery checkpoint [1][374639]

slapcat发现问题依旧。搜索Google发现答案基本上都是从备份中恢复,看了一下Oracle的网站,关于这类问题也没有很好的办法。尝试将bdb文件dump出来再load回去:

db_recover-4.6 -vvf
db_dump-4.6 id2entry.bdb > /tmp/id2entry.dump
rm id2entry.bdb
db_load-4.6 id2entry.bdb < ~/id2entry.dump
db_recover-4.6 -vvf

再次slapcat,发现对另一文件报错,用类似的方法修补之后,slapcat成功。

将slapcat的输出导出到一个文件中: slapcat > /tmp/my.ldif

然后,删除OpenLDAP数据目录:rm /var/db/openldap-data/_* /var/db/openldap-data/[a-z]*

最后,重新使用导出的ldif文件恢复:slapadd -l /tmp/my.ldif。

至此,恢复完成。

此配置确认可配合 FreeBSD/amd64 8.1-RELEASE 使用。实际运行时功率少于100W(110V电的情况下电流小于0.9A),供参考。

主板:Supermicro X8STi
机箱(含电源):SC813MTQ-350CB
CPU:Xeon L5630
内存:Apacer 4GB ECC Unbuffered * 6
硬盘:Seagate ST31500541AS * 4

说明:

此主板采用Intel X58芯片组(ICH10R,可使用 ichwd 配合 watchdogd 来启用OS监控),所选硬件支持AHCI故应在BIOS中配置为使用AHCI。L5630为低功耗版本,此主板兼容的其他CPU不会影响兼容性。此主板包含的网卡为82547L。

注意 X8STi系列主板早期的PCB与Xeon 5600系列CPU存在兼容性问题。Xeon 5600系列CPU需要使用Rev 2.0的PCB。此问题的现象是重启时过热LED闪烁且停止响应。

FreeBSD 8.1-RELEASE默认启用了MCA。如果对功耗有进一步的要求,并且机器负载不太重,可根据需要配置并运行powerd。powerd会将电源识别为"unknown",并选择HIADAPTIVE作为profile,即在CPU占用超过running mark/2时----默认running mark为75%,若任意CPU占用超过95%或running mark时将CPU频率调高4倍,反之令负载趋近于running mark/2。当负载不足idle mark/2时----默认idle mark为50%,按1/32的当前CPU频率为步长降频。

目前Intel尚未发布针对L5630的新版microcode。

测试SSL

| 5 Comments | No TrackBacks

周末抽时间对网站做了一些调整。主要是把网站迁移到nginx上,不过遇到一些问题。Movable Type以FCGI::Spawn运行的时候,有时会反复出现先前的页面(例如,在mt.cgi上登录时,在提交登录之后仍会出现登录界面,而不是正常完成登录)。用ktrace看了一下FastCGI进程,结果发现之前看到的资料里面有相当多的小问题,但这个问题最终没有解决,暂时起了一个Apache来以cgi方式处理来绕过问题了。

意外的收获是,过程中发现nginx和firefox bug各一枚。

Monthly Archives

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.2.11