忍者ブログ
PCメモ
PC関係のメモ、気付いたこと。 simhとChromium OSをいじって遊んでいます。 Chromium OSのカスタムビルドを配布しています。(http://chromiumosde.gozaru.jp) twitter: @zui22904336 PGP fingerprint: 45FC 0E47 A68A FA06 02FE 2BEF B72C C6E6 F9FF 1C19
Admin / Write
2014/05/11 (Sun) 12:10
Windows XPのサポート停止で古いXPマシンをどうしようか悩んでいる方も多いと思いますが、そのなかでも厄介なのはPentium MやCeleron Mマシンです。ネット閲覧程度ならまだ十分使えるのに選択肢が結構狭まってしまっています。

XPからの引っ越し先でLinuxを思い浮かべる方も多いと思いますが、最近のメジャーなLinuxディストリビューションではPentium MやCeleron Mマシンでブートすると以下のようなエラーがでて動かないことが多かったと思います。


(簡単に再現するためVirtualBoxを使っていますが、実機でも同じエラーになるはずです。)

そのため、Puppy LinuxやZolin OSといったいわゆる軽量Linuxを使うのが普通だったのかなと思います。

しかし、最新のlubuntu 14.04(これも軽量Linuxに分類されると思いますがw)ではこの問題への回避策がとられ、Pentium Mマシンでもブートできるようになりました。たぶんCeleron MもOKだと思いますが実機がないので試していません。

Ubuntuも同じかもしれませんが、非力なPentium Mマシンに入れる気はしないので試していません。

lubuntu14.04 をPentium Mマシンでブートする


とりあえず技術的な話は置いておいて、まずはCDからのブート方法だけを書いておきます。
今回は手持ちのPentium MマシンであるThinkPad T42でためしています。

lubuntuのダウンロード方法やCD-ROMへの焼き方などはここでは触れません。CDからブートした後のメニューでの操作方法についてのみ書きます。

  1. CDからブートします。
  2. 言語選択メニューが表示されるので日本語を選びます
  3. メニュー画面が出ます。
  4. F6を押すと以下の画面になります。
  5. ESCをおして選択肢を消します。画面下に起動オプションという欄があります。
  6. forcepaeと打ち込みます
  7. RETURNキーを押すとブートが始まります。forcepaeの指定が効いた場合は以下のような表示が出ます。WARNINGと出ていますが、これはforcepae自体がちょっと無理やりな機能だという意味で出ています。基本的に気にしなくて大丈夫ですが、Pentium Mなら100%ブートできるというわけではなく、もしかしたら動かないかもしれません、ということです。この点については後述します。
  8. しばらくするとおなじみのスプラッシュ画面がでますが、うちのThinkPadでは色がおかしくなってますww
  9. 無事起動しました。
この後はあとは左上のアイコンから普通にインストールできます。

HDDへのインストール手順はメニューに従うだけですしPentium Mマシンだからといって変わることはありませんので割愛します。

CDからのブート時にforcepaeを指定して起動した場合、HDDにインストールするとgrub.cfgにforcepaeの指定がちゃんと反映されるようになっていますので、以降は何もしなくても普通にブートします。

なお、この方法がつかえるのはPentium Mのみです。Celeron Mも可能だと思うのですが試してはいません。

結局forcepaeって何?


結局このforcepaeは何をやっているのか、というと、物理アドレス拡張(PAE)というCPUの機能が今起動しようとしているCPUにあるかどうかのチェックをバイパスし、PAEが使えるCPUとみなして強引に起動をかけてしまおうというものです。

Linuxカーネルは、起動時にCPUがどんな機能をサポートしているかを確認します。このときPentium MはPAEをサポートしている、という情報を返してきません。そのため、PAEを必要とする方法でビルドされた最近のLinuxカーネルは、Pentium MはPAEが使えないのでだめだ、というエラーを返してきます。

しかし、実はPentium Mは問い合わせにしかとするだけで、実際にはPAEが使えるようなのです。いわば隠し機能というやつです。意図的に隠し機能にしたのか単なるバグでCPU FlagからPAEが抜け落ちているのかはわかりません。

なので、今回の修正ではPentium M(またはCeleron M)の場合だけforcepaeが指定されたならPAEのチェックをバイパスし、PAEが使えるものとみなしてしまう、という機能を追加してPentium Mでも動けるようにしたわけです。

今回の修正ではCPUの種類をチェックしているので、Pentium M/Celeron M以外で本当にPAE機能がないCPUや、VirutalBoxなどの仮想環境でPAEをオフにした場合などはたとえforcepaeを指定しても以前と同様のエラーになります。これらについては上に書いたPuppy LinuxやZolin OSなどのnon PAEカーネルを使っているディストリビューションでないと動きません。

今回のPentium M向け修正でのカーネルパッチの内容は以下の場所で見ることができます。

[PATCH] x86: set Pentium M as PAE capable

このパッチを見れば、forcepaeが有効になるCPUのタイプもわかります。引用するとこんな感じです。

+	} else if (err == 0x01 &&
+		   !(err_flags[0] & ~(1 << X86_FEATURE_PAE)) &&
+		   is_intel() && cpu.level == 6 &&
+		   (cpu.model == 9 || cpu.model == 13)) {

いわゆるFamily6、model9または13のCPUでだけforcepaeが効くようになっています。これはPentium MとCeleron Mに相当しますがPentium MやCeleron Mという名前の付いたCPUがすべてこれに当てはまるかは把握していません。逆に、Family6 model9/13なCPUならみんなPAEを隠し持っているかというとそれも100%断言できるかは定かではありません。上でWARNINGを出していたのはその辺をふまえて「ちょっと無理やりなんだぜ?」と言っているんだと思います。

なお、PAEフラグが立っていない時、という条件がand条件で付いているので、PAEフラグをちゃんと返してくる一部のPentium Mにはこの修正の影響が出ないようになっています。

当初カーネルパラメータはforcepaeと言っていたようですが、もっと新しい記事ではカーネルパラメータの名前がpaeに変わっています。
lubuntuには、forcepaeと言っていた当時のパッチが取り込まれたようですね。

Chromium OSへの応用


このブログでは主にChromium OSを扱っていますが、このカーネルパッチをChromium OSのカーネルソースに適用してあげると(それだけではだめで別途SSE3対策が必要)一応うちのThinkPad T42でもブートまでは持っていくことができています。



ただ、CPU周りよりも周辺機器を動かすのが大変です。

まだ無線LANが動きません。有線でつなげば一応つかうことはできます。
トラックポイントは認識しますがタッチパッドは認識しません。
他にも起動時のスプラッシュ画面が出なかったり、起動直後は画面がピンク色でいったんターミナルに切り替えて戻すとちゃんと表示されたりします。他にもいろいろ問題がありそうです。

こんな感じでこちらのThinkPad T42は苦戦していますが、今のところ、CPU周りの問題だけはクリアになっていて、ブートだけなら問題なくできます。

ほかのPentium Mマシン向けにビルドする際でもCPU周りのカスタマイズ方法は参考になるかもしれませんので、この辺の話はまた別途書きたいと思います。

15.09.08 追記: ThinkPad T42で動作するChromium OSのカスタムビルドを公開しました。興味がありましたらお試しいただければと思います。

17.04.24 追記: 「本当にPAE機能がないPentiumⅢ以前のCPU」という記載がありましたが誤りであるというご指摘をいただきましたので訂正いたしました。






ランキングに参加してみました。クリックしていただければ嬉しいです。

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

パソコン ブログランキングへ

拍手[10回]

PR


Comment
Name
Title
Mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
無題
mono 2014/09/18(Thu)21:42:10 編集
Celeron m 330でも起動することが出来ました
ThinkPad T42
竹内 秀次 2015/08/01(Sat)15:33:20 編集
ThinkPad T42で何とかChromium OSが動かせないかと試行錯誤しています。
ここで紹介されてた「Chromium OSへの応用」手順を教えて頂けないでしょうか?
lubuntu14.04と同様、CD-Rから起動してからHDDにインストールするのでしょうか?
そのCD-Rに落とすOSは、どのサイトからダウンロードされてますでしょうか?
ThinkPad T42での動作について
zui URL 2015/08/05(Wed)02:43:17 編集
コメントありがとうございます。

ThinkPad T42で動かす件ですが、現状T42対応のChromium OSイメージは配られていないと思います。自分でビルドする必要がありますがデフォルトのままビルドしても動作しません。最低でも以下のカスタマイズが必要です。
・LinuxカーネルへのPAEパッチの適用
・sse3, ssse3, sse4.2を無効化するコンパイルオプションの設定
 ※ただし、Chromium本体に関しては有効にしてコンパイルする。
・ipw2200(無線LAN)のファームウェア追加
・wpasupplicantの設定変更(Chromium OSのデフォルト設定は古いwextドライバに対応していないので変更が必要)
・ブートパラメータでi915.modesetを0に書き換え、radeon.modesetを1にする
・タッチパッドの設定変更
更に、ThinkPad T42はUSBコントローラに欠陥があるようでUSB2.0モードではブートできない可能性があります(URL参照)。この場合はLinuxカーネルにパッチを当ててUSB1.1モードで強制的にブートできるようにする必要があります。

これらのノウハウはまだ記事にしていませんが記事にするだけで相当に時間がかかります。

ニーズがあるならそのうちThinkPad T42対応のイメージを配布しようと思いますが、お盆は忙しいので早くても8月後半から9月になると思います。
ThinkPad T42で動くChromium OS
zui URL 2015/09/07(Mon)21:55:54 編集
ThinkPad T42に対応したChromium OSのカスタムビルドの配布をはじめました。良かったらお使いください。

http://chromiumosde.gozaru.jp
NEC VersaPro VY13M/EX-Rで動作確認
KeleronM URL 2016/03/27(Sun)23:39:05 編集
CeleronM 350で動作しました
lubuntuのすぷらっしゅ画面
LinuxUser 2016/09/25(Sun)09:03:35 編集
スプラッシュ画面がおかしいのは、BIOSでビデオメモリの容量を最大にすると治りますよ!
こんな古い記事に反論書くのもあれですが
通りすがり 2017/04/24(Mon)16:45:03 編集
やたらとPAEについて誤情報をまき散らしてる人が多くて困るので。
P6アーキテクチャ以降のCPUでPAE機能を持っていない物は(Athlon系を含め)実質有りません。(初期のAtomはP5系アーキテクチャの再設計なので不明)
Pen Pro時代ですらCPU8発に16GB積めるなんて化け物マザーがありました。
対象OSはWindowsではなくUNIXやBSDでしたが。
以前は単にPAEのCPU feature flagが設定されておらず、OSからの問い合わせにPAEの有無を返すようになっていなかっただけです。
ただし、PAEが公式の機能となって以後は、non-PAEを謳ったものは、PAE機能が正常に働かない以前なら不良コアとして撥ねられたものも製品として出荷されている可能性があることは否定しません。
では。
Re: こんな古い記事に反論書くのもあれですが
zui URL 2017/04/24(Mon)21:37:39 編集
通りすがり 様

ご指摘ありがとうございます。私の認識に誤りがありました。記事の方訂正いたしました。
  HOME   34  33  32  31  30  29  28  27  26  25  24 
プロフィール
HN:
zui
性別:
非公開
PR
忍者カウンター
忍者ブログ [PR]