久しぶりに自作ARMエミュレータememuを(ソースコードはこちら)動かそうと思い、Linux 4.4のlatestである、Linux 4.4.146をダウンロードしました。
このememuではARM Versatile PB/APボードの一部デバイスと、CPU ARM926EJ-Sの一部、アーキテクチャで言えばARMv5T相当をエミュレーションしています。
巷で手に入るコンパイラはARMv5Tより新しい命令を出力してしまい、エミュレータで実行できませんので、最初にcrosstool-ngで、ARMv5T向けのgcc 8.1.0を作成しました。
いざLinux 4.4.146をクロスビルドしましたが、エラーになり、コンパイルできませんでした。
エラーの意味が良く分からなかったので、さっくり諦めましてcrostool-ngでgcc 7.3を作成しなおし、ビルドをやり直したところ、無事コンパイルが通りました。
Linux 4.4.146は起動しませんでした。偶然持っていた少し古いバージョン(Linux 4.4.77)に戻したりもしましたが、結果は同じで全く起動しません。
デバッグすると、ドライバの作りが変わったのかAACIとMMCIというハードウェアに対して、今まで叩いていなかったはずのレジスタをガンガン叩いていました。ememuは存在しないI/Oレジスタを叩くと、エミュレータが例外で落ちてしまい、動かなくなるんです…。
とりあえずレジスタ定義だけ適当に追加したところ、エラーが出まくりますが、起動はしました。適当でも動いてくれるLinuxは強い子です。
しかし今度はbuildrootで作成したbusyboxと愉快な仲間たちが起動しません。/dev/nullが無いよ?と永遠にエラーが出続けます。
調べてみるとLinux 4.4.146のdefconfigだとCONFIG_DEVTMPFSがnつまり無効なんですね。最近の感覚でdevtmpfsはあって当然くらいに思っていたので、盲点でした。コンフィグでdevtmpfsを有効にしてカーネル再ビルドしたところ、やっとbuildrootが動きました。
対応していない制御文字を送ってきているらしく、ememuの端末(独自実装です)の色がおかしくなります。
これはすぐ直せそうになかったので、しばらくは変な表示と付き合うことになりそうです。
先日購入(2018年6月14日の日記参照)したThinkPad E480ですが、キーボードのカーソルキー、しかも上カーソルキーだけが微妙に壊れています。
キーを押すとキーが傾いてしまい、引っかかって戻ってこないときがあります。
何が引っかかっているのか調べるために分解してみました。キートップをてこなどで外すと、パンタグラフが入っています。パンタグラフは2つの部品からできています。
2つの部品を組み合わせると、I字型(畳んでいるとき)もしくはX字型(開いているとき)になります。
良く見るとこの部品、軸が折れてしまっています。
軸が片側なくなっているため、パンタグラフを開いても綺麗なX字型にならず、捻じれてしまいます。
キーボードのパンタグラフ、開いた状態、軸が折れているので歪む
これによってキートップが若干傾いてキーボードのフレームに引っかかり、元の位置に戻らなくなるようです。
修理に出そうかどうか迷って、いろいろ押し方を試しているうちに、比較的引っかかりにくい押し方があることを見つけました。今は押し方を工夫することで凌いでいます。
さらに最近は、普通にキーを押しても引っかかりにくくなった気がします。パンタグラフが壊れているのは相変わらずなので、キートップ側が削れたのか、変形したのかな?
目次: 車
先週、大阪スバル(高槻店)にレガシィの車検をお願いしていました。今日は納車です。
JR高槻駅からディーラーまで歩きましたが、もう、とにかく暑い暑い。暑くてやってられません。将来、車を買い替えるとしたら、夏には絶対、車は買わないぞ、絶対だ。心に決めました。
料金は自賠責&税金込みで13万円くらいでした。特に大きな故障もなかったし、そんなもんでしょう。ね。
< | 2018 | > | ||||
<< | < | 08 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | - |
合計:
本日: