世界を動かす技術を、日本語で。

ThinkPad X270にCorebootを移植しました

概要

  • corebootlibreboot をX270に移植した体験記
  • BIOSダンプハードウェア修理 の具体的手順を解説
  • X270とX280の違い やトラブル対応の詳細
  • NVMe/WiFi問題の解決 と開発コミュニティとの連携
  • 最終的な成果と今後の展望について言及

X270へのcoreboot + libreboot移植体験記

  • 2026年2月18日の投稿 でX270対応を宣言、1週間以内に達成
  • X270(20HMモデル) はKaby Lake世代のCPU/チップセット搭載
  • 移植作業の第一歩として BIOSイメージのダンプ を実施
    • バックアップ作成
    • Intel Management Engine領域の抽出
    • GbEセクション(有線LAN用)やIFD(Intel Flash Descriptor)の確保
  • pico-serprog をRP2040-zeroにセットアップし、 flashprog と組み合わせてSPIフラッシュの読み書きを実現

ハードウェアトラブルと修復

  • 作業中にコンデンサを破損・紛失
    • シルク印刷と回路図で「PJ304」付近の損傷箇所を特定
    • Digikeyで新しいコンデンサ(10個で約C$10)を調達し修理

BIOSイメージの解析とdeguard活用

  • ダンプしたBIOSイメージの内容を確認し、 ifdtool で詳細分析
  • deguard のREADMEに従い、パッチ適用や領域抽出を実施
  • Intel Management Engineのパッチ適用方法を理解
  • flash descriptorとGbE領域の重要性を再認識

X270とX280の違い(パート1)

  • Thunderbolt非搭載 (X270)、 SODIMMスロット1基 (X280はオンボードRAMあり)
  • X280用corebootをベースに、Thunderbolt関連ピンを無効化してX270用に調整
  • GPIOピンの違いと MEC16xxシリーズ (X270はMEC1653、X280はMEC1663)の違いを発見
  • 最初のビルドに成功し、作業を一時中断

NVMeブート問題と再修理

  • NVMeブート不可、WiFi/NVMeがlspciで認識されない問題発生
  • ショートしたコンデンサが原因で、再度修理を実施
  • SeaBIOS上でNVMeが消失、LiveUSB起動でもWiFi/NVMeが認識されず

コミュニティとLeah Roweの協力

  • #libreboot(liberachat)で相談、Leah Rowe(Libreboot創設者)と協力
  • 複数ROMのテストやアドバイスを受け、Intel Management Engineの問題を否定
  • me_cleanerや--whitelist MFSオプションの注意点を学ぶ
  • コミュニティの忍耐強いサポートに感謝

X270とX280の違い(パート2)と最終解決

  • 問題の原因は PCIe割り当てとoverridetree.cb にある可能性
  • X270のWLANカードの CLKREQ配線 をX280と比較し、正しい配線へ修正
  • WWAN割り当ても考慮し再ビルド、 GRUB起動とGuix System動作を確認
  • WiFi(プロプライエタリ)とNVMe が正常動作

今後の展望と感謝

  • X270 deguardcoreboot変更点 のアップストリーム作業を開始
  • Guix用に ath9kワイヤレスドングル を導入、将来的に内蔵化も検討
  • librebootheads の利用を強く推奨
  • Leah Roweとlibrebootコミュニティへの感謝

主なキーワード :coreboot、libreboot、X270、BIOSダンプ、ハードウェア修理、PCIe、NVMe、コミュニティ協力、アップストリーム

Hackerたちの意見

X270の厄介なバグ(意図的?)が解決できるかも。サードパーティの9セルバッテリーを使うと、CPU_PROCHOTが常に発生して、プロセッサのクロック速度が1GHzを下回っちゃうんだよね。昔X270を使ってたときは、ブート時に実行されるシェルスクリプトを作って、レジスタをいじってサーマルスロットリングを無効にしてた。理想的ではないけど、レノボの公式バッテリーがすぐに製造中止になったから、なんとか使える状態にはなったよ。

ACPIテーブルが原因かもと思う?

可能性はあるね。通常、これは埋め込みコントローラーが処理するんだけど、それが逆になってるかどうかはわからない。CPUにPROCHOTを意味するピンがあることを知らせるGPIOラインをトライステートにできるかもしれないから、ECの試みを無視できるかも。

何年も経ってやっとx270の状態がわかって嬉しい!今は電源に繋いでも問題ないから、家のサーバーとして使えてるしね。

ほぼ確実にそうだね。PROCHOTはプログラム可能だよ。

Thinkpadも、90Wが必要なフル稼働時でも、65Wの電源を検出すると同じことをするよ。

僕はThinkPad X1 Extreme g1の幸せなオーナーだったんだ。新品のオリジナルバッテリーなのに、箱から出した時からバグがあった。サーマルスロットリングが始まると、もうフルGHzには戻らないんだよね。すぐにスロットリングしちゃったのは、CPUが大きいのにシャーシが小さいから。そうそう、そんなスクリプトも作ったことがあるよ。今もどこかの棚にあるから、また使う日が来るかもね。

ThrottleStopを使えば、非標準バッテリーでPROCHOTを無効にできるよ。僕もDell Precisionノートパソコンで、130Wの専用バレルプラグの代わりに60WのUSB-C充電器で充電してたら、スロットリングの問題に遭遇したことがある。システムが低出力充電器の警告を出して、CPUの周波数を積極的にスケーリングし始めたんだ。ThrottleStopを使ったら、軽い作業(ウェブブラウジングや古いゲームなど)には60WのType-C充電器を問題なく使えたよ。[1]: https://www.techpowerup.com/download/techpowerup-throttlesto...

一緒にいじるのを楽しんでくれる妻がいたらなぁ。

探せば見つかるよ。ただ、ロマンチックなことにはあまり押し付けない方がいいかもね。

これ、めちゃくちゃトランスコードされてるな。ああ、todsacerdoti。 ;)

私はトランス女性だよ、そうだよ :o (私のブログを投稿したユーザーは私じゃないからね :p)

Atomフィードが壊れてる :(

ごめん、ちょっと調べてみるね。

OPはどうやってシリアルポートなしでデバッグしたんだろう?コアブートを2つのデスクトッププラットフォームで試したことあるけど、HWシリアルポートがあったから楽だったんだよね…

気をつけていれば、シリアルラインを見つけられることもあるよ。でも、もし見つからなかったら、flashromを使って出力を保存して、失敗するたびに読み返すのがいいよ。できれば、回路図(著者が持ってるみたいだし)を見たり、根気よく手作業で探したりして、シリアルを見つける方がずっと簡単だよ。

x280とx270は似てるから、ポストやライブUSBからブートするのもそんなに苦労しなかったよ(実質的に良いテンプレートになったし)。コンソールの表示はcbmem -1で、NixOSのライブUSBにnixpkgs#coreboot-utilsを使って実行できたよ。

すごい仕事だね!でも、corebootやBIOSのコードが熱管理やバッテリーコントローラーと直接連携できるなら、AppleのノートパソコンみたいにOSにインターフェースを提供することでバッテリー寿命を改善するのも可能なんじゃないかな?

librebootをおすすめする理由はたくさんあるし、librebootが合わないならheadsもいいよ。でも、なんで? 投稿には、ノートパソコンに付いてくる標準BIOSよりも何が良いのか、一つも理由が書かれてないんだよね。

このブログ記事の目的は、何かを売ることじゃないんだ。HNでは混乱することもあるよね、わかるよ。

あなたのシステムの独自コンポーネントをオープンソースのものに置き換えるんだ。https://libreboot.org/#why-use-librebootを読むと、さらに理解が深まるかも。

ずっと疑問に思ってたんだけど、ノートパソコンでcorebootを使う実際のメリットって何?

このスレッドのPROCHOTの話はいい例だね。Lenovoはバッテリーの製造をやめて、サードパーティのものは人工的なスロットリングを引き起こす。唯一の解決策は、ブートスクリプトでレジスタをいじること。corebootを使えば、ちゃんと修正できるんだ。もっと広く言えば、起動時間が速くなる(サブ秒のPOSTは普通だし)、ベンダーのバloatや隠れた電話ホームの挙動がファームウェアにないし、OSがロードされる前に何が動いているかを監査できる。これ、思っている以上に大事なんだよ。BIOSはOSレベルのセキュリティが始まる前に、マシン上のすべてにフルアクセスできるからね。

すごくいいね!もっと新しいThinkpadでもCorebootが使えたらいいのに。僕はZ13 Gen2を持っていて、壊れるまで使うつもりなんだけど、Corebootで解放したいんだ。でも残念ながら、できないんだよね。