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マシンに入れる気はしないので試していません。
とりあえず技術的な話は置いておいて、まずはCDからのブート方法だけを書いておきます。
今回は手持ちのPentium MマシンであるThinkPad T42でためしています。
lubuntuのダウンロード方法やCD-ROMへの焼き方などはここでは触れません。CDからブートした後のメニューでの操作方法についてのみ書きます。
HDDへのインストール手順はメニューに従うだけですしPentium Mマシンだからといって変わることはありませんので割愛します。
CDからのブート時にforcepaeを指定して起動した場合、HDDにインストールするとgrub.cfgにforcepaeの指定がちゃんと反映されるようになっていますので、以降は何もしなくても普通にブートします。
なお、この方法がつかえるのはPentium Mのみです。Celeron Mも可能だと思うのですが試してはいません。
結局この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のタイプもわかります。引用するとこんな感じです。
いわゆる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のカーネルソースに適用してあげると(それだけではだめで別途SSE3対策が必要)一応うちのThinkPad T42でもブートまでは持っていくことができています。
ただ、CPU周りよりも周辺機器を動かすのが大変です。
まだ無線LANが動きません。有線でつなげば一応つかうことはできます。
トラックポイントは認識しますがタッチパッドは認識しません。
他にも起動時のスプラッシュ画面が出なかったり、起動直後は画面がピンク色でいったんターミナルに切り替えて戻すとちゃんと表示されたりします。他にもいろいろ問題がありそうです。
こんな感じでこちらのThinkPad T42は苦戦していますが、今のところ、CPU周りの問題だけはクリアになっていて、ブートだけなら問題なくできます。
ほかのPentium Mマシン向けにビルドする際でもCPU周りのカスタマイズ方法は参考になるかもしれませんので、この辺の話はまた別途書きたいと思います。
15.09.08 追記: ThinkPad T42で動作するChromium OSのカスタムビルドを公開しました。興味がありましたらお試しいただければと思います。
17.04.24 追記: 「本当にPAE機能がないPentiumⅢ以前のCPU」という記載がありましたが誤りであるというご指摘をいただきましたので訂正いたしました。
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からブートした後のメニューでの操作方法についてのみ書きます。
- CDからブートします。
- 言語選択メニューが表示されるので日本語を選びます
- メニュー画面が出ます。
- F6を押すと以下の画面になります。
- ESCをおして選択肢を消します。画面下に起動オプションという欄があります。
- forcepaeと打ち込みます
- RETURNキーを押すとブートが始まります。forcepaeの指定が効いた場合は以下のような表示が出ます。WARNINGと出ていますが、これはforcepae自体がちょっと無理やりな機能だという意味で出ています。基本的に気にしなくて大丈夫ですが、Pentium Mなら100%ブートできるというわけではなく、もしかしたら動かないかもしれません、ということです。この点については後述します。
- しばらくするとおなじみのスプラッシュ画面がでますが、うちのThinkPadでは色がおかしくなってますww
- 無事起動しました。
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」という記載がありましたが誤りであるというご指摘をいただきましたので訂正いたしました。
ランキングに参加してみました。クリックしていただければ嬉しいです。
にほんブログ村 |
パソコン ブログランキングへ |
PR
Comment
ThinkPad T42
ThinkPad T42で何とかChromium OSが動かせないかと試行錯誤しています。
ここで紹介されてた「Chromium OSへの応用」手順を教えて頂けないでしょうか?
lubuntu14.04と同様、CD-Rから起動してからHDDにインストールするのでしょうか?
そのCD-Rに落とすOSは、どのサイトからダウンロードされてますでしょうか?
ここで紹介されてた「Chromium OSへの応用」手順を教えて頂けないでしょうか?
lubuntu14.04と同様、CD-Rから起動してからHDDにインストールするのでしょうか?
そのCD-Rに落とすOSは、どのサイトからダウンロードされてますでしょうか?
ThinkPad T42での動作について
コメントありがとうございます。
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で動かす件ですが、現状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
ThinkPad T42に対応したChromium OSのカスタムビルドの配布をはじめました。良かったらお使いください。
http://chromiumosde.gozaru.jp
http://chromiumosde.gozaru.jp
こんな古い記事に反論書くのもあれですが
やたらと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機能が正常に働かない以前なら不良コアとして撥ねられたものも製品として出荷されている可能性があることは否定しません。
では。
P6アーキテクチャ以降のCPUでPAE機能を持っていない物は(Athlon系を含め)実質有りません。(初期のAtomはP5系アーキテクチャの再設計なので不明)
Pen Pro時代ですらCPU8発に16GB積めるなんて化け物マザーがありました。
対象OSはWindowsではなくUNIXやBSDでしたが。
以前は単にPAEのCPU feature flagが設定されておらず、OSからの問い合わせにPAEの有無を返すようになっていなかっただけです。
ただし、PAEが公式の機能となって以後は、non-PAEを謳ったものは、PAE機能が正常に働かない以前なら不良コアとして撥ねられたものも製品として出荷されている可能性があることは否定しません。
では。
プロフィール
HN:
zui
性別:
非公開
カテゴリー
最新記事
(09/28)
(09/03)
(08/26)
(07/23)
(05/24)
PR
忍者カウンター