逐次刊 ThinkPad X270を作ろう 2 デュアルブートとOSのセットアップ

前回までのあらすじ

ThinkPad X270ちゃんを手に入れたので,SSD2枚でデュアルブートするための下地を作ったよ。


現在の状態

SSD1:Ubuntu 22.04 LTS
SSD2:Windows10
という構成でベタインストールしてある状態です。

Windows10→11へのアップグレード

Windowsは元々入っていたWindows10(DSP版)をアップグレードしてWindows11にしたい。サポートも2025年で切れるしね……。

X270は本来,Windows11の条件のうちの「8世代以上のIntel CPU」を満たしていないためアップグレードできないはずなのだが,特に問題なく普通にできました。
(この話題で最も問題となるのがTPM2.0の存在なのだけれど,それは無事クリアしていた)

ダイアログにそってポチポチーとやってたらそのままアップグレードできたのでヨシッ。

Ubuntu 22.04 LTSのインストールの話

GUI+最小構成でインストール。このとき日本語版のデータ使ったので,あとで問題が起こる。それは後述。

このままだと起動時にF12を押さなければ,BIOSの起動ドライブの優先度にそって処理されることになる(厳密にはちょっと違うけれど)。現在はSSD1のUbuntuが最優先となっているため,デフォルトだとUbuntuが起動する。
ブート時にいちいちF12を押すのはあまりにも面倒なので,起動時にOSを選択して起動できるようにしたい。ついでにデフォルト起動をWindowsにしておきたい。人間は欲張り。

なのでGNU GRUBを設定して,ブート時にOS選択用のメニューを出すようにする。

SSD1:[GRUB]→[Ubuntu]
SSD2:  └→[Windows]

というイメージ。本当はEFI云々あるけれど,あまり深入りすると「それより私の妹って馬鹿でさー!」ってなるからやめよ?
とまれ,GRUBを弄って設定を変更していきましょう。

上記のリンクを参考にして,まず起動メニューを生成する。

$ sudo grub-mkconfig

次に /etc/default/grub を編集する。

$ sudo vi /etc/default/grub

ここまでの段階で起動時にOSの選択メニューが表示され,時間経過(GRUB_TIMEOUT)でUbuntuが起動されるようになりました。
続いて,基本的に使うのがWindowsなので,デフォルト起動(時間経過で立ち上がるやつ)をWindowsにしたい。

まずは現在GRUBにどんなふうに登録されているかを調べます。

$ grep -e "^(menuentry)|(submenu)" /boot/grub/grub.cfg

的な画面が出てくるので,ここをWindows Boot Managerに設定したい。
上から0,1,2…とナンバーが振られている(配列と同じ)ので,

を追加する。

これでデフォルト(タイムアウト)でWindows,メニュー選択でUbuntuが選べるようになった。
場合によってはこちらの設定を行わなければならなかったかもしれない。やっているときにメモるのを忘れていた。

■ os-proberを有効にする

パーティションのブート可能なOSをサーチしてくれるらしい。

■ grubのメニューに追加するための設定

/etc/default/grub は最終的にこんな感じになった。

設定し終えたらアップデートをかける。

$ sudo update-grub

日本語版のデータでインストールしてしまったがために各ディレクトリ名が日本語になってしまった

通常版でインストールしておけばよかった。私はこれを忘れて何度も同じことを繰り返している。人間は言語化しておかないと同じことを繰り返してしまう生き物なの……。

# 日本語フォルダ→英語にする
$ LANG=C xdg-user-dirs-gtk-update

Ubuntuでも指紋認証が使える

X270は指紋リーダがついているので,Ubuntuでも使えるはずだった。
でもドライバの関係からか,デフォルトのままでは生体認証の項目が無効化されていた(利用可能な生体認証デバイスが存在しないと言われる状況)。どうして?
2017年7年前のPCだぞ,目を覚ませ

# 標準fprintdのアンインストール
$ sudo apt remove fprintd
$ sudo apt autoremove
# aptリポジトリの追加(いつもの)
$ sudo add-apt-repository ppa:uunicorn/open-fprintd
$ sudo apt update

pen-fprintdとpython3-validityをインストールする(なぜかはよくわかってない)。

# pen-fprintdとpython3-validityのインストール
$ sudo apt install open-fprintd fprintd-clients python3-validity
# コンソールから指紋を登録
$ fprintd-enroll

ここで指紋の登録を何度か行わされるので,指のコンディションをいい感じにして登録する。

# PAMの設定
$ sudo pam-auth-update

PAMは《Pluggable Authenticaton Modules:特権アクセス管理》の略で,ユーザ認証用のシステムらしい。その設定を変更していく。

Fingerprint authenticationをONにする(*マークを付ける)。指紋認証に関する挙動の有効化。
これで指紋認証が可能になる……らしい

らしいというのも,この作業をしている途中でいつの間にか生体認証の項目が有効化され,Ubuntu側のGUIでも登録できるようになった。どのタイミングで可能になったのか分からず,若干気持ち悪いんだよなぁ……。
(想像だとPAMの設定が終わったタイミング? でも読み取り部の認識すらされてなかったんだよな。途中でドライバ当たった?)

しかしこの生体認証,キーリングのロックは外してくれないため,結局指紋認証でログインするたびにパスワードを求めるダイアログが出てきてしまう。私の寿命がストレスでマッハ。
そこはキーリングのパスワードを空白にすることで乗り越える(バッドノウハウくさくて嫌ではあるが)。
「パスワードと鍵」から「キーリング」でパスワードを空白にして保存する。

ところでWindows11(2アカウント作成)で右人差し指と左人差し指を登録してたところ,Ubuntuで同じ指(右人差し指)を使おうとすると上手くログインできない。
なんでだろなーと思ってBIOSを見てみると,生体認証のリセット項目を見つける。指紋情報とかは本体側に紐付けされてるのかな。
複数の指を登録してUbuntuにログインなどはできたので,一つの指に対して一つの認証情報(ただし別の指で認証情報が重複する分には問題ない)を保持しているんだろうか。
仕方ないのでUbuntuのログインには右の親指を登録しておいた。これでrootを取るときにパスワードは不要で通せる。狂おしいほど楽。

snapがアップデートできないって言われる

Pending update of “snap-store” snap
って出てきてアプデが止まる。

# snapstoreをKillしてリフレッシュする。
$ sudo killall snap-store
$ sudo snap refresh snap-store

そもそもSnapってなんぞやと思って調べてみると,Debパッケージに対して,依存関係に左右されないようにしたパッケージシステムらしい。イメージ的にはGoogle Playでのアプリインストールに近い。

充電設定を確認する

バッテリーは過充電を行うとヘタれてしまったりする。ただでさえ中古のバッテリーなので,そのあたりには更に気を使う必要がある。まあバッテリーも手に入りやすいんだがな!

Windows

Windowsでの充電の設定は下記を参考に行った。Windowsの場合はユーティリティソフト(2024年現在だとLenovo Vantage)が揃っているのでGUIで簡単に設定できる。

が,(当然)Ubuntuではそれが使えないので,別の方法を採ることになる。

Ubuntu

■PowerTopをインストールする

「PowerTop」はハードウェアなどの消費電力を一覧にして、省電力設定ができるIntel提供のLinux向けツールらしい。

$ sudo apt-get install powertop
$ sudo powertop

Tabキーで「Tunables」に移動。項目に「Bad」と書かれているので,これをGoodにしていく。
ESCで離脱し,

# powertopの自動調整を実行
$ powertop --auto-tune

これで自動調整してくれるけれど,電源落とすと元に戻ってしまうらしい。

■TLPをインストールする

$ sudo apt update && sudo apt upgrade -y
$ sudo apt install powertop tlp tlp-rdw
# TLPを実行
$ sudo tlp start

TLPをインストールしてこれを実行すると,再起動しても自動で最適化してくれるらしい(さっきかららしいしか言っていないな?)。

バックアップを取る(システム)

Timeshiftを使ってみる。

Linux初心者なのでまあ環境は壊しまくるだろうなぁということで,システムをバックアップ取る仕組みが欲しかったところで見つけた。
これで ユーザデータを除いた 他のすべてのファイル構造を世代管理できるので,大きな変更・更新前のバックアップや不具合時のロールバックも容易。「ユーザデータを除いた」というのはデフォルトの話で,実際は設定次第でユーザデータもコピーできるけれど,ソフトウェアの開発思想が「システムのバックアップ」に向いているので,それに従うのが吉かな。ユーザデータのうち隠しデータだけはバックアップ取る,というのはありだと思う。

# timeshiftのインストール
$ sudo add-apt-repository -y ppa:teejee2008/timeshift
$ sudo apt-get update
$ sudo apt-get install timeshift

バックアップを取る(ユーザデータ)

システムのバックアップはそれとして,ユーザのほうもバックアップはほしい。こっちはUbuntuデフォルトのバックアップ設定を使う。
バックアップ先はGoogleDriveを使用。家にNASサーバがあるのでそちらにとってもよかったけれど,そちらだと外出時に面倒だし………(とはいえおそとで使う予定はあんまりないけれど)。

そのために次でGoogleDriveと,ついでにDropboxの設定も行う。

Dropbox・GoogleDriveの設定

私はさまざまなサービスにログインする際に文字列ランダム生成+パスワードマネージャを使用しているので,こちらでも使えるようにする。
使っているパスワードマネージャが暗号化されたDB実体を秘密鍵ファイル+パスフレーズで復号化できるタイプなので互換性のあるアプリを入れておいた。

そういうこともありメインPC・スマホ・サブPCで同一のデータを使用したい。現在はメインPCとスマホのDBと秘密鍵は同期されている。それらDB実体がDropbox・秘密鍵ファイルはGoogleDriveに保存しているので,これらにアクセスできるようにしたい。

Dropboxは雰囲気でインストール可能だった気がする(記憶にない……)。
無料アカウントでの3デバイス縛りがややきついけれど,そこはあんまり使わないタブレットの登録を削除した。一応,脱法的な方法でファイル共有する方法が浮かばなくもないけれど,それは言わないお約束で。
これはオフラインでも使用できるようにしておく。

GoogleDriveの方は若干面倒だった。GNOMEオンラインアカウントでアカウント登録しておくとドライブ自体をマウントできるので設定する。本当は別の方法を採りたかったけれど,それは後述。
ただ(ユーザデータの)バックアップをGoogleDriveに取ってる場合,マウントしたフォルダは除外リストに入れないと、面倒なことになることに多分なる(バックアップのバックアップのバックアップ……とネストしていき,バックアップ取るたびに無限に容量が使われる)。

GoogleDriveをマウントする(失敗)

理想でいうなら,起動時にGoogleDriveを特定の場所に自動マウントしてくれるのがよかったのだけれど。それを実現できそうだったのが《google-drive-ocamlfuse》というソフト。

これで自動マウントができるはずなのだけど,なぜか上手くできず。認証用のブラウザが起動しない・起動したとして権限付与したファイル作成で自動起動させようとしてもエラー吐く。
わたしにはまだ ちしきがたりない!
仕方ないので,Ubuntuのデフォルト機能(GNOMEのオンラインアカウント)で登録しておき,そこからマウントしていくことにした(マウントするのが手動なので面倒くさいが……)。

ここからは半ば趣味

GNOMEの拡張をする

TacTile(Windowsでのスナップ機能みたいなやつ)とArcMenu(Windowsのメニューみたいなものを追加するやつ)を追加した。

☺️

CPU等の温度の確認をする

Hardinfoを使用する(GUIでわかりやすいからね……)

# インストール
$ sudo apt install hardinfo
# GUIで起動
$ hardinfo

こんな感じで,まあまあ実用性のあるUbuntu環境が完成しました。

今回使った金額

前回までの金額¥30,737
設定関係¥0
失った時間たちプライスレス
¥30,737

2024/8のパッチでWindows/Linuxデュアルブート環境が壊れる問題

(2024-09-03:追記)

そういえばWindowsの2024年8月のアップデートでセキュリティ更新プログラムを適用すると,Windows/Linuxのデュアルブート環境が破壊される可能性があるということがおきました。

私の環境ではこれは起こらなかった(このリリースされた時点で既にアプデしていた)が,なんでかなーって思っていたけれど,どうやらそもそもセキュアブートがオフになっていたからかもしれない(ガバガバ)。
動かなくなっても面倒なので上記の解決法を先にやってしまったので,普通にセキュアブートオンにしたら本当にUbuntuが動かなくなるのか試せなくなってしまったのが悔やまれる。

アバター画像

非実在研究所所長,当ブログ管理者,プログラマ(みならい)

来栖 めるをフォローする