2025-12-19

100个探寻有趣世界的网站

 1、实时地球

网址:https://zoom.earth

实时图像每 10 分钟更新一次,提供风暴、天气预报、降水、火警等数据

2、陕西博物馆 360 度实景浏览

网址:https://sxhm.com/online.html

线上参观陕西博物馆,360度展示,共有五个展厅100多个场景。可以网页浏览,也可以 VR 头盔浏览

3、CyArk

网址:https://cyark.org

用专业的三维激光扫描技术数字化重现世界上最久远、最著名的古迹

4、全球贸易数据分析

网址:http://globe.cid.harvard.edu

这个网站可以看到全球每一个国家在贸易方面的数据

5、公共钢琴

网址:https://pianos.pub

收集了全世界 8,391 架公共钢琴,你可以输入一个地点查找附近的钢琴

6、天际网络摄像头

网址:https://skylinewebcams.com

观看世界各地景区的实时摄像头画面

7、Manhole

网址:https://manhole.co.il

有非常多全世界各地有趣的井盖!还能看这个井盖具体在什么地方

8、近地轨道可视化

网址:https://platform.leolabs.space/visualization

感受地球低轨道太空的实际状态

9、全球电力设施地图

网址:https://openinframap.org

该网站的地图显示全世界电力设施的位置,包括电厂、变电站、输电线等等,甚至还有风力发电机

10、护照博物馆

网址:https://passportindex.org

这个网站集合了世界各地护照样式 还有办理程序 办理难易程度 等等

11、随机谷歌街景

网址:https://randomstreetview.com

这个网站随机展示谷歌街景的照片,世界各地都有

12、用户界面的历史

网址:https://history.user-interface.io

介绍了从 1973 年第一个支持 GUI 的操作系统到目前的 macOS 和 windows 的用户界面

13、World flags

网址:https://world-flags.org

一个介绍世界各国国旗、含义和起源、国旗的起源和琐事的国旗武士媒体组合项目

14、Dollar Street

网址:https://gapminder.org/dollar-street

按照收入展示各个国家中人们的生活

15、深海

网址:https://neal.fun/deep-sea/

海洋不同深度都有什么生物

16、Go nomad

网址:https://nomadlist.com

这个网站是用来给游民们寻找适合自己的城市做参考,根据各种权威机构数据列出了各项评分

17、手机博物馆

网址:https://mobilephonemuseum.com/catalogue

网站目前拥有来自 200 多个不同品牌的 2200 多个独立型号

18、钓鱼岛线上博物馆

网址:http://diaoyudao.org.cn/dydbwg.html

博物馆展陈内容包括历史图片、视频资料、文献资料、法律文件、实物模拟等

19、地平说学会协会

网址:https://tfes.org

世界上有一些人认为地球是平面而非球体,这是他们的官网

20、机械键盘博物馆

网址:https://scrapbox.io/MECHKEYS/

收集了非常多设计独特的机械键盘

21、全景故宫

网址:https://pano.dpm.org.cn

线上体验游览故宫,360° 查看各个宫殿,有文字介绍

22、故宫博物院数字文物库

网址:https://digicol.dpm.org.cn

在线查看故宫博物院众多藏品,可根据分类和年代浏览

23、千亿像素看中国

网址:http://bigpixel.cn/zh-CN.html

可浏览千亿像素的全景图片,观看一个城市的面貌

24、核弹威力

网址:https://nuclearsecrecy.com/nukemap/

选择某个核弹查看爆炸影响的范围大小

25、地球时间线

网址:https://timelineofearth.com

滚动屏幕,查看地球从形成到今天的大致时间线

26、克苏鲁公社

网址:https://cthulhuclub.com

克苏鲁公社为克苏鲁神话爱好者自发创建的克苏鲁神话相关资料网站

27、中国历史照片

网址:https://hpcbristol.net

布里斯托大学开放中国影像数据库,提供 20,000 多张中国近代照片免费浏览

28、ocearch

网址:https://ocearch.org/tracker

追踪大白鲨、虎鲸等海洋动物的实时位置

29、知妖(中国妖怪百集)

网址:http://cbaigui.com

收集中国古今妖怪

30、Little Big World

网址:https://littlebigworld.de

Little Big World 使用移轴摄影、壮观的无人机摄影和惊人的延时,将地球上最美丽、最有趣的地方变成了可爱的微型模型
原文链接

31、地球模型

网址:https://3d-app.yunser.com/earth

网站默认模拟了地球自转运动,同时提供了大量的模拟操作,如查看太阳光照、昼夜平分面黄道面等

32、极像素

网址:https://sigoo.com

超高像素看世界

33、中国纪录片网

网址:http://docuchina.cn

国家级的纪录片资源,央视出品

34、http://OEC.world

网址:https://oec.world

查询每个国家或地区的贸易数据,并用图文进行通俗解释

35、波斯波利斯

网址:https://persepolis.getty.edu

波斯波利斯是古代波斯帝国的首都,现在已经是一片废墟了。这个页面还原了这座雄伟的帝国都城,重建了 3D 街景,让你在其中漫游

36、卢浮宫藏品

网址:https://collections.louvre.fr/en/

卢浮宫超过 48 万藏品电子化,可在线免费浏览

37、中华珍宝馆

网址:https://g2.ltfc.net

在线的中国字画的博物馆

38、地球旧照

网址:https://3d-app.yunser.com/plateMotion

一个可以查看远古时期的地貌、研究板块运动网站

39、木材数据库

网址:https://wood-database.com

木材数据库。有详细的介绍,包括硬度排行等

40、无限 3D 美术馆

网址:https://gallery.nowaythis.works

目前有180多万件艺术品的 3D 美术馆,每件艺术品都是来自 Reddit 的 r/Art 频道

41、The Sea We Breathe

网址:https://bluemarinefoundation.com/the-sea-we-breathe/

带你进入海底世界遨游,互动式的体验

42、Webcamtaxi

网址:https://webcamtaxi.com

Youtube 上面有很多24小时的摄像头直播频道,可以看到世界各地的实时状况。该网站就是收集这些频道,按照地区和内容分类

43、苏联海报

网址:https://reddirect.ru

这个网站收藏了很多苏联时期的海报,很有年代感

44、Artvee

网址:https://artvee.com

浏览和下载高分辨率的公共领域艺术品

45、中国国家博物馆 VR

网址:http://chnmuseum.cn/Portals/0/web/vr/

中国国家博物馆提供的 VR 场景,线上 360° 体验游览中国国家博物馆

46、Earth Clock

网址:https://earthclock.cwandt.com

这个网站使用 Google Eerth 卫星照片,显示当前的数字时间

47、模拟器博物馆

网址:http://famicn.com

在线运行电脑系统、学习机、游戏机

48、Arch Daily

网址:https://archdaily.cn/cn

非常多设计奇特的建筑

49、物种 2000 中国节点

网址:http://sp2000.org.cn

该网站建立和维护中国生物物种名录

50、上海博物馆

网址:https://shanghaimuseum.net/mu/frontend/pg/index

在线浏览上海博物馆的藏品和博物馆内的三维场景,还提供 AR 功能,需下载上博AR App 体验

51、光污染地图

网址:https://lightpollutionmap.info

全球光污染地图,可查看某地光污染各种参数

52、8values 中文版

网址:https://songyon.github.io/8valuescn/

8values 是一个政治立场测试

53、十年前的网页

网址:https://neal.fun/ten-years-ago/

可以查看十年前美国的十几个著名网站是什么样子

54、全球天气

网址:https://earth.nullschool.net

一个全球天气状况的视觉化网站

55、流星雨

网址:https://meteorshowers.org

以太空视角查看某个时间流星雨的形成

56、古典音乐

网址:https://kunstderfuge.com

免费下载古典音乐(MIDI 格式),可按音乐家名称查询

57、英特尔虚拟博物馆

网址:https://virtualmuseum.intel.com

官方网站,3D 虚拟参观英特尔公司的博物馆

58、铅笔收藏馆

网址:https://brandnamepencils.com

网站收藏了几乎全球各地知名品牌的铅笔

59、物流艺术

网址:https://logisticsartproject.com

记录了一个快递是怎样从斯德哥尔摩经过 37 天到达深圳的

60、IDEA

网址:https://dialectsarchive.com

全球英语方言档案馆(不同国家不同地区的人说英语是什么口音)

61、Exploratorium

网址:https://exploratorium.edu/ronh/age/

科普网站,看看你在其它星球的岁数

62、http://Archive.org Serendipity

网址:https://locserendipity.com/PushPlay.html

收集了很多过了版权保护期的音乐作品,按一下按钮,就会随机播放一段音乐

63、FlightAware

网址:https://zh.flightaware.com

提供全球实时航班交通以及航空趋势等

64、世界人口时钟

网址:https://countrymeters.info/cn

网站展示任何国家目前的人口的实时统计,出生,死亡,净迁移和人口增长

65、观沧海

网址:https://ageeye.cn

以地图为线索,反映中国历史、 军事、 自然、 ⽂化等各⽅面的知识

66、开源人物肖像

网址:http://facesofopensource.com

那些推动计算机革命的开源程序员的肖像

67、信聚网

网址:https://xinjh.info

网络有趣资源收集分享

68、濒危声音博物馆

网址:http://savethesounds.info

收藏了一些消失的声音,比如打字机的击键声、点阵式打印机的打印声、Windows 95 的开机声

69、指尖上

网址:https://zhijianshang.com

海量全面精美的VR全景旅游景点介绍,只需动动指尖就能通过虚拟现实深入景区内部,体验各地的美景风光

70、全球海底光缆

网址:https://he.net/3d-map/

这个网页提供了一个互动式的地球,上面有全世界海底光缆和骨干机房的位置

71、韵典网

网址:https://ytenx.org

韵典网是一个综合的韵书查询工具,包含广韵、中原音韵、洪武正韵笺、分韵撮要和上古音系

72、天空之城

网址:https://skypixel.com

无人机航拍照片和视频共享平台

73、Gallerix

网址:https://gallerix.asia

在线博物馆,可以按画家或博物馆来查看油画

74、荷兰国家博物馆

网址:https://rijksmuseum.nl/nl

可在线浏览荷兰国家博物馆大量珍贵的藏品

75、Conserve the Sound

网址:https://conservethesound.de

老物件的声音博物馆,你可以听到打字机、手摇咖啡研磨机等物品的声音

76、科普网站

网址:https://animagraffs.com

了解各种产品的原理

77、百年纪念灯泡

网址:https://centennialbulb.org/cam.htm

展示已经亮了百年的灯泡

78、环游世界

网址:https://airpano.org.cn

网站提供各个地区的全景图,三百六十度看世界

79、四大名著

网址:http://sdmz.cn

网站提供了四大名著相关的电子书、音频、图片、地图等在线资源

80、制服地图

网址:https://uniform.wingzero.tw

Uniform Map 是一个让使用者可以从 Google 地图去查询学校制服的网站,想知道某所学校所穿的制服,用这网站就能轻松解决

81、国际空间站

网址:https://google.com/maps/@29.5602853, 95.0853914,2a,75y,212.04h,90t/data=!3m7!1e1!3m5!1szChzPIAn4RIAAAQvxgbyEg!2e0!3e5!7i10000!8i5000?shorturl=1

Google 地图,可查看国际空间站内部环境

82、飞机坠毁信息

网址:http://planecrashinfo.com

记录航空事故,包括地点、死亡人数、细节以及不寻常的事故、最后的话等

83、熊猫频道

网址:https://ipanda.com

央视熊猫频道对大熊猫繁育、日常起居等的情况进行 24 小时近距离视频直播及点播

84、享有海景的车站

网址:https://seaside-station.com

网站记录了日本非常多海边的火车站极其周边景色的照片

85、中国古籍保护网

网址:http://nlc.cn/pcab/

中国古籍保护网,可在线浏览古籍的电子版,如《金石圖說》

86、Treeographer

网址:https://thetreeographer.com/archive/

收集一些奇特的树

87、乡音苑

网址:https://phonemica.net

收集来自全国各地的网友上传的方言故事,网站提供各种字幕不怕看不懂

88、搜韵

网址:https://sou-yun.cn

搜韵网共收录约 90 万首古今诗词作品,其中近现代及之前的诗词作品约 83 万。

89、世界建筑名录

网址:https://worldbuildingsdirectory.com

浏览来自世界各地的最具创新性的建筑

90、书格子

网址:https://new.shuge.org

有品格的数字古籍图书馆

91、10 万亿像素的夜空

网址:https://viewer.legacysurvey.org

浏览一张 10 万亿像素的图片,包含超过十亿个星系,覆盖整个天空的三分之一。

92、网站设计博物馆

网址:https://webdesignmuseum.org

展出 1600 多个网站从 1991 到 2006 年主页的设计

93、星辰协会

网址:http://thestarsetsociety.org

美国 Starset 乐队科研团队“Starset协会”网站

94、全历史

网址:https://allhistory.com

让用户沉浸在纵横开阔、左图右史的(历史、人文、社科等)知识海洋中

95、风网

网址:https://windy.com

台风 暴雨观测

96、100,000 Stars

网址:https://stars.chromeexperiments.com

璀璨星河一触即达,宇宙星系在线观赏(来自 Google 实验室)

97、世界数字图书馆

网址:https://loc.gov/collections/world-digital-library/about-this-collection/

网站免费提供使用珍贵图书、地图、影片与照片等服务

98、世界地图

网址:http://onegreen.net/maps/m/world.htm

提供高清、可下载的世界地图,有各种版本,如行政图、世界地形、交通等

99、蚂蚁网

网址:http://ants-china.com

东亚、东北亚、南亚及东南亚地区蚂蚁-全球最大的华语中文蚂蚁专业网站

100、数字敦煌

网址:https://e-dunhuang.com

2025-12-18

蔡澜散文集内容汇总

 

资料来源说明

文件名称:1.txt

文件类型:PDF电子书内容转换

书籍作者:蔡澜 (Cai Lan)

内容分类:多本散文集合集,包含《不如任性过生活》《今天也要好好吃饭》《愿你成为最好的女子》《没有什么了不起》《我决定活得有趣》等作品

总结时间:2025-12-18

本次阅读分析了蔡澜先生的散文集内容,整理其中关于美食、美酒、生活好物、旅行地点和有趣事物的精彩内容。

文件大小:约2.3MB,35,039行内容

🍽️ 好吃的东西

名称 地点 特点描述
猪油捞饭 香港/中式 怀念的家常味道,简单却令人满足
炒饭 各地 以毕生经验研究,讲究火候和技巧的艺术
白灼料理 广东/中式 把食物做熟的最好方法,保持原汁原味
烤鱿鱼 各地 最适合下酒的小食
寿司 日本 讲究怎么吃才像经常吃的样子
咖喱 印度/东南亚 能做出印度、马来西亚、新加坡、印尼、越南、缅甸等多种风味
和牛 日本 品质极佳,可铺满汤面
葱油饼 中式 应该下大量葱,包得胖胖像个婴儿
虾米炖蛋 日式/中式 用日本茶碗蒸方法,配小虾米、细鱼、金华火腿
潮州粿汁 潮州/香港 正宗做法,粿片蒸切,配卤猪皮、豆卜等
醉蟹 江浙/中式 生吃美味,膏像海胆,硬壳也可咬碎
叉烧炒鸡蛋 港式 等人的简便美食,一口一口细嚼
橙冻 自制 用柳丁或泰国绿橙,加入橙肉丁增加口感
竹笋焖猪肉 中式 苏东坡名句"无竹令人俗,无肉令人瘦"
烧全猪 香港 皮要爽脆,时间掌握要精准
葱油拌面 上海 京葱爆焦,简单却美味
臭豆腐 各地 油炸后香的变臭,臭的变香
涮羊肉 北京 半肥瘦最佳,配麻酱调料
北京烤鸭 北京 皮和肉都要吃,骨可熬汤
生火腿 意大利 配水果吃,量要大才过瘾

🍷 好喝的酒

酒类名称 产地 特点描述
威士忌 西洋 与朋友谈天的乐趣,蔡澜与金庸常共饮
普洱茶 云南/广东 全发酵茶,去油腻,有霉味需调配
清酒 日本 喝酒须尽兴但别要命,讲究豪气
白兰地 法国 西医建议睡前饮用,陈年更佳
香槟 法国 画展庆祝,丁雄泉先生豪饮
红酒 西洋 比作人生理想状态:越老越醇
桂花酒 北京 有二千多年历史,配苏州桂花和玉泉水
二锅头 北京 便宜实在,京菜必备
玛丝嘉桃 意大利 便宜的香槟替代品,二百港币左右
姜茶 中式 感冒时首选,其他"医生"建议都无效

🎁 好物 (生活优选品)

物品类别 描述 心得体会
XO酱 高级辣椒酱,源自韩培珠配方 坚持不放防腐剂,自制销售
咸鱼酱 便携调味品 玻璃罐装,开罐即食,方便省事
零食 饭焦炸制,蛋卷加葱蒜 研究创新,咸甜口味结合受欢迎
扇子 画扇 夏日用场,可送人可售卖
书籍 最佳旅行伴侣 多读书可升华人生,避免书呆
茶具 普洱茶配套 简单就是茶道
佛像 收藏与修行 追求宁静庄严,自己雕刻
花草 木兰、白兰等 享受香气,观察生长
宠物 以猫为主人,猫才可爱
金鱼 观赏鱼 便宜也能玩个够
老花眼镜 实用工具 30岁就戴,聪明老视
衣着 西装、丝绸、牛仔裤 干净整齐最重要,名牌次要
印章 篆刻作品 刻佛像,练习书法
相机 摄影器材 莱卡、哈苏,放弃简便
收音机 老年娱乐 比电视更受欢迎

🌍 好玩的地方

地点 国家/地区 特色体验
日本 亚洲 多次访问,寿司店、鱼市场、眼科医生、东京公干
香港 中国 美食文化、街边小贩、中环、九龙城潮州店
新加坡 东南亚 饮食改运学,认识李居明,多元文化
泰国 东南亚 小吃、指天椒、绿橙
意大利 欧洲 北部旅行,巴黎,简单乡村料理
巴黎 法国 欧洲旅程,报纸摊见演员封面
伦敦 英国 研究"快乐科学"
纽约 美国 唐人街餐厅打工,博物馆艺术熏陶
温哥华/旧金山 加拿大/美国 北美洲旅行,与金庸同游
澳大利亚 大洋洲 与金庸同游,补肾药发现地
马来西亚 东南亚 同游,印度山生活体验
斯里兰卡 亚洲 小岛生活,蓝天海鸥,认识阿瑟·克拉克
印度 亚洲 山上生活,当地农妇做菜,文化差异思考
荷兰 欧洲 思想开通,医生朋友可提供安乐死帮助
西班牙 欧洲 晚睡文化,十点吃晚饭,凌晨三四点回家
上海 中国 菜市场体验,老铺食品,白兰花
北京 中国 涮羊肉,烤鸭,宫廷小吃
意大利那不勒斯 欧洲 简单薄饼,番茄酱加芝士
韩国 亚洲 解肠汁,雪浓汤,早餐文化
杭州 中国 西湖醋鱼,天香楼名菜

✨ 有趣的东西/概念

名称 类别 具体内容
蔡澜人生哲学 生活理念 抽烟、喝酒、不运动;人生苦短,别对不起自己
阿Q精神 心态调整 往好处想,瓦片打中头想"幸运"而非"倒霉"
发呆的艺术 生活习惯 停下来发呆是高级享受,储蓄美好回忆
即刻做 行动准则 想到就做,避免拖延,提升效率
八字命理 传统文化 戊土生申月,要火,不吃猪肺,不喜鸡
整容观 美容观念 要整容不如先整心,自信比外表重要
小贩精神 创业理念 年轻人迷惘就去当小贩,自由且有发展潜力
活,也要让人活 处世之道 Live and Let Live,宽容但不被欺负
放纵的哲学 生活态度 享受快乐由牺牲健康开始,精神健康更重要
死亡观念 生死观 坦然面对,选择吗啡安乐死,遗嘱安排
不亦快哉 生活情趣 梁实秋、三毛的生活小乐趣
刹那光辉 人生感悟 一刹那光辉好过一辈子平庸
吃消除寂寞 人性洞察 厨房是避难所,美食治愈孤独
中年/老年观 人生阶段 不会变老,只会变好;中年是实年熟年
记忆管理 生活技巧 使用笔记本,及时记录,邵逸夫的皮夹法
蜻蜓捕捉 童年趣事 利用复眼原理抓蜻蜓
树交朋友 生活情趣 鱼木花树,欣赏自然
玩时间 生活方式 香港人最擅长,多忙也能抽时间
甜咸结合 饮食理念 上海菜特色,需要适应
气味文化 感官体验 白兰花香,虾酱臭,讲究嗅觉享受

📊 蔡澜生活方式核心理念

人生哲学

  • 人生意义:吃得好一点,睡得好一点,多玩玩,不羡慕他人,不听管束,多储蓄人生经验,死而无憾
  • 健康态度:抽烟、喝酒、不运动,但讲究适度和精神健康
  • 消费观念:会花钱比会赚钱更重要,送礼要送到心坎上
  • 生活情趣:发呆、养宠物、种花、收藏、书法篆刻
  • 人际关系:活也要让人活,但不被欺负,重视真朋友
  • 饮食理念:美食最重要,味觉享受无价,创造美食文化
  • 旅行观念:既是学习也是享受,观察人情世故
  • 老化观念:坦然接受,保持庄严、干净、清香,优雅变老

最有启发性的金句

1. "人生的意义到底是什么呢?吃得好一点,睡得好一点,多玩玩,不羡慕别人,不听管束,多储蓄人生经验,死而无憾,这就是最大的意义吧,一点也不复杂。"

2. "生命的长短是不受自己控制,但是生命质素的好坏,却是我们自己能够提高的!"

3. "做,机会是五十对五十;不做,等于零。"

4. "玩物并不丧志,养志还能赚钱。"

5. "一刹那的光辉,总比一辈子平庸好。"

6. "要整容,不如先整心。"

7. "吃好喝好,就是功德圆满。"

8. "活得不快乐,长寿有什么意思?还是看开一点就没有事。"

9. "人生苦短,别对不起自己。"

10. "以毕生经验研究零食。"

本次阅读收获

通过深入阅读蔡澜先生的散文集,我们得以一窥这位"真正潇洒的人"如何以轻松活泼的心态对待人生。 他对美食的执着、对生活的热爱、对友情的珍视,以及对生死的豁达,都展现了独特的人生智慧。 特别是在《不如任性过生活》中提到的"任性而活是人生最过瘾的事",以及在《今天也要好好吃饭》中强调的生活细节的重要性,都给读者深刻的启发。

蔡澜先生的文字朴实自然,却蕴含着深刻的人生哲理。他不追求宏伟的理想,而是强调在平凡的生活中发现乐趣,通过美食、美酒、好物和旅行来提升生活品质,这种"享乐主义"背后其实是一种积极、独立、不随波逐流的人生态度。

特别收获: 理解了蔡澜的"八字命理"解释(戊土生申月要火),理解了他对传统价值观的反思,以及他如何在商业社会中保持真诚和个性化的生活方式。

推荐阅读章节

  • 人生哲学类:《不如任性过生活》中的第一、二部分
  • 美食探索类:《今天也要好好吃饭》中的各章节
  • 生活智慧类:《我决定活得有趣》中的日常观察
  • 生死观类:《没有什么了不起》中的相关篇章

2025-11-13

经典机器的重生:给 ThinkPad X200 刷开源固件 coreboot

 我手上有一台 ThinkPad X200,诞生于 2008 年,是当年的旗舰笔记本。十几年过去了,依然宝刀不老,长期以来一直都是我写程序写论文的主力。

不过,前主人给它设置了超级管理员密码,由于相隔已久,早已忘了密码。幸好超级密码只锁定 BIOS 设置,不影响进系统,倒也相安无事。

然而,有密码始终影响我对笔记本的掌控。我尝试像台式机那样,拔掉 BIOS 电池来清除密码。殊不知,X200 是商务笔记本系列,联想早已经做足了防范。结果很惨:每次开机都得输入管理员密码,否则就无法引导进系统!

最终,我决定,刷 coreboot,一劳永逸解决。

coreboot 是一款自由、开源的系统固件,是 BIOS 和 UEFI 的替代品。它早已对 ThinkPad X200 提供完备的支持。何不用它,绕过密码验证,直接引导系统?

准备工具

BIOS 刷写需要准备以下工具:

  • 一台安装了 Linux 发行版的电脑
  • CH341A 编程器
  • SOP-16 夹具

既然电脑无法进系统,想要刷 BIOS,当然离不开编程器了。我选用的是著名的 CH341A「土豪金」编程器,接下来用到的刷写工具 Flashrom 为它提供了官方支持。

X200 的 BIOS 芯片是「25」型,拥有16根引脚,可以直接通过 SOP-16 夹具来连接编程器。夹具和编程器都可在淘宝购买到。我手上的 X200 为高配版本,芯片容量为 8.0 MiB。

系统环境方面,选用 Linux 发行版。通过它来运行 Flashrom 来刷写 BIOS,以及编译 coreboot。

值得注意的是,coreboot 只提供源代码,不提供已经编译的固件,所以需要自己编译。你也许可以选用网上别人编译好的固件,但它们常常缺少正确的配置,导致功能缺失(例如,无线网卡和蓝牙不能使用)。1

编程器连接

CH341A 是编程器的芯片型号,不同的厂家在用 CH341A 设计编程器时可能有不同的外观,配件也可能有不同的组装方式,故应当以资料为准。编程器的卖家通常会提供完备的资料。

就以我的编程器为例。我手上这台 CH341A「土豪金」编程器是这样子的:

左为 CH341A 编程器本体,右为配套的 SOP-16 夹具

卸下键盘与掌托

X200 的 BIOS 隐藏在掌托下,需要卸下键盘与掌托才能看到 BIOS 芯片。

卸掉笔记本底部除硬盘仓外所有带三角形标记的螺丝2(还有一颗螺丝藏在电池仓,需要先卸下电池),然后小心沿着边缘拆下掌托,即可同时将键盘和掌托卸下。注意不要弄坏键盘底部的排线。

高配版的 X200 是带有指纹传感器的,它在主板上的接口是一块可拆卸的芯片,轻轻将它从主板取出。

准备编程器

编程器右侧有一个黑色的连接器。先把连接器右侧的手柄向上推,使手柄朝上:

按下图的方式,将夹具的 8 个针脚插入连接器左半边的 8 个孔位。注意区分方向,不要接反了。

最后,将手柄向下压,即可将夹具固定住,这样编程器与夹具就连接上了。

连接 BIOS 芯片

X200 的 BIOS 芯片位于主板下沿、Intel 南桥芯片左侧。先展示一下芯片的特写:

红圈中的芯片就是 BIOS 芯片。右侧为 Intel 南桥芯片。

张开夹子,先让连着红色导线的夹板立在芯片右侧(对着南桥芯片那一侧),仔细对准芯片的针脚。接着缓缓将夹子夹在芯片上,确保芯片两侧的针脚都被夹住。一旦夹牢靠,就不容易松动。

注意不要把夹子的方向弄反了,否则芯片会识别不出来。

接好之后,将编程器插在电脑的 USB 接口上,确保红灯亮起。连接完成的效果如下图所示。

夹具连接示意图。由于拍摄角度问题,一些细节没能准确呈现。你可以大致观察到 BIOS 芯片的位置,以及编程器的连接方式。

备份原机 BIOS

连接编程器后,首先需要备份原机 BIOS ROM。一方面是防止万一,另一方面是 coreboot 需要使用官方 BIOS 的组件。

检测芯片型号

首先运行以下命令,尝试读取 BIOS 芯片,检测型号,借此检查连接情况:

Shell
sudo flashrom -p ch341a_spi

若一切正常,执行结果如下。可以看到,编程器已经识别出了芯片:

代码块
flashrom v1.2 on Linux 5.15.65-1-MANJARO (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Macronix flash chip "MX25L6405" (8192 kB, SPI) on ch341a_spi.
Found Macronix flash chip "MX25L6405D" (8192 kB, SPI) on ch341a_spi.
Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on ch341a_spi.
Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" (8192 kB, SPI) on ch341a_spi.

Multiple flash chip definitions match the detected chip(s): "MX25L6405", "MX25L6405D", "MX25L6406E/MX25L6408E", "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F"
Please specify which chip definition to use with the -c <chipname> option.

输出日志中,不止一个型号被检测出来。后续的操作,我们使用最长串的型号:MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F

提示: 

  • 检测出多型号是正常现象,因为BIOS芯片本身有多种型号定义,仅通过编程器是无法精确识别的。
  • 如果 Flashrom 在运行的时候出错,再改用其他列出的型号,如MX25L6406E/MX25L6408E

开始备份

运行以下命令,将整个 BIOS ROM 备份到文件x200_bios.rom中:

Shell
sudo flashrom -p ch341a_spi -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -r x200_bios.rom

正常情况下,输出结果如下所示:

代码块
flashrom v1.2 on Linux 5.15.65-1-MANJARO (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" (8192 kB, SPI) on ch341a_spi.
Reading flash... done.

由于传输过程可能存在异常,为保险起见,多备份几次,然后比较各个备份文件(例如,SHA256 校验和)。如果完全相同,则说明备份无误。

例如,先备份,然后使用 OpenSSL 来比较 SHA256:

Shell
# 再备份3次
sudo flashrom -p ch341a_spi -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -r x200_bios_2.rom
sudo flashrom -p ch341a_spi -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -r x200_bios_3.rom
sudo flashrom -p ch341a_spi -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -r x200_bios_4.rom

# 然后,比较它们的SHA256校验和
openssl sha256 x200_bios_*.rom

如果传输无误,则上述文件的 SHA256 值应当相同,如下:

代码块
SHA256(x200_bios.rom)= 038481951bb5d3412392fc1fd02b3996a9ac5394e82aaa4593b84f90362afce4
SHA256(x200_bios_2.rom)= 038481951bb5d3412392fc1fd02b3996a9ac5394e82aaa4593b84f90362afce4
SHA256(x200_bios_3.rom)= 038481951bb5d3412392fc1fd02b3996a9ac5394e82aaa4593b84f90362afce4
SHA256(x200_bios_4.rom)= 038481951bb5d3412392fc1fd02b3996a9ac5394e82aaa4593b84f90362afce4

准备 coreboot 源代码

接下来的教程中,假定我们把 coreboot 的源码目录放在用户主目录下。

克隆源码

首先,克隆 coreboot 的代码库:

Shell
git clone --recursive https://github.com/coreboot/coreboot.git coreboot
cd coreboot

如果不小心漏掉了--recursive参数,则同步子模块:

Shell
cd coreboot
git submodule update --init --recursive

准备交叉编译器

coreboot 涉及到更底层的系统环境。为了保证 coreboot 的正常编译,还需要准备交叉编译器。ThinkPad X200 需要使用 i386 的 GCC 编译器,编译 32 位的 coreboot。

⚠️ 注意: ThinkPad X200 不支持 64 位的 coreboot。

首先,安装 GCC Ada 工具链。

coreboot 包含一个显卡驱动:libgfxinit,它可以在 Intel 平台下初始化集成显卡或核芯显卡,使用 Ada 语言的子集 SPARK 编写。要给交叉编译器提供 Ada 语言的支持,必须先在当前主机上安装 GCC Ada 工具链。

不同的发行版有不同的包名,可以在 pkgs.org 网站检索。例如,在 Arch Linux 中,使用以下命令安装:

Shell
sudo pacman -S gcc-ada

接下来,就可以让 coreboot 自动构建交叉编译器,只需运行以下命令:

Shell
# 使用单处理器(单个线程)进行构建。会很慢!
make crossgcc-i386

# 使用多个处理器(多个线程)进行构建。
make crossgcc-i386 CPUS=$(nproc)

构建过程是全自动的,一步到位。

准备 BIOS 组件

coreboot 需要从原机的官方 BIOS ROM 中提取以下三个组件:

  • Flash descriptor,存放闪存芯片的布局信息(必选)
  • ME Firmware,即 Intel Management Engine 的固件(可选,提取备用)
  • GbE,有线网卡的配置文件(必选)

上述组件可以直接使用 coreboot 提供的ifdtool来自动提取。

编译 ifdtool

进入 coreboot 源码目录,然后浏览到ifdtool的源码目录,并编译:

Shell
cd util/ifdtool
make

编译完成后,当前目录会多出一个可执行文件:ifdtool。为便于使用,可以把它安装到系统中:

Shell
sudo cp ifdtool /usr/bin/

提取组件

浏览到存放 BIOS 备份的目录,运行以下命令提取:

Shell
ifdtool -x x200_bios.rom

执行结果如下所示:

代码块
File x200_bios.rom is 8388608 bytes
 Flash Region 0 (Flash Descriptor): 00000000 - 00000fff
 Flash Region 1 (BIOS): 00600000 - 007fffff
 Flash Region 2 (Intel ME): 00001000 - 005f5fff
 Flash Region 3 (GbE): 005f6000 - 005f7fff
 Flash Region 4 (Platform Data): 005f8000 - 005fffff

此时,当前目录下就会多出几个文件。它们都是提取出的组件,属于 BIOS ROM 的组成部分。

  • flashregion_0_flashdescriptor.bin
  • flashregion_1_bios.bin
  • flashregion_2_intel_me.bin
  • flashregion_3_gbe.bin
  • flashregion_4_platform_data.bin

把组件放入 coreboot 源码目录中

接下来,我们把提取出的组件放入指定目录中,使 coreboot 可以识别。

首先,进入 coreboot 源码目录,然后建立下面的子目录:

Shell
mkdir -p 3rdparty/blobs/mainboard/lenovo/x200

然后,把提取出的以下三个组件改名,放入上述目录中:

原名更改的名字作用
flashregion_0_flashdescriptor.bindescriptor.binBIOS 固件的布局,相当于分区表
flashregion_2_intel_me.binme.binIntel Management Engine 固件
flashregion_3_gbe.bingbe.bin板载千兆网卡的配置文件

至此,BIOS 组件准备完成,可以开始后续的配置了。

配置 coreboot

coreboot 使用 KBuild 来配置,配备一套直观易用的配置菜单,编译过 Linux 内核的开发者应该不会陌生。接下来,我们将配置 coreboot,打造出功能完备的体验,不应只满足于点亮机器进系统。

基本操作

  • 上下移动光标:选择设置项
  • Enter:
    • 进入子菜单或「多选一(给你多个选项,一次只能选一个)」菜单
    • 确认当前选项
  • Y/N/空格:勾选(或取消勾选),适用于带有方括号的项目,方括号里出现星号,表示已选中
  • 连按两次 ESC:返回上一页

进入配置菜单

进入 coreboot 源码目录,然后打开配置菜单:

Shell
make menuconfig

设置主板类型

首先,要将 coreboot 的主板类型设置为 ThinkPad X200。

  1. 进入一级菜单  Mainboard(主板),然后选择 Mainboard vendor(主板厂商),按Enter进入。在列表中,光标定位到Lenovo,按空格选中。
  2. 然后,选择 Mainboard model(主板型号),同样按Enter进入,在列表中,光标定位到ThinkPad X200 / X200s / X200t,按空格选中。

选好后,按两次 ESC,退回主页面。接下来的步骤都从主页面开始。

设置 BIOS 组件

进入一级菜单 Chipset(芯片组),然后勾选  Add Intel descriptor.bin file(添加英特尔 descriptor.bin 文件)。

此时,列表下方会多出下面两个选项:

  • Add Intel ME/TXE firmware(添加英特尔ME/TXE固件)
  • Add gigabit ethernet configuration(添加千兆以太网配置数据)

为了保证以太网能正常工作,你需要勾选 Add gigabit ethernet configuration。

至于Intel ME/TXE 固件,缺少该固件并不影响系统的使用,可以不勾选。关于该固件的问题,具体我会在文末「后续问题」章节讨论。

其余选项保持默认值。固件的路径默认均指向3rdparty/blobs/mainboard/lenovo/x200这一目录的相应文件,无需修改。

启用无线网卡支持

一些型号的 Intel PCIe 无线网卡,如果在 ACPI 和 SMBIOS 中缺少数据,则操作系统将无法识别它们。为了保证笔记本上安装的 Intel 网卡可用,需要在 coreboot 中提供对它们的支持。

进入一级菜单 Generic drivers(通用驱动),勾选最后一项 Support Intel PCI-e WiFi adapters(英特尔 PCIe 无线网卡支持),即可。

启用二合一网卡蓝牙支持

有别于笔记本常见的二合一无线网卡,X200 采用独立的博通蓝牙适配器(BCM2045B),走的是 USB 通道。但部分用户可能更换了二合一网卡。要想让这类网卡的蓝牙工作,需要开启 coreboot 的相关支持选项。

进入一级菜单 Chipset,选择 Support bluetooth on wifi cards(为搭载于无线网卡上的蓝牙提供支持),按Y勾选即可。

启用 NVRAM 存储

coreboot 可以把 BIOS 的参数保存在 NVRAM 中,这些参数控制着笔记本的各种特性,比如显存大小、无线网卡开关、告警提示音开关等。

但是,coreboot 默认并没有开启参数保存的功能,这将导致所有参数在每次开机时还原为默认。并且,还会导致蓝牙指示灯无法点亮。

因此,我们需要手工打开它。具体步骤如下:

  1. 进入一级菜单 General setup(一般配置),然后选中  Option backend to use(要使用的配置项存储后端)。
  2. 回车,然后在列表中,光标定位到 Use CMOS for configuration values(用 CMOS 来保存设置值),按空格选中,搞定。

让 coreboot 在引导时自动清空内存

笔者在成功编译 coreboot 后,长期使用 X200 以测试 coreboot 的稳定性,结果遇到了一个严重的问题:电脑隔三岔五无预兆重启,长则开机十几分钟重启,短则还没进入桌面就重启,严重影响系统使用。

经过一番搜索,知乎网友 flanto 的文章告诉了我答案:

根据个人使用经验,如果没有启用开机清空内存功能,就可能出现电脑随机重启现象。个人猜测,或许是通电后(特别是软重启后)内存中仍留有少数“垃圾”数据,当操作系统寻址到这些垃圾数据的地址就会发生错误。

经过测试,答案的确如此,让 coreboot 每次开机后清空内存,无故重启的故障终于彻底解决。

依次进行以下步骤,开启 coreboot 的引导时清空内存功能:

进入 Security(安全)——Memory initialization(内存初始化)菜单,勾选  Always clear all DRAM on regular boot(常规启动时总是清空内存),保存设置即可。

启用显卡支持

coreboot 有两种显卡支持方案:

  • 首选的显卡支持方案是 VGA Option ROM,即 VBIOS 镜像。它包含在官方的 BIOS 中,对 ThinkPad X200 的集显支持最完备最充分。
  • 如果没有 VGA Option ROM,则可以使用后备方案:libgfxinit,这是使用 Ada 语言编写的开源显卡驱动,用于为 coreboot 提供基本显示功能。目前仅支持 Intel 的核显和集显。

libgfxinit 与 Linear Frame buffer

先来介绍 libgfxinit。

ThinkPad X200 配备 GM45 集显,libgfxinit 驱动 GM45 不在话下。在它的基础上,再启用 Linear Framebuffer 功能建立一个帧缓冲(frame buffer),允许程序直接在 coreboot 中调用显卡绘图,从而使显卡在系统引导阶段发挥应有效能。

具体步骤如下:

  • 进入一级菜单 Devices(设备),选择 Graphics initialization(图形初始化)。在选项列表中,光标定位到 Use libgfxinit(使用libgfxinit),按空格确认。
  • 然后,依次进入子菜单 Display(显示)——Framebuffer mode(帧缓冲模式)。在选项列表中,光标定位到 Linear “high-resolution” framebuffer(线性高分辨率帧缓冲)。
  • 之后,在 Framebuffer mode 子菜单中,会多出以下两个选项,指定为X200显示器的最佳分辨率即可:
    • Maximum width in pixels(最大像素宽度),指定为1280
    • Maximum height in pixels(最大像素高度),指定为800

至此,coreboot 的显卡配置完成。

⚠️ 但要注意的是,libgfxinit对显卡的支持不充分:

  • 它无法实现缩放显示,意味着如果操作系统、引导程序(如 Grub、Ventoy)的分辨率小于最佳分辨率,就只能显示在左上角那一块。
  • 它支持纯字符模式显示(也就是 「Legacy Text Mode」),但该模式不兼容 Grub 等使用图形模式的 Bootloader——你会看不到任何东西,只能盲操作。

我仍然建议你优先选择 VGA Option ROM。

VGA Option ROM

最懂英特尔集显的还是自己人,只有官方的 VGA Option ROM (VBIOS 镜像)才能完美驱动 X200 的集显。coreboot 在集成了 VGA Option ROM 之后,使用体验和官方 BIOS 一样丝滑:同时兼容字符模式和图形模式,二者可以无缝切换,皆可满屏显示。

用户需要获取当前显卡的 VGA Option ROM,编译时将它集成在 coreboot 中,每次开机即可利用它来初始化显卡。

VGA Option ROM 可以直接从官方 BIOS 升级文件中提取,接下来笔者就来演示如何提取 Option ROM,并将其配置到 coreboot 中。

下载并解压 BIOS

要从官方升级文件中提取 VGA Option ROM,需要使用两个工具,可自行检索下载:

  • PhoenixTool:用于解包 BIOS 升级文件
  • phcomp.exe:用于将经过压缩的 BIOS 升级文件解压成 PhoenixTool 可识别的格式

上述两个工具都可以借助 Wine 在 Linux 下运行。

首先,从联想的海外版官网下载 X200 系列的 BIOS 更新工具。下载之前需要验证笔记本的序列号(位于笔记本底部)。你会得到一个安装程序,运行它,并在安装过程中记下安装目录(默认为C:\DRIVERS\FLASH\<一个6开头的文件夹(如6duj48us)>)。

进入安装目录,你会看到两个全大写字母的文件夹,BIOS 的原厂文件就在里面。其中:

  • 6DET72WW对应的是 8MB BIOS 芯片的机型
  • 7XET72WW对应 4MB BIOS 芯片的机型

考虑到笔者的 X200 用的是 8MB 的芯片,因此进入6DET72WW子目录。

phcomp.exe放到该子目录中,然后运行以下命令,解压官方 BIOS 升级文件:

代码块
# Windows 下
phcomp.exe /D $01B9100.FL1

# Linux 下(借助 Wine),注意“$”前面的转义字符
wine ./phcomp.exe /D \$01B9100.FL1

稍等片刻,工具就会在当前目录下生成一个新文件:$01B9100.FLh

提取 VGA Option ROM

运行 PhoenixTool,找到最顶部「Original(原始 BIOS)」那一栏,点击右侧的「..」按钮,打开刚刚生成的$01B9100.FLh文件。

此时,无须进一步操作,PhoenixTool 就会自动开始解包$01B9100.FLh这个 BIOS 升级文件,所有解包出来的文件都放到升级文件所在位置的DUMP子目录中。

在 PhoenixTool 中打开 BIOS 升级文件后,软件就会自动解包固件,无需手动干预
解包完成后就会出现图中的提示框。

解包完成后会弹出一个提示框。确认后,进入DUMP子目录,
使用 Linux 的file工具来验证其中的OPROM00.ROM,可以看出这就是我们要找的 VGA Option ROM:

代码块
$ file OPROM00.ROM
OPROM00.ROM: BIOS (ia32) ROM Ext. IBM comp. Video "IBM VGA Compatible BIOS. \003Z" (128*512) jmp 0xf6ff; at

将 VGA Option ROM 添加到 coreboot 中

OPROM00.ROM更名为vgabios.bin(或者是其他便于记忆的名字),放到 coreboot 源码树的根目录中。

然后,运行make menuconfig,打开 coreboot 配置菜单,依次修改以下设置:

  • 进入一级菜单 Devices(设备),勾选 Add a VGA BIOS image(添加一个 VGA BIOS 镜像);
  • 随后,下方会多出几个选项。选中 VGA BIOS path and filename(VGA BIOS 路径与文件名) ,回车,输入 VGA Option ROM 的文件名(vgabios.bin),然后回车确认。
  • 回到 Devices 菜单后,选择第一个 Graphics initialization ,在选项列表中,光标定位到 Run VGA Option ROMs(运行 VGA Option ROM),回车确认,保存设置即可。
  • 其余选项保持默认值。

这样,我们就成功把 VGA Option ROM 集成到了 coreboot 中,现在 coreboot 就有了火力全开的显卡支持。

建议的显卡设置:让 SeaBIOS 全权接管显卡初始化

在 ThinkPad X200 中,我们默认使用 SeaBIOS——一款开源的 BIOS 实现,作为 coreboot 的 payload。上电后,coreboot 先初始化基本硬件,然后调用 SeaBIOS 来提供我们熟悉的 BIOS 功能,并引导系统。

SeaBIOS 自身支持显卡初始化,在运行过程中会自动调用 VGA Option ROM。因此我们可以直接把 Graphics Initialization 设为「None」,意味着把初始化集显的工作全权交给 SeaBIOS,不需要 coreboot 来初始化。

实测该设置比「Run VGA Option ROMs」更为稳定,避免 coreboot 和 SeaBIOS 重复调用 VGA Option ROM 在极个别情况下造成的兼容性问题(如开机报错、无法调节亮度等,虽然发生的可能性不大)。

编译 coreboot

配置完成后,就可以立刻着手编译:

Shell
# 使用单处理器(单个线程)进行构建。会很慢!
make

# 使用多个处理器(多个线程)进行构建。
make -j$(nproc)

最终编译好的 coreboot ROM位于build子目录,文件名为coreboot.rom

刷入 coreboot 并开机测试

连接编程器,运行以下命令,将 coreboot 刷入 BIOS 芯片中:

Shell
sudo flashrom -p ch341a_spi -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -w build/coreboot.rom

若一切正常,输出结果将如下所示:

代码块
flashrom v1.2 on Linux 5.15.65-1-MANJARO (x86_64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" (8192 kB, SPI) on ch341a_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

刷好之后,松开夹具,断开编程器,扣上电池,开机!

上电后,coreboot 将初始化硬件,随后启动 SeaBIOS——一款开源的 BIOS 实现。SeaBIOS 再引导硬盘上的操作系统。

按下电源键不久,屏幕上出现 SeaBIOS 的版本号,以及本机的 UUID。不一会,本地硬盘上的 Grub 也成功引导,出现了「Welcome to Grub!」的字样,随后熟悉的Grub菜单出现在眼前。

启动成功!

内部刷写

刷好 coreboot 之后,将键盘、掌托及指纹识别器的排线按原样装回去,然后就可以放心上螺丝了。

后续的 BIOS 更新,无需再使用编程器,仅使用 Flashrom 就可以完成。

卸载lpc_ich驱动

使用 Flashrom 获取 BIOS 芯片状态的命令是flashrom -p internal。但一般情况下,在 Arch Linux 中运行时,会报错:

代码块
flashrom v1.2 on Linux 5.15.72-1-lts (x86_64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found chipset "Intel ICH9M".
Enabling flash write... Error accessing ICH RCRB, 0x4000 bytes at 0x00000000fed1c000
/dev/mem mmap failed: Operation not permitted
FAILED!
FATAL ERROR!
Error: Programmer initialization failed.

网上的刷写教程,甚至是 coreboot 的官方文档,都是不会告诉你这个问题的。

所幸,Flashrom 的官方文档提供了对策。只需卸载系统的lpc_ich驱动,即可释放对BIOS芯片的访问权限。运行以下命令:

Shell
sudo modprobe -r lpc_ich

备份与刷写

卸载上述驱动后,直接运行 Flashrom 刷写即可。你既可以备份整颗芯片,也可以只备份 BIOS 区域而保持 ME、GbE 等其他部分不变。

例如,刷写刚刚编译好的 coreboot:

Shell
# 刷写整个 BIOS 芯片
sudo flashrom -p internal -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -w build/coreboot.rom

# 只刷写 BIOS 区域,保持其他部分不变
sudo flashrom -p internal -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -w build/coreboot.rom --ifd -i bios

以及,备份当前版本的 BIOS:

Shell
# 备份整个 BIOS 芯片
sudo flashrom -p internal -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -r coreboot_backup.rom

# 只备份 BIOS 区域
sudo flashrom -p internal -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -r coreboot_backup.rom --ifd -i bios

排查后续问题

libgfxinit 下 Grub 的显示问题

我在测试启用了 libfgxinit 的 coreboot 时,启动过程中,会卡在「Welcome to Grub!」字样。但没过多久,Grub 仍能正常引导 Linux。

Grub 默认会以图形方式显示菜单,这要求显卡必须初始化图形功能——有别于传统的 VGA 文字模式。

然而,在使用 libgfxinit 引导系统时,如果不启用 Linear Framebuffer,则默认只能使用文字模式,而 Grub 无法对此作出自适应的处理,所以菜单无法显示。

对此,有两种解决方案:

方案一:将 Grub 切换到文字模式

进入 Linux 后,修改/etc/default/grub,取消注释下面这行:

代码块
#GRUB_TERMINAL=console

如果是新版本的 Grub,则取消注释这一行:

代码块
#GRUB_TERMINAL_OUTPUT=console

重新生成 Grub 配置文件:

代码块
sudo grub-mkconfig -o /boot/grub/grub.cfg

重启后,Grub 就会以简易的文字来绘制界面,可以顺利使用了。

方案二:启用 Linear Framebuffer

使用 Linear Framebuffer,就可以保证 Grub 的图形菜单能正常显示。

但是,Linear Framebuffer 不支持缩放,只能点对点显示,这意味着如果输入分辨率小于 Linear Framebuffer 指定的分辨率,画面就只能靠左上角显示。

并且,Grub 也无法获取 Linear Framebuffer 的最佳分辨率,它一律会用 640x480 的最低分辨率输出。最终的显示效果很“憋屈”。

所以,我们还需要设置 Grub 的输出分辨率。打开修改/etc/default/grub,修改参数GRUB_GFXMODE

代码块
GRUB_GFXMODE=1280x800x32

X200 的最佳分辨率是 1280x800,32位色深。后面的x32可以省略。

修改后,更新 Grub 配置文件,重启生效,此时 Grub 能全屏显示了。

Intel ME 造成的问题

Intel ME(Management Engine)是内置在英特尔处理器中的底层软件框架,用于远程管理、系统启动保护(Bootguard)等。它的固件集成在官方 BIOS 中,同时 coreboot 也提供了对 ME 的支持。

不过,据笔者实测,将 ME 集成到 coreboot 中,可能会导致一些潜在的问题,包括但不限于:

  • 电脑关机后,有很大几率无法一次点亮,需要反复重试;
  • 睡眠之后无法唤醒;
  • 关机后立即重启时,电脑会发出尖锐的蜂鸣声。

笔者在近期(2024年5月初)重新构建 coreboot 时,就把 ME 剔除在外。即,在make menuconfig配置过程中,不开启【Add Intel ME/TXE firmware】这个选项。刷入固件后,电脑无法一次点亮的问题就不再出现。

更新源码树后,记得重新编译工具链

你可以随时使用git pull命令来更新coreboot源码树。

但要注意的是,coreboot 会始终使用最新版本的 GCC 来作为交叉编译工具。如果编译时出现了以下的错误,则说明工具链需要重新构建了:

代码块
The coreboot toolchain for 'x86_32' architecture was not found.

此时,请使用以下命令,先执行清理,然后再重新编译工具链:

Shell
make crossgcc-clean
make crossgcc-i386 CPUS=$(nproc)

注意:如果不运行make crossgcc-clean,那么编译 GCC 时将会发生一些莫名其妙的错误,光搜索错误信息是完全找不到任何答案的。

随机重启与花屏的问题

在启用「开机时自动清空内存」之前,X200 会有无预兆重启的情况,长则十几分钟,短则一分钟不到,严重影响使用体验。后来在 coreboot 中让其每次开机时清空内存,该问题不再出现,电脑稳定性有了本质提升。

不过,使用过程中我发现,无预兆重启没了,反而多了无预兆花屏:Arch Linux 启动后,电脑会随机出现花屏的现象,表现为杂色色块像表格一样分布在屏幕上,同时电脑死机。

为此,我尝试各种方法抓取 coreboot 日志,例如使用cbmem工具获取日志(sudo cbmem -c)。然而折腾许久才明白,coreboot 的日志只记录到 SeaBIOS 完成系统引导的时候,操作系统启动后就不会再继续记录了。

那么,会不会是显卡问题?

我接着尝试在 Grub 中关闭显卡驱动,方法是在 Grub 菜单中选择 Arch Linux 的启动项,按e键编辑,在linux这行命令最后加上nomodeset参数。之后,Linux 成功引导,并且能通过Ctrl+Alt+F2快捷键切换到 TTY——还是最原始的 VGA 文本模式的 TTY。此时电脑很稳定,长时间运行 pacman 更新系统都没有花屏。

看来可以判断是显卡驱动的原因了。在 Linux 6.12.57 LTS 内核推出后,电脑终于可以正常使用,不再花屏,我猜想是该版本修复了英特尔显卡的驱动程序问题。

写在最后

忘记 BIOS 管理员密码,给我掌控手上这台 ThinkPad X200 带来了麻烦,无法进系统,近似于变砖。幸运的是,我有开源的力量——借助开源固件 coreboot,顺利绕开了官方 BIOS 的安全保护。

coreboot 的表现非常惊艳,按下电源键的一瞬间,就立即进入了 SeaBIOS,随后迅速引导硬盘中的 Arch Linux。启动速度远远快于官方 BIOS(仅支持 MBR 启动),表现堪比 UEFI 固件,不像官方 BIOS 在按下电源键后还要磨蹭那么几秒钟才亮屏。

如今,X200 成功焕发新生,不再吃灰,继续作为我的第二主力。在这里衷心感谢 coreboot 团队的匠心和努力,以及开源世界生生不息的力量。


参考资料

> 关注 少数派公众号,解锁全新阅读体验 📰

> 实用、好用的 正版软件,少数派为你呈现 🚀

  • 1coreboot 的衍生项目 Libreboot 也为 ThinkPad 提供了官方支持,以及预编译好的 BIOS ROM。但是这个项目不包含专有组件,例如缺少官方的 VBIOS,可能会影响使用体验。
  • 2螺丝旁的标记表示该螺丝用于固定的组件,如键盘、盖子等。

精选文章

100个探寻有趣世界的网站

  1、实时地球 网址: https://zoom.earth 实时图像每 10 分钟更新一次,提供风暴、天气预报、降水、火警等数据 2、陕西博物馆 360 度实景浏览 网址: https://sxhm.com/online.html 线上参观陕西博物馆,360度展示,共有五个展...