870 :
862:
これ?
PowerPC Linux Keycodes Alert!
2001年の4月あたりより前にビルドされたカーネルを利用していて、
woodyへのアップグレード、カーネルのアップグレード、またはキー
マップを変更しようとしている場合、woodyのPowerPC版のキーコード
変更には十分注意してください。
何が起きたのかというと:powerpc版をLinuxのメインストリームに
引っ張ってきて、現在とこれから先のコンフリクトを消すために、
woodyのconsole-dataパッケージはインストール時にADBキーコード
マップ(これまでpowerpc版カーネルで一般的だったもの)のかわり
に現在のLinuxのキーコードマップに変更されました。
(つづく)
871 :
862:02/10/25 01:25 ID:rUCFbPxX
インストールシステムのカーネルはそれ用のパスを追いかける
ように変更されたので、新インストール用カーネルはADBキー
コードではなくLinuxキーコードを利用します。つまり、ADB
キーコードのサポートなしにコンパイルされたカーネルでは
ADBキーコードを利用することはできません。Linuxキーコード
は'New Input Layer'のひとつの特徴で、2.4系カーネル
バージョンのサイクルの後の全アーキテクチャでの全入力
デバイスの標準となるよう設定されています。
まだADBキーコードを使っていたくて、使いたいカーネルが
CONFIG_MAC_ADBKEYCODES=nなしでコンパイルされている場合は
CONFIG_MAC_ADBKEYCODES=yにしてリコンパイルすればADBキー
マップを使いつづけることができます。
Mac/AppleのADB用キーボードマップとLinuxキーコードはぜんぜん
違っています。そのため、準備が必要になるのです。ブート
インストラクションやカーネル、キーマップを設定しないと、
いつか「root」と入力してもログインプロンプトには「sswj」
と表示されているのを見る羽目になるでしょう。不満だらけの
状態といえます。
(つづく)
872 :
862:02/10/25 01:28 ID:rUCFbPxX
いま手元に辞書ないんで細かいところは勘弁。
873 :
862:02/10/25 01:39 ID:rUCFbPxX
Planning Ahead
このような状況に陥るのにいちばんありがちなのはpotatoから
woodyにアップグレードする時です。この場合、console-dataが
アップグレードされたときにあるダイアログが組み込まれてい
ます。アップグレードが行われる際にカーネルがチェックを
作成し、ADBカーネルを走らせている場合はその状況について
警告され、どちらを選ぶか決めるよう尋ねられます。
この問題についてすでに全部分かっていれば、選択は簡単です。
新しいブート時のキーマップを入力して、それからアップ
グレードを完了させ(再起動の前に!)、ブート設定を修正して
(quick.confかyaboot.confで)、ブートするカーネルイメージの
セクションに下の行を追加します:
append="keyboard_sends_linux_keycodes=1"
もうすでに append= という行があれば、"の中に下のような行を
付け加えます:
append="video=ofonly keyboard_sends_linux_keycodes=1"
編集が終ったら quick か ybin を実行して本物のブートローダー
に設定を保存するのを忘れずに。
874 :
862:02/10/25 01:40 ID:rUCFbPxX
875 :
862:02/10/25 01:44 ID:rUCFbPxX
この状況が発生するもうひとつの事例はXを4.0.xから4.1.xに
ADBキーコードのカーネルでアップグレードする場合です。
あなたのXF86Config-4ではXkbModelが"macintosh"になっている
はずですが、この変更によりmacintoshキーボードというのは
新しいLinuxキーコードだというようになってしまっています。
ADBキーコードのままにしたい場合はXkbModelを"macintosh_old"
にしなければいけません。
876 :
862:02/10/25 01:50 ID:rUCFbPxX
New Woody Installations
新規にwoodyをインストールする場合は、linux-keycode keymapに
なり、linux-keycodeカーネルがインストールされます。二つとも
マッチしているので、問題はありません。以下を除けば、
ですが。
インストール後にカーネルを変更して、それがADBカーネル
だった場合、同じ問題が逆になって発生します。さらに・・・
/usr/share/keymaps/macから選択してキーマップを手動で変更
した場合、これらは全てADBキーマップですので、linux-keycode
のカーネルにマッチしません!
877 :
862:02/10/25 01:53 ID:rUCFbPxX
ちょっとコーヒー飲んでくる。
878 :
862:02/10/25 02:15 ID:rUCFbPxX
It Won't Happen To Me -- But When It Does
では、rootと入力してsswjと表示されるようになったら、
どうやってそこから脱出しますか?または、その逆に(tab)sswと
入れてrootと表示される場合は?
Linuxを使っている人たちはコンピュータの電源を落すことを
嫌います。それをやるといつも何らかのファイルシステムが
壊れ、ちゃんと復元されることもあればそうでないこともある
からです。そこで、このような事態になった場合に正しく
システムをシャットダウンする方法についていくつか提案
します。
sshをシステムにインストールしてあり、別のコンピュータから
ログインできる場合は、とりあえずリモートで問題を修復する
ことができます。rootアカウントでログインして、以下を実行
しましょう:
cd /proc/sys/dev/mac_hid/
echo 0 > keyboard_lock_keycodes
echo 1 > keyboard_sends_linux_keycodes
再起動するまでキーボードは通常どおり動きます。これで
カーネルとブートローダーのキーマップをシンクロさせる
機会ができるので、利用しましょう!
879 :
862:02/10/25 02:29 ID:rUCFbPxX
システムに再起動やシャットダウン用コマンドのキーコンビ
ネーションがあれば、次を参照してどのコンビネーションに
なるか弾き出して適用しましょう。PowerPCでは、ADBキー
マップがロードされていれば通常のキーの組み合わせは
Control-Shift-Deleteです。これをLinuxのキーコードにすると
Control-F6-F12になります。Linuxのキーコードがロードされて
いる場合は、ADBのマップになっているカーネルでは
Shift-AltGr-Equalsです。ではグッドラック。
私のキーボードにはDeleteキーがありませんので、ADBに設定
されたカーネルでlinux-keycodesマップがロードされた場合、
下の表からroot(2==3に続いてF5)でログインする方法を導き
だしました。 rootパスワードも下の表を使って
21 tab-key ==3続いてF5とタイプしました。または
halt(p]j3続いてF5)を使うこともできます。
間違ったキーマップでは使用できない文字もあります。表では
それらは空白になっています。
880 :
862:02/10/25 02:31 ID:rUCFbPxX
Linux-keycodes keymap がロードされて、カーネルの設定が
ADB の場合
入力したい文字: a b c d e f g h i j k l m n o p q r s t u v w
出力したい文字: ] TAB m u 1 [ i p 5 Return l j ` Space = 9 y 2 o 3 6 . t
x y z 0 1 2 3 4 5 6 7 8 9 * / [ ] , = - ` \ ;
n 4 / b d f h g z x c v Alt F7 7 - Backspace w q ; , '
Control Shift Enter Tab Backspace Fwd-Del Space
F6 Ctrl or \ F5, 8 r e F12 CapsLock
Home NumLock Clear AltGr =(numkpd) Escape F11 F12
Clear +(numkpd) F6-6 Shift Fwd-Del s kp-5 kp-6
F1 F2 F3 F4 F7 F9
Left-Arrow Right-Arrow Down-Arrow Up-Arrow kp-. kp-*
Left-Arrow Right-Arrow Up-Arrow Down-Arrow
F13 F11
881 :
862:02/10/25 02:33 ID:rUCFbPxX
カーネルが Linux-keycodes に設定され、 ADB キーマップが
ロードされた場合
入力したい文字: a b c d e f g h i j k l m n o p q r s t u v w
出力したい文字: 0 7 1 Backspace 2 4 3 g l ' k c x s h - Tab Esc w d 8 =
x y z 0 1 2 3 4 5 6 7 8 9 * / [ ] , = - ` ;
6 q 5 Control e r t y i u [ Return p z f a \ o ] m `
Control Shift Return Tab Backspace Fwd-Del \ Space
Shift AltGr j b , =(numkpd) Shift n
Clear AltGr =(numkpd) CapsLock Escape Alt
Home CapsLock Fwd-Del Space / kp-*
F1 F2 F3 F4 F5 F6 F7 F8 F9 F0 F11 F12
Enter Ctrl / Fwd-Del
Left-Arrow Right-Arrow Up-Arrow Down-Arrow
F1 F2 F4 F3
882 :
862:02/10/25 02:44 ID:rUCFbPxX
How To Figure Out Your Current Status
キーマップには今のところ内部にコメントがないので、もし
どちらのマップがアクティブになっているのかわからない場合
は、keycode 1 の行を次のコマンドで見て調べられます。
zgrep 'keycode *1 =' /etc/console/boottime.kmap.gz
keycode 1 = Escape の場合はlinux(実際にはi386)のキーコード
マップです。keycode 1 = s ならADB(ADB dvorakの場合は
keycode 1 = o)です。
/boot 内の config-XXXXX ファイルでブートに使っている
カーネルがADBキーコードのサポートありでコンパイルされて
いるかいないかを見られます。調べるには次のコマンドを
使います。
grep MAC_ADB /boot/*
ブート可能なカーネル用のconfigファイルのリストを手に入れ
なければいけません。以下のようなエントリーがあれば
/boot/config-2.4.12-powerpc:CONFIG_MAC_ADBKEYCODES=y
あなたのカーネルはADBコードのサポートありでコンパイルされ
ています。もし最後の文字がnなら、linux-keycodeカーネルです。
883 :
862:02/10/25 02:55 ID:rUCFbPxX
How To Fix It
いったんおかしくなったシステムをシャットダウンしたら、
今度は修復しなければいけません。どうすればいいかって?
rescueディスクを使うか修復用に別パーティションから
ブートさせなければいけないかもしれませんね。
もし問題がADB向けにコンパイルされたカーネルがlinux用
コードのキーマップであれば、単純に
keyboard_sends_linux_keycodes=1
カーネルイメージのラベルを入力した後にこれをboot:
プロンプトに入力しましょう。ただしこれは一度の起動のみの
修復ですから、ブート設定ファイルを編集してブートローダー
に保存して変更をそのまま継続させるようにしましょう。
問題がその逆の場合(linuxのキーコードのカーネルにADBの
キーマップ)は、ADBキーマップを取り除く必要があります。
/usr/share/keymaps/i386の中のどのキーマップもコピーできます。選択肢はたくさんあります。たとえば
cd /usr/share/keymaps/i386/qwerty/
cp mac-usb-us.kmap.gz /etc/console/boottime.kmap.gz
です。
884 :
862:02/10/25 02:56 ID:rUCFbPxX
あー、以上です。おやすみなさい。
885 :
862:02/10/25 03:01 ID:rUCFbPxX
バグ報告は誰かやってほしいなあ。
あと、上の和訳は勝手に使ってもらってOK。公式ページ
に追加されると鼻高々。クレジットは、追加の際に作業して
くれた人になってOK。(チェックもしてくれるだろうから)
886 :
862:02/10/25 03:24 ID:rUCFbPxX
ごめん。s/出力したい文字:/入力する文字: /