🍣すしでもどうですか

略してすしどう。趣味のサーバーいじりとかメモ。

US 配列キーボード + IBus + Mozc での入力切り替え設定

最近 Linux mint を入れ直す機会があり、インストール後の環境で日本語入力をしようと思ったら、Mozc がオフの状態では当然半角英数の直接入力になり、Mozc がオンになっても直接入力モードがデフォルトのため、タスクトレイ的なところにあるアイコンから一旦マウスで入力方法を「ひらがな」に設定してからでないと日本語入力ができません。

Mozc のデフォルトがひらがな入力だったらいいのだけど、これはハードコーディングされているのでソースを直さないと治らないらしい(方法はググれば出てきます)。それだとアップデートされるごとにやり直さないといけないので面倒です。

なんとかキーボードだけで直接入力とひらがな入力を切り替えできないかといじっていたら、以下の設定でとりあえずできるようになりました。

Mozc のキー設定

Ctrl+Space に割り当てました。上の画像でモードが「変換中」のものは元々登録されていたもの。Ctrl+Space を「文字入力なし」の時に押すと IME がオフ(直接入力)に、「直接入力」の時に押すと IME がオン(ひらがな入力)になります。設定してもすぐには反映されないみたいで、一度デスクトップセッションからログアウトしてログインし直したら反映されました。

IBus の入力メソッドから「英語」を削除

Mozc 内のひらがな入力と直接入力だけで事足りるようになったので、不要な IBus の入力メソッドは削除しておきます。 上の画像の「英語-英語(US)」を選択して右側の「削除」ボタンを押します。

これで快適になりました。

SHARP Muramasa PC-MM1-H3W へ最近の Linux がインストールできない

※2022/05/22追記(いまさら)

これ、もちろんPAEがどうこうとかいう話ではなく、ちゃんと動くはずのエディションを選んでやっての話なのですが、もはやそれすらどうでもよくて、どうも DVD ドライブが劣化してデータ読み出しに問題がある様子…

(以下、本文です)

できないんです。

いろんなディストリビューションの ISO を CD-R やら DVD-R やらに焼いて試してみましたが、エラーもなく進まなかったり、エラーが出て進まなかったり。とにかく完走しません。

ちゃんと検証したわけではありませんが、この PC で唯一ブート可能な純正外付け DVD ドライブであるところの CE-DW02 は、逆に言うと何らか特殊な動作をするからこそ唯一ブート可能なわけで、どうもこのドライブの振る舞いと Linuxブートローダーないしカーネルとの相性が悪いような気がしています。

ちなみに、もちろんリカバリーディスクからのリカバリーは完走しました。あと意外なのが FreeBSD 13.0-RELEASE のインストールディスクは問題なく動作。ていうか、昔は Linux もインストールできたんですけどね…当時の Puppy Linux とかは入れたことあるはず。

Lenovo IdeaPad Duet Chromebook を買いました

Lenovo(レノボ) 10.1型 ノートパソコン Lenovo IdeaPad Duet Chromebook ZA6F0038JP(CHROME)

MBA 壊れた

9 年間愛用した MacBook Air (Mid 2011) が、電源を入れるとビープ音が「プー、プー、プー」と鳴って起動しないようになってしまいました。

ググってみると、ロジックボードをヒートガンで炙れとかオーブンで焼けとか出てくるのですが、さすがに古い機種なのでそろそろ暇を与えてもいいだろうと思い、リプレースを検討しました。

初めは新しい MacBook Air に買い換えるつもりだったものの、私がノート PC でやることってちょっとググるとかちょっと買い物とかターミナルでサーバーをいじるとかなので、10 万円もかける意味あるのかなあ……と思っていろいろ思案した結果、使ったことないけど Chromebook でいけるのでは?という結論になりました。

Chromebook 買った

で、買ったのはこれです。

2in1 なのはあまり深い意味はなく(面白そうだとは思ったけど)、10.1 インチでフル HD のモニターが付いてる機種がこれくらいしかなかったからです。お値段も手頃。

感想

  • スペックは高くはないものの思いの外サクサク動く。あんまり無理をさせなければ大丈夫そう。
  • キーボードは意外と打ちやすい。
  • 検索キーという見慣れないキーや、Chrome OS のキーボードショートカット様式に慣れる必要がある。
  • MacBook Air を使っていたせいで、タッチパッドに右親指を置いたまま左親指でクリックして左クリック、タッチパッドに右中指と右薬指を置いたまま左親指でクリックして右クリックをする癖があるのですが、IdeaPad Duet でもこの動作になるのは個人的にとても助かる。
  • バッテリーがほぼカタログどおり(約 10 時間)持つので、丸 1 日は給電無しで大丈夫そう。
  • アプリケーションについては、基本は Web アプリと Chrome アプリで何とかする感じ。
  • Android アプリはそこそこ動くけど、何でも動くわけではないので使いたいアプリが使えるかどうかは運次第。ちなみに torne mobile は起動はするものの nasne とのペアリングに失敗する。
  • Linux アプリのサポートはベータ版ながら結構ちゃんと使える。

という感じ。ノート型端末でやりたかったことは問題なくできるし、その上 Android タブレットまで付いてきた感じなので満足です。

正直、もっとスペック的に苦しいと思っていたので、サクサク動くのは本当にありがたい。

買ってから知ったのだけど、別売りですが USI ペンに対応しているそうなので、筆圧付きのペン入力も一応可能だそうです。Lenovo 純正品だと 4,400 円で買えます。

Lenovo USI Pen | Pens | レノボジャパン

rEFInd のインストールとカスタマイズ (macOS)

環境

インストール

ダウンロード

以下のページから "A binary zip file" をダウンロードして適当な場所に展開します。

The rEFInd Boot Manager: Getting rEFInd

インストール

SIP*1 で保護されている EFI 領域にインストールするため、command(⌘)+R を押しながら電源オンでリカバリーモードで起動します。

起動したら、メニューからターミナルを起動して、

# cd (zipファイルを展開した場所)
# ./refind-install

でインストールされます。

カスタマイズ

テーマの適用

rEFInd のデフォルトの見た目は非常にダサいのですが、幸いなことにテーマを適用できます。 私が愛用しているのは rEFInd-minimal です。

まず、rEFInd がインストールされた EFI 領域をマウントするために、デバイスファイル名を調べます。

# diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         419.0 GB   disk0s2
   3:       Microsoft Basic Data BOOTCAMP                80.9 GB    disk0s3

で、TYPE が "EFI" になっている行の IDENTIFIER を見ます。ここでは disk0s1 だとします。

# mkdir /Volumes/efi
# mount -t msdos /dev/disk0s1 /Volumes/efi

としてマウントします。 次にテーマをダウンロードして適用します。

# mkdir /Volumes/efi/EFI/refind/themes
# cd /Volumes/efi/EFI/refind/themes
# git clone https://github.com/EvanPurkhiser/rEFInd-minimal
# echo include themes/rEFInd-minimal/theme.conf >> ../refind.conf

これで完了ですが、そのままだと「Legacy OS なんたら」とか「preboot なんたら」とか余計な選択肢が出てきて鬱陶しいので、dont_scan_volumes "Legacy OS","preboot"/Volumes/efi/EFI/refind/themes/rEFInd-minimal/theme.conf に追記して出ないようにします。

# echo dont_scan_volumes '"'Legacy OS'"','"'preboot'"' >> rEFInd-minimal/theme.conf

かな? " のエスケープが面倒なので普通にエディタで編集したほうが間違いないかも。

これで再起動すれば、rEFInd のメニューが出るはず。

*1:System Integrity Protection

Jail 環境の freebsd-update upgrade

jail.conf で allow.chflags しているので Jail の中でも freebsd-update できますが、1つ1つ jexec とか ssh してやるのは面倒なのでホスト側からやりたい。

例えば 12.0-RELEASE から 12.1-RELEASE にアップグレードするとして、普通はホスト側で先に freebsd-update してカーネルのバージョンを上げてから各 Jail 環境も揃えていく感じになると思うのですが、

$ sudo freebsd-update -b /jails/hoge -r 12.1-RELEASE upgrade

とやると、

freebsd-update: Cannot upgrade from 12.1-RELEASE to itself

と言われてしまいます。

そこで、環境変数 UNAME_r を改変してしのぎます。

$ sudo env UNAME_r=12.0-RELEASE freebsd-update -b /jails/hoge -r 12.1-RELEASE upgrade

これで一発目の freebsd-update が動き出します。

終わったら次は freebsd-update install ですが、もう env は指定しなくても大丈夫です。 これが終わると再起動してもう一度 freebsd-update install するように言われます。これは本来はカーネルを読み込み直すためですので、この場合、すでに新しいカーネルで動いているため再起動は不要です。そのまま再度 freebsd-update install しましょう。

$ sudo freebsd-update -b /jails/hoge install
src component not installed, skipped
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
$ sudo freebsd-update -b /jails/hoge install
...

さらにその後、ports で入れたパッケージソフトウェアなどをリビルドしてから freebsd-update install です。くどいですね。 以上で終了です。

(2021/03/28 追記)

ちなみに jail の外から pkg upgrade とかするには -j を使います。

$ sudo pkg -j <jail name or id> upgrade

とかします。

VAIO X に SparkyLinux を入れた

経緯

まだリナカフェが存在した頃に買った VAIO X。バッテリーが膨張してしまいしばらく眠っていたけれど、最近程度のいい中古バッテリーを入手できたので、再びちょいちょい触ってみています。

プリインストールの OS は Windows 7 で、とうとうサポートが終わってしまいました。1度だけ試しに Windows 10 を入れてみたものの、CPU は当時から非力な Intel Atom Z540 なので相当キツかった。

というわけで、できるだけ軽量な OS を選択したい。まずは手慣れた FreeBSD を入れてみようとしたところ、ACPI が有効だとブート中にフリーズしてしまいました。ノート PC で ACPI が使えないとか辛すぎるので FreeBSD を使うのは断念。できるだけ軽量かつ使いやすい Linux ディストリビューションを探すことにしました。

Linux にしましょうか

この PC に Linux を入れるのは初めてではないので、普通の Ubuntu とかは重すぎるのは分かっています。Linux Mint Xfce でもちょっと重くて常用はしたくないなあという感じ。逆に、Puppy Linux くらいになると軽いのはいいけども、さっぱりしすぎてかゆいところに手が届かない。普段 FreeBSD を使っていながら、デフォルトのままでおおむね不便がない環境を好むのです。

そんなこんなを踏まえつつ、これなら常用できるかなと思ったのが SparkyLinux でした。

SparkyLinux 良いところ

そこそこ軽い

Linux Mint だとブラウザ上で文字を打つのも大変な時が結構あります。SparkyLinux ではそこまではひどくありません。 ちなみにデスクトップ環境は LXQt を使っています。

ハードウェアがひととおりちゃんと動く

ディストリビューションによってはスリープでコケたりしがちですが、SparkyLinux では今のところ大丈夫そう。 Bluetooth やら Wi-Fi やらもちゃんと動きます。 あと細かいところでは、Linuxタッチパッドを使うと、やたらピーキーだったかと思ったら全然反応しなかったりして結構イライラさせられるイメージがあるけど、SparkyLinux では比較的自然な振る舞いで使いやすい気がします。

SparkyLinux を VAIO X で使うにあたり

以下の点を整えます。

ctrl:swapcaps

ctrl キーと caps キーを入れ替えます。 /etc/default/keyboard にある XKBOPTIONSctrl:swapcaps を追加します。

XKBOPTIONS="ctrl:swapcaps"

ちなみに、この方法だとシステム全体でキーが入れ替わってしまうので、他にもユーザーがいてそっちは刻印どおりじゃないと困るとかなら他の方法をおググりください。

音飛び対策

そのままだと音が飛びます。はじめは非力すぎて処理が追いついていないのかと思いましたが、mpg321 で MP3 を再生するだけでも音飛びするので、いくらなんでもおかしいと思いググったところ、/etc/modprobe.d/modprobe.conf (なければ作る)に

options snd-hda-intel position_fix=1

を追記して再起動したら直りました。

Bluetooth を簡単に扱えるようにする

SparkyLinux のデフォルトのデスクトップ環境には、Bluetooth 機器を管理するユーティリティがありません。なんでもいいと思いますが私は Blueman という GUI ツールをインストールしています。ちゃんと LXQt のタスクバーのトレイに常駐してくれます。

# apt install blueman

いたわり充電モードを使う

ノート PC では、やたらと満充電にするとバッテリーが早く傷むので、80% や 50% で充電を停止するモードを備えているものがあります。VAIO X にも備わっており、Linux では /sys/devices/platform/sony-laptop/battery_care_limiter に値を書き込むことで設定できます。しかし、パスを覚えておくのも面倒なので、ちょっとだけ楽できる caribe というスクリプトを利用しています。

ターミナルで sudo ./caribe するとダイアログが表示されて、メニュー形式で設定することができます。

f:id:qloopy:20200315031550p:plain
caribe

tiarra の Log::DBI で MySQL に突っ込んだ文字列が化ける

とりあえず応急的には解決したかなあと思うのでメモしておきます。

何が起きたか

tiarraMetro を使いたくて、tiarra のログを MySQL に保存すべく Log::DBI を使用しています。tiarra 側の文字コード設定を UTF-8 にしているので、当然データベース側も UTF-8 に合わせてあります。

しかし、いつの頃からか、データベースに保存されている文字列が化けてしまうようになりました。ちゃんと調べていませんが UTF-8 だったものを iso-2022-jp にしてしまっている雰囲気です*1

まあとにかく、UTF-8 だぞとちゃんと明示すれば直りそうです。

module/Log/DBI.pm を直接編集する

もはや tiarra がいつのバージョンなのかもよく分からない上に、tiarraMetro 関係の修正がちょっとだけ入っているものを使っているので、その点ご注意ください。

DBI.pm も、tiarraMetro の配布物に含まれるものを使っているので、行数などが微妙に違うかもしれません。 私の環境では 71 行目でした。

ここに , mysql_enable_utf8 => 1 を追加しました。

 70     my $dbh = DBI->connect($param->{source}, $param->{user}, $param->{pass},
 71                        { RaiseError => 1, AutoCommit => 1, mysql_enable_utf8 => 1 })
 72         or die $DBI::errstr;

これで様子を見ていますが、2日くらい経って、今のところ文字化けは起きていません。

再発しませんように。

*1:不思議な事に、tiarra を再起動するとしばらく(おそらく数時間)は文字化けせずに正しく保存される。