« Mac OS XからNTFSパーティションを読み書きする - MacFUSE + NTFS-3G | トップページ | KVM on Fedora 7 test 4 »

Fedora 7 test 4 on MacBook (multi boot)

先日、MacBookに作成したBoot CampパーティションにSolaris Nevadaを入れようとして失敗したので、今回はLinuxを入れてみることにしました。Linuxのどのディストリビューションにするかについては迷ったのですが、やはりインストーラが初めからIntel MacのGPT/GUIDパーティションに対応しているFedoraを選んでみました。FedoraのIntel Mac対応はFedora Core 6から始まっていますが,今回はGAが間近なFedora 7 test 4を使いました。

Fedora7compiz

上図のように、Compizも比較的安定してきており、3Dキューブのデスクトップ切り替えや、ウィンドウがぐにゃぐにゃ変形するエフェクトは新鮮な感覚を与えてくれます。

MacBookへのインストール自体には大きな問題はありませんが、いくつか注意しておきたい点がありますので、以下にまとめておきます。

  • インストール先ディスクの選択フェーズではカスタム構成を選択し、Boot Campパーティションのsda3のみマウントポイント(/)とフォーマットタイプ(ext3)を設定します。好みにもよりますが、私は独立したswapパーティションは作らず、Mac OS Xと同様にswapファイルで代用することにしました。
  • Fedora 7 test 4のインストールDVDではトラックパッドが効かないため、textインストールを選択するか、GUIインストールを使用したいならUSBマウスを接続します(インストール後はきちんとトラックパッドが使えます)。
  • AirMac用のドライバMADWifiをコンパイルする必要があるため、パッケージ選択画面で「開発ツール」を選択しておいた方がいいでしょう。

正しくインストールできたら、Mac OS XとFedoraの切り替えはブート時にoptionキーを押すことで出てくるブートメニューでWindowsと書かれたディスクを選択するだけです(Windowsを選択してLinuxが起動するというのも気持ちが悪いですが)。そのため、Fedoraの場合はrEFItをインストールする必要はありません。

FedoraはIntel Macを初めからサポートしていることもあり、デフォルトの状態で以下のデバイスがほぼ正しく動作しています。

  • ディスプレイ (1280x800という変則的な解像度もOK)
  • キーボード (一部のキーは認識されない
  • トラックパッド (2フィンガージェスチャは不可)
  • サウンド
  • Ethernet
  • USB (USBハードディスクのマウントを確認)
  • ACPI (メニューバーにバッテリの残量確認のアイコンが出ます)
  • Bluetooth (認識していることのみ確認)

デフォルトでもかなりいい線をいっているのですが、きちんと使えるような状態にするのに、以下の作業を行いました。

参考のため、これらの作業手順を以下に示します。

swapファイルの作成

今回は、パーティション構成をシンプルにするため、Linux用には1つのパーティションだけを使うことにし、swap領域にはファイル形式を利用することにしました。swapファイルはddコマンドで作成し、mkswapコマンドでswapフォーマットに変換します。以下の例は、1GBのスワップを用意する場合です。

# dd if=/dev/zero of=swapfile bs=1024 count=1024000
# /sbin/mkswap swapfile 1024000

後は、/etc/fstabに以下のようなswapのエントリを追加し、

/swapfile    none    swap    defaults    0 0

swaponコマンドでスワップを有効化します。

# /sbin/swapon -a

うまく設定されたかどうかは、topコマンドなどで確認します。

認識されないキーの代替マッピング

これはFedoraだけの問題ではなく、Ubuntuなどでも同様のようですが、MacBookの一部のキーが認識されません。「英数」や「かな」はいいとしても、「¥と|」のキーと「_」のキーが入力されないのは問題です。しかたがないので、以下のような~/.xmodmapファイルを作成し、「¥と|」をF10に、「\と_」をF9にマッピングしました。

keycode 216 = backslash underscore
keycode 217 = yen bar

上記のマッピングを有効にするには以下のように実行します。

$ xmodmap ~/.xmodmap

また、3ボタンエミュレーションを有効にするには、/etc/sysctl.confを設定します。以下の例は、ボタン2をF11に、ボタン3をF12にマッピングした例です。

# Mouse button emulation for MacBook (F11 -> button2, F12 -> button3)
dev/mac_hid/mouse_button_emulation = 1
dev/mac_hid/mouse_button2_keycode = 87
dev/mac_hid/mouse_button3_keycode = 88

なお、デフォルトではkeycodeを調べるためのxevがインストールされないため、キーマップをカスタマイズしたい方は、yum install xorg-x11-utils しておくといいでしょう。

AirMacを認識させるためMadWifiのインストール

Core Duoの初代MacBookのAirMacはAtherosのAR2425というチップで、MADWifiでサポートされています。802.11nにアップグレードできるCore 2 DuoのMacBookのチップがサポートされているかどうかは分かりませんので、以下の方法でベンダ:デバイスIDを調べ、MADWifiのコンパチビリティリストで動作確認されているかどうかを確認するといいでしょう。まず、lspciコマンドの結果をgrepし、

$ /sbin/lspci|grep Atheros
02:00.0 Ethernet controller: Atheros Communications, Inc. Unknown device 001c (rev 01)

先頭の02:00.0の部分をキーにもう一度lspciコマンドを実行します。

$ /sbin/lspci -n |grep 02:00.0
02:00.0 0200: 168c:001c (rev 01)

ここで、168c:001cの部分がベンダ:デバイスIDです。MADWifiのコンパチビリティリストにこのデバイスが載っていて、Notes:欄に動作すると書かれていれば大丈夫です。

MADWifiをコンパイルする前に、wireless-toolsとkernelソースがインストールされているか確認しましょう。前者はデフォルトで、後者はインストール時に開発ツールを選択していればインストールされているはずです。

$ yum list installed | grep wireless-tools
wireless-tools.i386                      1:28-1.fc6             installed
$ yum list installed | grep kernel-devel
kernel-devel.i686                        2.6.20-1.3104.fc7      installed

MADWifiのコンパイルですが、Fedora 7のkernel 2.6.20では安定版0.9.3が正しくコンパイルできませんので、madwifi-ngから最新のスナップショットを持ってきてコンパイルします(5/24現在、新しい安定版0.9.3.1が出ていますので、ひょっとしたらこちらでもコンパイルできるかもしれません)。

$ tar zxvf madwifi-ng-r2362-20070522.tar.gz
$ cd madwifi-ng-r2362-20070522
$ make
$ sudo make install

インストールができたら、modprobeコマンドでデバイスを認識します。正しく認識されれば、wifi0とその仮想デバイスath0が増えているはずです。

$ sudo /sbin/modprobe ath_pci

$ /sbin/ifconfig -a
ath0      Link encap:Ethernet  HWaddr 00:16:CB:BD:47:0F 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
              :
wifi0     Link encap:UNSPEC  HWaddr 00-16-CB-BD-47-0F-58-EE-00-00-00-00-00-00-00-00 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:199
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:16

普通なら、後は「システム>管理>ネットワーク」メニューで設定をするだけですが、なぜかwifi0がEthernetデバイスとして認識され、本来のath0がリストに現れません。しかたがないので、手作業で/etc/sysconfig/network-scriptsディレクトリに以下のようなファイルifcfg-ath0を作成します。

DEVICE=ath0
BOOTPROTO=dhcp
ONBOOT=no
MODE=Managed
ESSID="ネットワーク名を記入"
KEY="パスワードを記入(ASCIIなら s:passwordの形式)"

設定ファイルができたら、ifupコマンドでath0を有効化します。全てがうまくいけば、ifconfigでath0にIPアドレスが割り当てられていることが確認できます。

$ sudo /sbin/ifup ath0

$ /sbin/ifconfig -a
ath0      Link encap:Ethernet  HWaddr 00:16:CB:BD:47:0F 
          inet addr:10.0.1.4  Bcast:255.255.255.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:121 errors:0 dropped:0 overruns:0 frame:0
          TX packets:156 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:74333 (72.5 KiB)  TX bytes:25209 (24.6 KiB)
              :

なお、MADWifiのソースツリーは消さずにそのまま残しておきましょう。kernelをアップデートする度にMADWifiのカーネルモジュールが無効化されてしまうため、kernelをアップデートしたら上記の手順を(make cleanしてから)繰り返す必要があるためです。

以上の作業で、なんとか使える環境になりました。他にも解決したい大きな問題として以下の2つがあります。

  • トラックパッドをタップすると、デフォルトで左クリックとして認識されるようになっているのですが、これがとてもセンシティブで不用意にあちこちをクリックしてしまいます。この動作を無効にしたいのですが、方法が分かっていません。
  • Mac OS Xと同様、液晶パネルを閉じるとスリープ、開くとスリープ解除にできる点は素晴らしいのですが、スリープ解除後にAirMacが復帰してくれません。そのため、スリープ解除する度にsudo ifdown ath0; sudo ifup ath0を実行しなければなりません。

もし、上記2つの問題の解決策をご存じの方がおられましたら、アドバイスよろしくお願いします。

|

« Mac OS XからNTFSパーティションを読み書きする - MacFUSE + NTFS-3G | トップページ | KVM on Fedora 7 test 4 »

linux」カテゴリの記事

mac」カテゴリの記事

コメント

通りがかりのものです。

ターミナルコマンドを使うのに抵抗がないなら、
Sleepwatcherを使って、sleep復帰時にifdown/ifupを実行させるのはいかがでしょうか?

sleepwatcherは盗難防止(wakeup時に撮影→送信)やファイルバックアップ(sleep時に同期)などにも使えるので便利ですよ。

投稿: matto | 2007年7月 4日 (水) 10時35分

mattoさん、

有益なコメントありがとうございます。
fdown/ifupをSleepwatcherから実行で、十分だと思います。

また、Sleepwatcherは、Mac OS Xでも使える(MacPortsのパッケージとしてもある)ようなので、今度試してみようと思います。

投稿: javaflavor | 2007年7月 4日 (水) 23時51分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/181807/15178378

この記事へのトラックバック一覧です: Fedora 7 test 4 on MacBook (multi boot):

« Mac OS XからNTFSパーティションを読み書きする - MacFUSE + NTFS-3G | トップページ | KVM on Fedora 7 test 4 »