2018年4月29日日曜日

Linux kernel 4.16.5でRealtekのUSB SD/MMC card readerを使う

以前は普通に使えていた気がするのだが、いつの間にやらSD cardを挿入しても認識しなくなっていた (`/dev/mmcblk0p1`のようなdevice fileが作られない)ので、原因を調べてみた。

結論から言うと、必要なdevice driversが組み込まれていなかったのが原因だった。

環境


* ASUS X200LA
* Debian GNU/Linux (amd64, sid)
* Linux kernel 4.16.5
* Realtek RTS5129 card reader controller


実際の手順


何を探せばいい?


`lsusb`を使うと実際に使えるかどうかは別として接続されている (認識している?)devicesを表示してくれるので、それを元にしてkernelに組み込むべきdevice driver(s)を探せばいい。

今回の場合は:

% lsusb
...
Realtek Semiconductor Corp. RTS5129 Card Reader Controller
...

RealtekのRTS5129というdeviceに対するdriverを探す。

対応しているdriverやmoduleは?


kernelを自前でbuildしているので、取り敢えず`make menuconfig`を使い、それっぽいoptionがないかを探してみる。"realtek"で検索してみたところ、それっぽいoptionが見付かった:

`MMC_REALTEK_USB` ("Device Drivers" → "MMC/SD/SDIO card support" → "Realtek USB SD/MMC Card Interface Driver") = `rtsx_usb_sdmmc`

そのまんまな名前だ。helpにもそれっぽいことが書かれているので試してみる価値はあると思ったのだが、なぜかmenuに表示されておらず、故にy/mで選択もできない。その原因は依存関係が満たされていないためだった:

`MISC_RTSX_USB` ("Device Drivers" → "Misc devices" → "Realtek USB card reader") = `rtsx_usb`

このoptionをy/m何れかに設定すると、`MMC_REALTEK_USB`を選択する項目が表示されこちらもy/m何れか選択できるようになる。

動作確認


Kernelをrebuildしてinstall、rebootした後に、SD cardを差し込んで認識されることを確認。`lsmod`でも見てみる:

% lsmod | rg mmc
mmc_block
rtsx_usb_sdmmc
mmc_core
rtsx_usb

2018年4月21日土曜日

fontconfigの設定が腐っていたので修正

最近、何かにつけて

Fontconfig error: failed reading config file

というerror messageが目に付いたので、何が原因なのかを探って解決するまで。

概要


症状


* 様々なapplication softawreを立ち上げ時に"Fontconfig error: failed reading config file"というerror messageが複数回 (4回)出る


推測


* fontconfigに関する設定の間違い
* これまで出ていた記憶がない(最近になって見掛けるようになった)ので、updateによる書式やoptionの変更があった?

原因


* fontconfigの設定directory `/etc/fonts/conf.avail/`にある一部のfilesがおかしなことになっていた
* 具体的には`65-0-fonts-beng-extra.conf`など、設定filesと同じdirectoriesが複数存在しており、そのdirectoriesの中にそれぞれ更に同名のfileが存在していた
* `/etc/fonts/conf.d/`以下から貼られているsymlinksは当然切れている → 読み込めないerrorの原因
* なぜ`65-0-fonts-beng-extra.conf`などと言ったdirectoriesが作られたのかは分からないが、過去のinstallerのbugとか野良packagesの仕業とか何かのworkaroundで忘れていたものかも知れない?

対処


* 当該directoriesを削除し、.dpkg-new suffixのついたfilesをmv


2018年4月13日金曜日

Shuttle SZ170R8のBIOS (UEFI) v2.10がreleaseされていたのでupdate

3/27にShuttle SZ170R8のBIOS (UEFI)のv2.10がreleaseされていたのでupdateした。

Intel CPUのspeculative executionに関するvulnerabilities (いわゆる"Meltdown"と"Spectre")に対応したmicrocodeを含む。

BIOS v2.10 cf. [Shuttle Global - SZ170R8](http://global.shuttle.com/main/productsDownload?productId=1995)

update手順の概要


Boot mediaの準備


Rufus (cf. [Rufus - Create bootable USB drives the easy way](https://rufus.akeo.ie/))でbootable USB memoryを作り、そこにdownloadしてきたzip archiveの中身を展開して書き込む。

* Rufusで、vfat (FreeDOS)なbootable USB memoryを作製
* BIOS (UEFI)のzip archiveをdownloadして展開
* DOS/の中にあるflash.batとBIOS/をflash memoryのtop directoryにcp

SZ170R8の準備


* 何度も電源が切れたり入ったりを繰り返すので、予めHDDとか周辺機器は外しておく

Update process


* USB memoryからbootしてcommand promptが出たらflash.batを実行
* 画面に進捗状況が表示されるので暫く待つ
* 更新が終わるまで何度かrebootを繰り返す

BIOS設定の確認


* DEL keyを何度か押すとBIOS画面に入るので、設定を戻すなり確認するなりして保存
* 適当にmenu画面か何かで止めておいてスイッチで電源断
* この辺りでHDDや周辺機器を戻す

Bootの確認


* 電源を投入し正常にOSがbootすることを確かめる