p68’s blog

Apple製品とMazda Roadsterが大好きです

ThinkPad X240のSoftware設定

f:id:p68:20211231161339j:plain

本日のお題目と結論

前回ThinkPadを買って、いろいろとパーツを変えて見た目は新品みたいになりました。あれからSoftwareのほうの設定をしてやっとこ落ち着いたのでそのあたりの流れを書いてみます。いろいろ迷走しましたが思いの外満足するものになったと思います。

結論としてはWindows 11 + WSL2 + Windows subsystem for Linux preview (WSLg) という環境にUbuntu用のemacs 27.2 という環境になりました。これが今の所ワタシの最適解になっています。 当初はUbuntuで考えていたのに、最終的にはWindows11。このあたりの心境の変化を時系列で書いてみます。

コストとしてはパーツ交換を含めても3万円程度、PCをすでに持っている人は、ほぼコストをかけずに試せる敷居の低さもいいと思うので気軽におすすめできます。

ここまで書くとなんか100点みたいな感じなのでネガティブな部分を書いておきます。

  • 当然新品にはある保証はない。ただし今回購入したBe stockというお店は1年保証がついていました。これはすごいことですが、今回はパーツ変えまくったのでたぶん対象外になるかと。
  • 最新モデルのように長時間駆動はできない。最新機種とかは余裕で10時間を超えますが、こちらはバッテリの劣化がなくても4時間程度しか動きません。
  • 本体は分厚い。最新機種は薄さ極まる厚さですが、X240はそれなりに分厚いです。スターバックスでは「どや」ることはできません。

そもそも、なぜX240買うことを思い立ったのか振り返ってみる

  • AppleのM1チップノートの評判がよくMacbook Air, Macbook Proを検討していたところ、そもそも持ち運びするPCはWebが見れて、emacsで文章が入力できればいいんじゃないかと思い立ったのが発端です。Macである必要はないし、高スペックである必要もない。

    あと会社で使っているWindowsemacsは結構昔のrevisionだったりします。emacsの設定って時間がかかるし動かなくなっては仕事ができなくなるのであまり冒険はしていません。そんなわけで自宅で使うemacsはFullスペックでlatestを使いたいってのも目的の一つです。これを踏まえて選定開始です。

  • 第一候補はChromebook

    DevelopperモードがあってLinuxがインストールできemacsが使えるという書き込みあったのが発端です。そこで購入できるChromebookの検討をしてみるも、シェアが大きくなったせいか日本語キーボードの製品が一般的(シェア的にはMacを抜いているらしい)になってしまっていて英語キーボードがいいんだけど割高に購入するか、海外から購入するかになりそうです。かつ日本語入力の切り替えがシステムで予約しているようで通常の切り替えは[Control+Sift]で好みの[Shift+Space]での切り替えは設定できなさそうな感じ。

    ここはスペックが高くても低くても使い勝手に左右されるところなので、さらに事前調査をしてみるも使っている人が少ないのか記事になっている量が少なめです。かつ最近は流行っていないのか2,3年前くらいの情報が中心でどうも最近の情報がよくわからない。ということで別の候補を検討。

  • 次の候補としてはThinkPad

    これなら容易にキーボードを換装できてキータッチも不満がすくなそう。個人的には触ったことのあるノートパソコンのキーボードではThinkPadが一番良いように思う。 とはいえ、年々薄さを極めて行くノートパソコン業界はキーボードのストロークが短くなる傾向にあってThinkPadもずいぶんと変わってきた。古い機種は7段キーボードだったりしていて標準的なテンキーレスの配置になっていたが、現在は6段キーボードでFunctionキーの並びにHOME/ENDなどが並んでいる。これによってパームレストの面積が増えてトラックパッド が配置できるようになった。(らしい)

    そんな変化があるThinkPadでもまだまだ一番だ。

  • ちょっと話がそれますが。。。

    そもそもMac以外で考え出したのはMacemacsの設定がうまくできかったってのがあります。 Windowsでも状況は同じ感じじゃないかと思いますが、OS側で管理されている日本語、英語の切り替えをアプリ側であるemacsからどこまで制御できるのかというのがポイントです。具体的にはemacs側から日本語のON/OFFに加えて、emacsのコマンドなどの操作自体もキーボードからの入力になりますが、このときに日本語モードになっていると都合が悪いので、コマンドではない場合のみ日本語変換処理に渡すような処理が必要になります。このあたりの処理をやっているのがmozc-emacsd-helperだと思っているのですが、これがワタシの力不足でうまくビルドできませんでした。Macはハードウェアもある程度共通だし、OSも統一されているのでバイナリで配布してもらえると助かるのですが、このあたりなんでなんでしょう。ライセンスの問題でしょうか?

    そんなわけで、Macでのemacsの設定はひとまずおいておいてVirtualbox上でのUbuntuを動かすのを考えてみます。

  • MacVirtualboxでのUbuntu

    Ubuntu Nativeはどんな感じなのかなぁと思いたちMacVirtualbox上でUbuntuを試したところ、簡単に設定ができてemacsも簡単に設定することができました。やっぱりユーザ数がいるというのは非常に安心。Ubuntuの出来も良いしVirtualboxの出来もすばらしいので、Ubuntu Nativeの情報でそのまま適用できるというのも良いところ。

  • Linuxなら古いPCでもサクサク動作

    それでは古いPCだとどこまで動くのかUbuntu PCのお試しのために家にあったDellの古いPC(XpのCore2Duo )にインストールしてみた。動作速度は特に問題なし。古いPCでもSSDさえ乗っていればなんも問題なさそう。メモリも4GBで十分大丈夫そう。

  • ThinkPad X240に決定

    そんな流れで、キーボードが使いやすく、ボディもタフなThinkPadの購入に決定。Be stockというThinkPadを専門に扱っているお店をみたところバッテリの劣化が少ないFHDモデルで2万円というThinkPad X240が売られていたので、これを購入することにした。トップカバーをはじめから新品に変えるつもりならもっと安いやつを買っても良かった。

X240に設定した迷走の軌跡

X240にUbuntuのインストール

予めUbuntuのISOイメージのダウンロードを行って、USBに起動ディスクの作成。 HDDのバックアップは面倒なのでHDDからSSDに入れ替え。USBを指してBIOS画面で起動ディスクをUSBに切り替えて起動すれば、あとはインストーラが自動でインストール。

思えば20年以上前にSlackwareをインストールした頃は、チップセットなんかの設定からやったりGUIも決まったビデオカードなんかを使わないとなかなか設定がうまく行かなかったりとした記憶があるのですが、いまはとてつもない数のハードウェアをサポートしていてWindows/Macなんかと変わらないですよね。

設定に関しては豊富な情報があるので特に悩むことはありませんでした。しばらく使ってみて思ったことは、テキストの入力、Webブラウジングの日常使いにおいてはまったく問題なくできるところでした。その上で問題点を挙げるとすると下記になります。

  • ThinkPadのトラックポインタの設定

    Windowsのようにヌルヌルと動くように設定できませんでした。たぶん購入したUSキーボードはX240対応品であってもLenovoのチップが使われてないのか汎用のPS/2のマウスとして認識されていました。実際のところどこまで正しいかわかりませんが、購入時についていた赤ポッチは従来のトラックポイントで、購入したUSキーボードはロープロファイルのものになっていました。 Ubuntu上のトラックポインタの設定は結構書き込まれていて移動スピードを早くする設定が紹介されていました。ただこれを行うと外付けマウスをつなげたときに今度は以上に早く動いてしまうようになってしまいました。このあたり指先で操作するトラックポインタと手首で動かすマウスの違いなにか、はたまた設定の違いなのかもうちょっと調べてみようと思います。

  • ファイルの同期関連

    Apple製品を使っていればiCloudで統一された環境が用意されているのでiPhone/iPadとの連携がされていました。Ubuntuだとこのあたりのファイルの同期機能を別に考えないといけないので、一台だけLinuxが入っているとちょっと面倒かなぁと思いました。候補としてはDropboxが正式対応されているようで、EvernoteとBoxはこれからというところ。もしくは自宅のNASにつなげてファイルを共有するっていうのも一つの手ですが、ちょっとした空き時間で作業したいのにVPNでつなげたりと考えるとなんだか面倒です。

そんなわけでUbuntuでしばらく使っていたのですが、一台だけボッチで孤高の存在のような感じになってしまいました。WindowsならMacとの共有でいろいろと解決もありまそうなのでWindows10に戻してUbuntuVirtualbox上に構築してみてはどうかと考えてみました。

X240にWindows10 + Ubuntu on Virtualbox

構築するにあたり一番最初に考えたのはHDDにインストールされているWindows10をどのようにしてSSDに移すかでした。以前はPartitionMagicなんかを使ったり、物理的にCloneHDDを作るようにコピーしていましたが、いまはライセンスキーだけあれば再インストールが簡単にできることに驚きました。以前はDVDなどのリカバリーディスクからインストールして、その後に数年溜まったWindowsUpdateでさらに数時間かかっていましたが、いまは最新のUpdate入った状態でUSB起動ディスクが作成できるので非常に楽チンになりました。

そんなわけでライセンスキーをメモをしていたのですがワタシの場合はMicrosoftアカウントでログインしていたのでライセンスキーとMicrosoftアカウントがすでに連動されていたのか、SSDに移行してからもライセンスキーを聞かれることがありませんでした。このあたりで非常に敷居が下がったように思います。

そんなわけでHDD->SSDのWindows10への構築はトラブルなく移行することができました。Virtualboxの設定もMacでなんどか試していたせいか特にトラブルなかったです。これもemacsまで設定してしばらく使っていたのですが、これもイマイチな点が見えてきました。問題点を挙げるとすると以下の通り。

  • 動作がキビキビしていない

    Macで試していたときには4コアのCPUなので2つをVirtualboxアサインしたときしてもホスト側も2つで動作するので特別に重い事をしない限りは動作が遅いと感じることはありませんでした。一方X240の場合は2コアなので(i5-4300Uの場合)ホスト側、ゲスト側でそれぞれ1コアづつ割り当ているのでちょっと余裕がありません。必然的に動作はするものの動作は遅かったです。ただ目的であるemacsとブラウザを立ち上げてしまえば、その後の動作は十分実用的なところだと思います。

    ただしネットワークなんかの設定はホストOSが管理しているため、ゲストOSであるUbuntuのほうは少し遅くなってしまうようです。

    この設定でしばらく使っていたんですが、作業のメインをUbuntu上の文章書きにしたわりにホストOSとゲストOSの関係でパフォーマンスが出ないというのもなんだかもったいない感じがしたので別の方法を考えてみました。

X240にWSL2 + VcXsrv

WindowsもSystemレベルで面白い機能拡張をしていて、 Windows Subsystem for Linux という環境を提供しています。これはWindows上でUbuntuなどのSystemを動かすことができるようにしたもののようです。VitualboxなどのEmulatorとの違いは仮想ハードウェア上でOSを動作させるのではなく、もう少しSystem寄りのところからUbuntuのサポートをしたものです。これによってコアを個別にアサインする必要がないのでX240の環境でも効率的に動作できるのではないかと考えました。Ubuntuも古いものではなく、LTS (Long Term Support)バージョンである20.04をサポートしているのも魅力です。

このWSL2(今回はVersion2と呼ばれるほうを使いましたが、無印のWSLも需要があるようです)によりGUIはサポートしていないCUIの環境でOSを動作させることができ、Ubuntuで提供されたCUIアプリケーションがそのまま使えるというものです。なのでサーバー環境だけならこれだけで十分ですね。

似た環境でcygwinがあります。これはUnixのコマンド群、開発環境、SystemCallをWindowsに移植したもので、Windows上でUnixのツールをコンパイルして実行させることができます。 WSLのほうはubuntuなどのBinaryを内部で実行さえていてアプリケーションなどのBinaryがそのまま動かすことができます。cygwinのほうはあくまでWindows上では一つのアプリケーションで見えていて、cygwinのライブラリに対応させるためにcygwin上で再コンパイルが必要になるところが違うところです。

さて、WSLでUbuntuが起動できるところまで確認できたので、これにGUIを持たせるためには別のソフトが必要になります。

Linuxなどのunixを触ったことがない方はちょっとイメージしにくいですがWindows/MacなどがGUIそのものがOSであるかのようにGUIが全面にでてきています。(あくまでイメージでWindows/MacもコアなOSはもちろんGUI以外で動いています) 一方unixのほうはあくまで中心の部分はCUIベースで動いていて、GUIはその上に乗せているイメージです。なので、ディスプレイを持たないunixサーバーを立ち上げて、別の端末からGUIだけ表示させることもできます。それぐらいOSと表示のGUIは分離されています。このあたりがクライアントのWindows/Macとサーバ構築を前提にして開発されたunixの違いのように思います。

このGUIのXServer機能をサポートしたものはVcXsrvというソフトで実現します。VcXsrvでどこへでも接続先を指定できますが、あくまでローカルなWindows内部のUbuntuに接続するという体です。

このVcXsrvの設定としてはWindows側のIPアドレスを把握させて、そのIPアドレスに接続するようです。 これだとモバイル環境で頻繁にIPアドレスが変わる環境だとどうするんだ?と調べていたところ。 WSLg という情報がありました。これはWSLの機能拡張のようでGUIを持たすことができるようです。VcXsrvほど汎用性があるわけではなく、あくまで同一マシン内にGUIをもたせるようで、逆に細かい設定が必要ないので、ワタシには都合の良い環境です。

これのPreview版がMicrosoft storeで公開開始とのことなので、こちらのほうを入れるほうが簡単そうだし、将来的にはこちらが標準でサポートされるんじゃないかと思い、VcXsrvの調査をやめてWSLgの調査のほうに変えることにしました。

WSLgのインストールに向けたWindows11のインストール

WSLg という用語と、Microsoft storeで実際にリリースされた Windows Subsystem for Linux Preview が同じなのか、よくわかりませんが、夏頃にリリースされたWSLgのDev版はWindows 10で動作していていた。そしてこのDevバージョンはすでに入手できなくなっているというのがワタシの理解したところでした。

とりあえず難しいことを考えずに Windows Subsystem for Linux PreviewMicrosoft storeでインストールしようとしたところ、このPreview版は Windows11 が動作条件になっていました。

この手はここまでかと思ったのですが、X240にWindows11はインストールできるのか調べてみると、必要条件が2つありますがインストール可能とのこと。

TPM2.0 (Trusted Platform Module) のサポートとCPUが最近のものになっている必要があるようです。前者のTPMBIOSの設定を変えることにより対応できて、後者のCPUについてはMicrosoftからこの条件を回避方法が紹介されていてレジストリを変えることにより対応できます。

次にWindows11のインストールです。これもWindows10ユーザに対しては無償でアップグレードが提供されているので、USBスティックにアップデータをインストールして、このなかのsetupを実行させることによりアップデートさせることができます。(起動している環境でレジストリを書き換える必要があるので起動ディスクからのインストールではなく、アップデート)

インストールはなんだかんだで1時間くらいかかったような感じでしたが、特にトラブルなく終了。Microsoft storeから Windows Subsystem for Linux Preview をインストールしたところ、特に設定をすることもなくGUIemacsが起動できました。

Windows 11 + WSL2 + WSLg (Windows Subsystem for Linux Preview)

emacsは27.2でmozcも動作させることができました。mozcはWindowsOS側の Google日本語入力 の状態に左右されることないのでUbuntuの中で日本語がコントロールされます。内部的にVirtualMachineが動作しているようなものなので当たり前といえば当たり前ですが。。。

フォントもRictyを作成してインストールしたので、Virtualbox上のUbuntuemacsと同じ環境を構築することができました。

まとめ

Windows 11は古いPCの足切りなんかもあったので、遅くてどうしようもなくなるのかと思っていたのですが、むしろ起動も早くWindows10から遅くなった印象もありません。使い始めてまだ数日なので今後困ったことが見つかるかもしれませんが、Webをみて、emacsでブログを書いて投稿するところまでできたので十分楽しめました。

また、会社の環境とは違うOSが良いと思っていたのですが、Windows11にしたことで結果的に見た目は大きく変わりました。