Ubuntu20.04でディスプレイのRGBを調整する

ノートパソコンのディスプレイの色がなんか変な感じがして、好みの問題かもしれないけど、温かみが足りないと思いRGBを調整した。

下記のコマンドでディスプレイ名を確認する。

$ xrandr

「eDP」という名前だったので、下記コマンドを自動起動するアプリケーションに登録する。

xrandr --output eDP --gamma 1:0.93:0.93

Ubuntu20.04でVirtualBoxの仮想マシンをサービス化する

予め実行ユーザーをvboxusersグループに所属させておく。

# gpasswd -a username vboxusers

下記のファイルを作成する。パーミッションは644で良い。

[Unit]
Description=VirtualBox VM %I
After=network.target virtualbox.service
Before=runlevel2.target shutdown.target

[Service]
[Unit]
Description=VirtualBox VM %I
After=network.target virtualbox.service
Before=runlevel2.target shutdown.target

[Service]
User=username
Group=vboxusers
Type=forking
Restart=no
TimeoutSec=300
IgnoreSIGPIPE=no
KillMode=none
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/bin/VBoxManage startvm %i --type headless
ExecStop=/bin/bash -c '/usr/bin/VBoxManage controlvm %i acpipowerbutton; while [ ! -z "`VBoxManage list runningvms | grep %i`" ]; do sleep 1; done'

[Install]
WantedBy=multi-user.target

win1とwin2という名前の仮想マシンをサービスとして有効にして起動する。

# systemctl enable vbox@win1
# systemctl start vbox@win1
# systemctl enable vbox@win2
# systemctl start vbox@win2

Ubuntu18.04で特定のウィンドウに常にフォーカスを与える

端末を1つの用途(アプリケーション)専用にする場合、キーボード操作を常に1つのウィンドウで処理したい場面が結構ある。もっとスマートな方法があるだろうけど、とりあえずwmctrlコマンドをcronに登録して1分ごとに専用ウィンドウにフォーカスを行うことにした。

wmctrlのインストール。

# apt install wmctrl

cronに登録。

* * * * * export DISPLAY=:0 && /usr/bin/wmctrl -a ウィンドウタイトル

Ubuntu18.04ですべてのkernelを削除してしまった場合の対処

すべてのkernelを削除すると、GRUBから起動できなくなるので、OSのインストールメディアでブートして、そのターミナルでkernelを再インストールする。

kernelのインストール作業

まずはインストールするドライブを特定する。下記のコマンドを実行してインストール対象のドライブラベルを確かめる。自分の環境では “nvme0n1p2” でした。

$ lsblk

次に特定したドライブを/mnt/にマウントする。

# mount /dev/nvme0n1p2 /mnt/

更にインストールに必要なディレクトリやファイルをマウント、バインドする。

# mount -o bind /dev/ /mnt/dev/
# mount -o bind /dev/pts/ /mnt/dev/pts/
# mount -t sysfs /sys/ /mnt/sys/
# mount -t proc /proc/ /mnt/proc/
# cp /etc/resolv.conf /mnt/etc/resolv.conf

chrootを実行してからパッケージリストを更新する。

# chroot /mnt/
# apt update

あとは普通にkernelをインストールする。自分はkernelのバージョン5.3.0-51をインストールした。

# apt install linux-headers-5.3.0-51
# apt install linux-headers-5.3.0-51-generic
# apt install linux-image-5.3.0-51-generic
# apt install linux-modules-5.3.0-51-generic
# apt install linux-modules-extra-5.3.0-51-generic

GRUBの設定を更新してインストールしたkernelを示すことを確認する。

# update-grub

Ctrl+Dでchrootを解除し、下記のコマンドでマウントを解除する。

# umount /mnt/dev/pts/
# umount /mnt/dev/
# umount /mnt/sys/
# umount /mnt/proc/
# umount /mnt/

再起動して正常に起動することを確認。

Thinkpad X395のUbuntuが放電状態で起動するとフリーズする問題

環境

・ OS: Ubuntu 20.04
・ カーネルバージョン: 5.4.0-29-generic
・ プロセッサ: 8 × AMD Ryzen 5 PRO 3500U w/ Radeon Vega Mobile Gfx
・ メモリ: 13.6 GiB of RAM

対策

どうやらRyzenのIOMMU関連が原因のようで、カーネルのオプションにiommu=softを追加する必要がある。iommu=offだと何らかのIOMMUサポートが必要なデバイスが動かないらしい。

…
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=soft"
…

/boot/grub/grub.cfgを更新する。

# update-grub

Ubuntu18.04で更新されたLinux Kernelを別のバージョンに変更する

「apt upgrade」で調子こいて更新しまくっていると、おかしくなったり、意にそぐわない変更があったりして、別のKernelに変更したくなった場合の手順です。

目的のKernelバージョンを特定

まずは目的のKernelを特定する。起動時にESCを押して起動するKernelの選択画面から特定するのもありだし、aptで探し出しても良いと思う。

目的のKernelをインストール

目的のKernelバージョンが分かったら、下記のような感じで必要なものをインストールする。
※今回は5.3.0-26から5.0.0-37に戻したい

# apt install linux-headers-5.0.0-37
# apt install linux-headers-5.0.0-37-generic
# apt install linux-image-5.0.0-37-generic
# apt install linux-modules-5.0.0-37-generic
# apt install linux-modules-extra-5.0.0-37-generic

再起動してインストールしたKernelを起動

再起動して、起動時にESCを押して先程インストールしたKernelでOSを起動する。

いらないKernelを削除

正常動作を確認したら、いらないKernelを削除する形で、GRUBが起動するKernelを先程インストールしたバージョンにする。
※もし使わないKernelを残したい場合はGRUBの設定をいじる

# apt autoremove --purge linux-headers-5.3.* linux-image-5.3.* linux-modules-extra-5.3.*

今後の更新をとりあえず止める

以後、勝手に新しいKernelが入るのは嫌なので、下記のファイルを作成して更新対象外に設定しておく。

Package: linux-generic linux-headers-generic linux-image-generic
Pin: version 5.0.0.37*
Pin-Priority: 1001

HWEカーネル

HWEカーネルを使用している場合はこっち。

Package: linux-generic-hwe-18.04 linux-headers-generic-hwe-18.04 linux-image-generic-hwe-18.04
Pin: version 5.0.0.37*
Pin-Priority: 1001