OS X 10.6 64 vs. 32 bit kernel

O

Ojj, troszkę się zdziwiłem, jak po przeinstalowaniu systemu na nowy dysk odkryłem, że mimo iż aplikacje są 64 bitowe, to kernel jednak działał tylko w 32 bitach. Szczególnie, że na poprzednim dysku kernel był odpalony w 64 bitach. Jakieś machlojki, ale z drugiej strony, normalka, ponieważ OS X 10.6 dopiero od wersji 10.6.4 włącza per default 64 bit kernel na sprzęcie, który to obsługuje, a ja przecież instalowałem 10.6.0 i upgradowałem.

Czy mój Mac umie 64bity?

Dość łatwo to sprawdzić. To czy nasz kernel jest już odpalony w 64bitach widać wykonując polecenie uname -m. Jeśli wynikiem będzie i386 to mamy odpalony 32 bitowy kernel, a jeśli natomiast x86_64 to 64 bitowy kernel (PPC pomijam).

Ale jak w ogóle sprawdzić czy Mac potrafi odpalić 64 bitowy kernel? Też nie jest to trudne. Interesuje nas bowiem wersja firmware’u EFI. Sprawdzimy ją poleceniem:

ioreg -l -p IODeviceTree | grep firmware-abi

U mnie sprawa wygląda następująco:

$ ioreg -l -p IODeviceTree | grep firmware-abi
    | |   "firmware-abi" = <"EFI64">

Czyli wszystko w porządku. Możemy odpalać 64bitowy kernel.

Metoda jednorazowa

Dla czystego testu czy system w ogóle się uruchomi, należy po uruchomieniu Mac’a wcisnąć i trzymać jednocześnie klawisz ‘6’ i ‘4’, zanim pojawi się szare jabłko. Proste i intuitywne intuicyjne, prawda?

Po udanym boocie systemu, polecenie uname -m powinno pokazać już x86_64.

Teraz wypadałoby nauczyć system by już zawsze uruchamiał system z 64 bitowym kernelem, ponieważ teraz po reboocie system wróci w tryb 32 bitowego kernela.

Metody na stałe

W sumie istnieją trzy metody by na stałe nauczyć system bootować w konkretnej konfiguracji, czy to 64 czy 32 bit kernel.

Metoda sugerowana przez Apple

Ta metoda sprowadza się do uruchomienia polecenia:

sudo systemsetup -setkernelbootarchitecture x86_64

w Terminalu.

Metoda nadpisania PRAMu

Ponoć nie wiadomo co może się stać jeśli użyje się tej metody, a hardware nie wspiera 64bitów. Można jednak system odratować. Polecenie do nadpisania PRAMu wygląda tak:

sudo nvram boot-args="arch=x86_64"

Jeśli system nie wstanie po tej komendzie, można zresetować PRAM do ustawień fabrycznych trzymając przy uruchomieniu komputera jednocześnie klawisze ALT CMD P R.

Metoda edycji pliku konfiguracyjnego

Nie polecam. Dlatego też tylko krótko wspomnę który plik i co do niego wpisać.

Edytujemy plik /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

a w nim dopisujemy arch=x86_64 w sekcji Kernel Flags.

Opłaca się przejść na 64bitowy kernel?

Nie zawsze. Należy sprawdzić czy cokolwiek się poprawiło i czy wszystkie sterowniki i moduły kernela poprawnie działają – niektóre third party moduły są bowiem tylko 32 bitowe, mimo że Snow Leopard wymaga od Developerów by dostarczali 64 bitowe binarki. Kernel 32 bitowy w OS X bez problemu obsługuje aż do 32GB RAM, także jeśli masz więcej, to powinieneś włączyć 64 bitowy kernel. Tyle.

Bijcie!

About the author

Bartosz

iOS and OS X software engineer. Currently working in Berlin, Germany.

5 comments

By Bartosz