web-dev-qa-db-ja.com

Mac OS X 10.6カーネルが32ビットモードで実行されるのはなぜですか?

私は10A432を実行している4GBのメモリを搭載したMacBookPro(5,1)を持っていますが、32ビットカーネルを実行しています。

64ビットモードで実行されない理由と、そのようにするにはどうすればよいですか?

10
Chopper3

JonSiracusaによるSnowLeopardのレビューで、彼は 64ビット遷移について説明しています

TigerLeopardSnow Leopard

短いバージョンは次のとおりです。 「混合モード」がないため、64ビットカーネルには64ビットカーネル拡張とドライバーが必要です

それらはまだ広く利用可能ではないので、Appleは、多くのものを壊さないように、デフォルトで32ビットを選択しました。

記事からの指示:

すべてのK64対応Macで、「6」キーと「4」キーを同時に押しながら起動して、64ビットカーネルを選択します。より永続的な解決策として、nvramコマンドを使用してArch=x86_64boot-args文字列に追加するか、ファイル/Library/Preferences/SystemConfiguration/com.Apple.Boot.plistを編集してArch=x86_64をカーネルフラグ文字列に追加します。

...
    <key>Kernel</key>
    <string>mach_kernel</string>
    <key>Kernel Flags</key>
    <string>Arch=x86_64</string>
...

32ビットカーネルに戻すには、起動時に「3」キーと「2」キーを押し続けるか、上記のいずれかの方法を使用して、「x86_64」を「i386」に置き換えます。

12
Lake

他のほとんどのオペレーティングシステムとは異なり、SnowLeopardで64ビットカーネルを実行するメリットはあまりありません。 WindowsおよびLinuxでは、64ビットアプリケーションを実行するには64ビットカーネルが必要です。 OS Xでは、32ビットカーネルで64ビットアプリケーションを実行できます。

ほとんどの人は、OS Xで32ビットカーネルを実行すると、マシンのパフォーマンスや機能が制限されることを懸念しているようですが、実際には、これによる重大な影響はありません。 32ビットカーネルは64ビットアプリケーションの実行をサポートし、それらのアプリはカーネルによって36ビットPAEアドレス空間にマップされる仮想64ビットアドレス空間を持っているため、64ビットの場合と同じように動作します。ビットカーネル。メモリ使用量がより制限され、メモリマップされたI/Oが使用可能な範囲になります。 Appleが32ビットカーネルでこのアドレス空間を処理する方法は、物理メモリに32 GBの制限をもたらし、PAEで4GBの32ビットの制限を破ります。パフォーマンス面ではありません。 32 GB以下のメモリを搭載した64ビットカーネルを使用して測定可能なものがある場合は、多くの利点があります。必要に応じて、64ビットカーネルで強制起動するときに、いくつかのベンチマークを自分でテストできます。を保持することによって 6 そして 4 起動時のキー。パフォーマンスに大きな違いが見られるとは思えません。

もう1つの問題は、デバイスドライバー、カーネル拡張、およびデバイスのファームウェアとの互換性です。デバイスドライバーとカーネル拡張機能の場合、ビット数を一致させるか、再コンパイルするか、書き直す必要があります(特に、これらのタイプのコードで一般的な部分であるアセンブリがある場合)。 AppleのEFIは元々32ビットのみで提供されていましたが、最近では一部のモデルに64ビットのファームウェアが搭載されています。オペレーティングシステムがファームウェアと通信するには、カーネルとEFIのビット数が一致している必要があります。 EFIとの通信に関連するのは、起動ディスクやいくつかの電源管理コントロールの選択などです(たとえば、複数のOS Xがインストールされていて、バッテリーがなくなった後にスリープから復帰する必要がある場合など)。

では、64ビットカーネルはメリットになるでしょうか?パフォーマンスに関しては実際にはそうではなく、互換性を高めるためにSnowLeopardを実行しているほとんどのマシンで32ビットカーネルを使用するApple)の知恵を見ることができます。

7
Lara Dougan

MacRumorsにリークされた内容によると(公式文書はNDAの下にあるため)( ソース )、64ビットカーネルの実行をサポートしているのは次のコンピューターのみです。

  • 2008年初頭のMacPro(MacPro 3,1)
  • 2008年初頭のXserve(Xserve 2,1)
  • MacBook Pro(15 "/ 17")(MacBookPro 4,1)
  • 2008 iMac(iMac 8,1)
  • Unibody MacBook Pro(MacBookPro 5,1および5,2)
  • 2009年初頭のMacPro(MacPro 4,1)
  • 2009 iMac(iMac 9,1)
  • 2009年初頭のXserve(Xserve 3,1)。

XServesのみがデフォルトで64ビットカーネルを使用します。

あなたが保持しているコンピュータを起動する場合 6 そして 4 キーは64ビットカーネルを起動するか、別のキーに従って ソース それらを壊しますNDA編集できます/Library/Preferences/SystemConfiguration/com.Apple.Boot.plistカーネルフラグを追加するか、nvramで実行します。

7
Chealion

ジェイソンの残念ながら難読化された リンク 非常に有用な情報を隠しました:

ioreg -l -p IODeviceTree | grep firmware-abi

64ビットEFIMacは報告します

| | "firmware-abi" = <"EFI64">
5
Justin Love

Snow Leopardがリリースされるまで、どのシステムが64/32ビットモードをサポートするかはわかりません...しかし、すべての兆候は、SnowLeopardがカーネルサポートで透過的になることです...

しかし、残念ながら、「ダウナー」になって申し訳ありません。Appleseedの登録メンバーの場合、Appleseedフォーラムでは、カーネルを64ビットモードに強制する方法について説明しています。それ以外の場合、他の場所でSnow Leopardを受け取った場合でも、心配する必要はありません。

SnowLeopardのリリースはもうすぐです...

1

それは大丈夫です、理由はここにあります:

  • 32ビットSLは64ビットアプリを実行します。 SLは、起動するカーネルバージョンに関係なく、64ビット互換です。

  • SLは、32ビットカーネルで起動した場合でも、64ビットアプリを実行し、4GBを超えるRAMに対応できます。

  • 64ビットカーネルが必要な理由は、カーネルが32GBを超えるRAM(Xserveではデフォルト)をアドレス指定する必要がある場合、または64ビットのみのkext(開発者)を使用している場合)です。

  • 64ビットカーネルは、コンピュータを魔法のように高速化するものではありません。 32GBを超えるRAM(とにかくIOWのみXserves))が必要な場合を除いて、アドレス指定の理由からも必要ありません。

  • コンシューマーシステムで32ビットをデフォルトにし、プロと開発者に64ビットカーネルオプションを提供することによりAppleは最大の互換性と最大の柔軟性を維持しています

  • 64ビットは主に開発者向けオプションです。これを使用して、新しい64ビットドライバー/ kextをテストし、64ビットカーネルで動作することを確認できます。

言い換えて引用 Snow Leopardはデフォルトで32ビットカーネルをロードします

0
Jason