2年前に買ったThinkPad X280のディスクが手狭になったので、 ディスクを交換した。

ThinkPad X280は、2018年の3月に購入した。 新品で購入した、当時は新機種。

後で増設すればいいやと思い、 標準の128GBのSSDのままカスタマイズせずに購入してた。 128GBを、Windowsを64GB、Debian9を64GBと分けて使っていたので、 ディスクが不足してきたので、交換する事にした。

ディスク選定

X280のディスクはM.2で、SATAのSSDが繋っていた。 X280はM.2にNVMEも使え、Type2280のサイズも差せるようなので、 これにあてはまるSSDをAmazonで購入した。 約8000円だった。

この所のパンデミック騒ぎによって、 品切れか、値上がりしているようだ。 ギリギリ通常価格の在庫が購入できてよかった。

取り付け

X280はバッテリー内蔵なのでバッテリーは外せない。 まず、BIOSからバッテリーをソフトウエア経由で切り離す。 やらないとどうなってしまうのかはわからないけど、怖いので切り離した。

背面の5箇所のネジをはずしたら、引っ張ったら裏蓋が外れる状態になった。

ネジは裏蓋にくっついていて無くさなくできているし、 ツメも、割れないように別素材でつけてあった。 コストはかかっているが、 分解する事を想定したつくりになっているのは好感がもてる。

別のネジでSSDが止まっていたので、はずして、 コネクタと反対側を持ちあげたら、SSDが取れた。

後は逆順ではめればよかった。

このページを参考にした。

Windowsのインストール

メインで使うのはDebianの予定なので、 先にDebianをインストールしようとしたんだけど、 Windowsがどういう感じでパーティションを切るのかわからないので、 先にWindowsをインストールした。

USBメモリからのインストールを試みたが、えらく苦労した。 インストール用のISOイメージをMicrosoftのサイトからダウンロードしたが、 これをUSBメモリに書き込みがうまくできずインストーラが起動しなかった。

ネット上の情報では、いくつかやり方が紹介されていたが、どれもうまくいかなかった。

試したのは:

  • ddコマンドでisoファイルをUSBメモリに書き込む → 起動しない
  • USBメモリにFAT32パーティションをつけておき、BOOTビットをたてて、そこにISOの中身をコピー → 4Gより大きいファイルがあってコピーできない
  • USBメモリをexfatでフォーマット → 起動しない
  • USBメモリをNTFSでフォーマット → 起動しない

最終的に、Windowsタブレットを持ち出してきて、 OTGアダプタでUSBメモリを接続して、 Microsoft純正ツールで書き込んでインストールした。

元のマシンでWinodws側は容量が十分だったので、 今回も64GBを割り当てようとしたが、 Windowsは4つのパーティションをつくった。

Debianのインストール

X280は内蔵有線LANがあるが、専用のドングルが必要だったので、 かわりにUSB接続の有線LANアダプタを使った。

まず、いつも通りnetboot.xyzのUSBメモリを使ってインストールしようとしたが、 これはうまくいかなかった。 内蔵LANは見えるが、USB接続の有線LANアダプタは認識しなかった。 ipxeのソースをみる限りだとドライバがありそうなんだけど。 2つめのLANは認識しないっていう仕様があるのかもしれない。

しかたないので、Debian専用のインストールディスクを作る事にした。

ハンドブックには、起動用のイメージを書いた上で、 その中にDVDのISOイメージを書くように、 との記述があったが、このイメージはISOイメージを認識しなかった。 原因は不明。

いつもの手順でISO自体をddでUSBメモリに書き込んだら、起動できた。

1回目のインストールでは、インストール中にパッケージのMD5チェックで弾かれた。 その時、インストールディスクチェックをしたけど、弾かれたままだった。 2回目以降、はインストーラーを起動するごとに、チェックしたが、 同じUSBメモリで2回目以降はboot関係のファイルでディスクチェックが失敗する。 インストール自体は問題なく完了した。 原因不明。

パーティション

最終的にパーティションは次のようになった。

  1. 謎パーティション 529MB
  2. ESP用FATパーティション 100MB
  3. 謎パーティション 16MB
  4. Windows用NTFSパーティション 62GB
  5. /boot用ext2パーティション 954MB
  6. LUKSのパーティション 402GB
    1. LVMパーティション 402GB
      1. btrfsパーティション 384GB
        1. @ ルート用サブボリューム
        2. @home ホーム用サブボリューム
        3. @snapshot スナップショット用サブボリューム
      2. swapパーティション 19GB

btrfsを実験用以外で使うのははじめてなので、 メインのボリュームをルートとして使わない作法などはじめて知った。 勉強になる。

Debianのインストーラでは、 サブボリュームを作る事はできない。

そのままでは、メインボリュームにインストールされてしまう。 後でサブボリュームにうつすのは面倒なので、 こちらblogを参考に作業した。 内容が重複するが、簡単に何をしたかを書いておく。

まず、Debianインストーラで、Expertモードを選ぶ。 Expertモードは難しいのかと身構えたが、 単に1つのステップごとに、メインメニューに戻るだけのようだ。

ここで、パーティションのセットアップ後、 ベースシステムのインストール前に、 Alt+F2を押してコンソールに降りる。 ここにはbusyboxが入ってる。

ここまでで、インストーラは/target以下に、 インストール先パーティションをマウントしている状態になっているみたい。 次のステップで/targetにdebootstrapしてインストールしていくのだろう。 今回は、btrfsが/targetに、/bootが/target/bootに、 ESPパーティションが/target/boot/efiにマウントされていた。

/targetの下には、/target/bootの他に、/target/mediaという空のディレクトリと、/target/etc/fstabと/target/etc/crypttabが作られていた。

コンソールでは次の作業をした。

  1. /target以下のパーティション3つを全部アンマウント。
  2. /mntあたりに、btrfsをマウントしなおし。
  3. btrfsの下にサブボリューム3つを作る。
  4. サブボリューム3つを/targetにマウントしなおす。
  5. ついでに、/target/bootと/target/boot/efiをマウントしなおし。
  6. /mnt/etc(fstabとcrypttabを含んでる)を/target/etcにコピー。
  7. nanoエディタで、/target/etc/fstabをサブボリュームを/にマウントするように書き換える。
  8. /mntの下の、/mnt/etcと/mnt/mediaと/mnt/bootを削除。
  9. /mntをアンマウント

この状態でインストーラに戻って、ベースシステムのインストールから続きをやる。

設定

Debianのバージョンも9から10にあげたので、 微妙に設定がかわった。

インストーラがcontribとnon-freeを有効にしてくれたからか、 Wifiは何も設定しなくても動いた。すばらしい。

デフォルトのDEがGnomeだったんだけど、 これはもうWaylandだった。時代だな。 xmonadを使うので、Xorgを使う。 Xorgは普通に入っていた。

X280内蔵のIntel graphicsを使っているんだけど、 これとXorgの相性か、たまにひっかかる。 glxgears(mesa-utilsパッケージ)を動かして観察してみると、 1秒に1回ぐらい、一瞬止まる。プチフリというのがいいのか。 止まっている分のフレームはスキップされるみたい。 検索した所、このqiitaの記事を発見したので、 その通り設定ファイルを置いたらなおった。

あと、ターミナルにはxtermを使っているんだけど、 これの起動が何故か遅く、1秒ぐらいかかった。 straceしてデバッグしてみたところ、 SESSION_MANAGERという環境変数を消すと高速になる事を発見した。 原因は良く調べてない。

btrfsにしたので、バックアップの仕方がかわった。 前はrsyncでホームデイレクトリを15分に1回バックアップしていたが、 今回はbtrfsになった。

btrfs subvolume snapshot /home /.snapshot/home/`date +%Y%m%d%H%M`

crontabで実行。

パフォーマンス

hdparmによる測定だと、元のSATA接続のSSDは476.50 MB/secで、 新しいNVME接続のSSDは872.96 MB/secがでているようだ。

カタログスペックでは1900MB/secでるはずなので、 何かがおかしいが、原因不明。

反省

まず、一番の失敗は、 作業前にWindowsのインストールディスクを作っておかなかった事だ。 そのために、いろいろ試したりと、かなり遠回りをしてしまった。

2つ目として、 パーティションの切りかたを先に決めておくべきだったという問題もある。 Debianのインストールディスクのパーティション設定システムは、 一度暗号化の設定やLVMの設定をしてしまうと、 それを削除するためには再起動が必要になってしまう。 そのため何度も再起動するはめになった。 まず、最初に別途パーティションの切り方をメモしておき、 それに沿ってインストールを行うという手順を取るべきだった。