常用のデスクトップPC(Ryzen 5 3400G / Windows10)にSSDを増設して、Debian 10を入れてデュアルブートにしたので備忘録
事前準備〜インストール
SSDを増設する
マザーボードの空いているM.2スロットに適当なSSDを入れる。今回はPlextorのMP9eGNを選択。
BIOSから増設したSSDが認識されていることを確認する。
起動ディスクを用意する
Windows上で、Linuxインストール用のUSBメモリを用意する。
Debian公式からnetinst用のisoイメージをダウンロードしてきて、USBメモリに焼く。
マザーボードがUEFIのときはGPTでフォーマットしておく。
インストール
USBメモリを挿したままBIOSメニューに入り、起動順序をUSBメモリ優先にする。 USBメモリのドライブ名にUEFIとかGPTとか表示されていることを確認しておく。
Debianのグラフィカルインストーラが立ち上がるので普通にインストールする。増設したSSDをまるごとDebian用にし、Windows環境には影響がないようにする。
Picasso向けの設定
Debian 10 (buster)のカーネルは4.19で、PicassoのCPU内蔵GPUをサポートしているのはカーネル4.20からなので、そのままでは内蔵GPUを認識できず、Xが起動しない。
また、DebianでAMDのGPUを利用するにはnon-freeのファームウェアが必要で、これもデフォルト設定ではインストールされない。
そのため、backportsから最新のカーネルを組み込み、AMDのファームウェアもインストールできるようにしておく。
最初はXが起動しないのでコンソールログインして、/etc/apt/sources.list
を編集する(好みに応じてvimでもemacsでも適当なエディタをインストールしておく)
以下の記述を追加
deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free
deb http://deb.debian.org/debian/ buster-backports main
カーネルをバックポートされた5.9に更新する。
$ sudo apt update
$ sudo apt install linux-image-5.9.0-0.bpo.5-rt-amd64
再起動後、AMD GPU向けのファームウェアを入れる
$ sudo apt install firmware-linux firmware-linux-nonfree libdrm-amdgpu1 xserver-xorg-video-amdgpu
これでXが起動するはず。
今回は好みのKDE Plasmaをインストールした。
デュアルブートの設定
Windowsが先にインストールされているシステムに後からDebianを入れた場合、自動的にgrubにWindows boot managerが追記されるため、BIOS的にはDebianがインストールされたSSDを優先起動に設定しておけば、DebianのgrubメニューでDebian/Windowsを選択できるようになる。
実用的には、Windowsはアップデートなどで自動再起動を行うことが多いのでgrubメニューのデフォルト設定を固定でなく「前回起動したOS」に設定し、さらに自動選択までの時間を10秒くらいに伸ばしておくほうが何かと便利だと思う。
/etc/default/grub
を編集して以下の3行を追記する。
GRUB_DEFAULT=saved
GRUB_TIMEOUT=10
GRUB_SAVEDEFAULT=true
GRUB_SAVEDEFAULT
をtrue
、GRUB_DEFAULT
をsaved
にしておくと、前回起動したOSを記憶してデフォルトにする。これで、Windows Updateなどで自動再起動がかかったときにDebianが起動してしまいアップデートが中途半端になってしまう事態を回避できる。
ハマった各種設定
常用している各種アプリを入れる過程でハマったポイントをメモしておく。ハマったら随時追加予定
Qt
GUIアプリケーションの開発環境としてQtを利用しているが、最新のインストーラがインストールするQt公式IDEのQt Creator 4.14がそのままではDebian 10ではうまく起動しない。
Qt公式のbug reportによると、DebianはUbuntuとインストールされるライブラリのバージョンが異なるらしく、さらに現状ではDebianはサポート対象に含まれていないので対応予定はないらしい。
libxcb-util0 (0.3.8) on Debian
https://packages.debian.org/stretch/amd64/libxcb-util0/filelist
/usr/lib/x86_64-linux-gnu/libxcb-util.so.0
/usr/lib/x86_64-linux-gnu/libxcb-util.so.0.0.0libxcb-util1 (0.4.0) on Ubuntu
https://packages.ubuntu.com/xenial/amd64/libxcb-util1/filelist
/usr/lib/x86_64-linux-gnu/libxcb-util.so.1
/usr/lib/x86_64-linux-gnu/libxcb-util.so.1.0.0
上記bug report上で議論されている通り、手っ取り早くlibxcb-util.so.1
というシンボリックリンクを作ってlibxcb-util.so.0.0.0
からリンクを張れば回避できる。
Dropbox
DropboxのLinux版デスクトップアプリを使ってファイルを同期しようとしたが、ある時点からさっぱり同期が進まなくなってしまった。
色々調べたところ、Linuxのデフォルト設定では10000以上のディレクトリを監視対象にすることができないらしい。
Dropboxディレクトリ以下のサブディレクトリが10000以上あるとその制限に引っかかる。
サブディレクトリ数は以下のようにカウント可能。
$ find Dropbox -type d | wc -l
これで10000以上のディレクトリがある場合は、上記制限により同期が進まなくなっている。
回避策として、とりあえずシステム設定を100000程度に引き上げることで回避可能。
echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p