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

Ubuntu18.04+virtualboxでPKCS#7 signature not signed with a trusted key

問題点

最近、Ubuntu18.04をupgradeしたら、plymouthのスプラッシュスクリーンに下記のようなエラーが表示されるようになった。VirtualBoxは普通にリポジトリからaptでインストールしたものを使用していた。VirtualBoxを削除するとメッセージは出なくなるので、原因はVirtualBoxだと思う。

[    6.520533] PKCS#7 signature not signed with a trusted key
[    6.520996] VBoxNetFlt: Successfully started.
[    6.522276] PKCS#7 signature not signed with a trusted key
[    6.522450] VBoxNetAdp: Successfully started.

解決策(後に失敗する)

なんか、よくわからないけど、VirtualBox関連ドライバーの署名の問題らしく、既存のVirtualBoxをアンインストールして、最新(6.1)のVirtualBoxをOracleからダウンロードしてインストールしたら出なくなった。

再発

2020/02/02
やっぱりよくわからない解決方法は再発する。また出始めた。特に実害があるわけではないし、正直もう面倒くさいので、表示するログレベルを重要度高いのだけにすることにした。個人で使うノートパソコンなので、今回はこれで十分だと思う。

メッセージのログレベルを確認

まずは問題のメッセージのログレベルを確認する。-lオプションでログレベル指定して表示していくと、今回のメッセージは3のときに表示された。

$ dmesg -l 3

現在の設定を確認

下記コマンドのファイルが設定内容。自分の環境では「4 4 1 7」だった。この値はドキュメントによると下記の説明らしい。
– console_loglevel: これよりも優先度の高いメッセージがコンソールに出力される
– default_message_loglevel: 明示的な優先度のないメッセージは、この優先度で出力される
– minimum_console_loglevel: console_loglevelを設定できる最小(最高)値
– default_console_loglevel: console_loglevelのデフォルト値
なので、1番目と2番目の4のことろを3にすれば良さそうだ。

$ cat /proc/sys/kernel/printk

メッセージを非表示に

ログレベル3をいちいち表示しない設定にするので、表示するログレベルを3未満に設定する。Kernelからのエラー(主にハードウェア)が自動的に表示されない設定になるので、自己責任で定期的にログ確認したほうが良いと思う。Windowsでもログの内容は見ないと分からないんだから、クライアント用途ならこれで良いと思った。

kernel.printk = 3 3 1 7

KDE PlasmaのDolphinでsmb共有の動画をVLCで再生する

問題点

普通にDolphinでsmb://192.168.1.1/Public/に移動して*.mp4を開こうとするとエラーが発生する。Dolphinの挙動的には、マウントせずにDolphin単体でアクセスしているため、VLCプレイヤーではアクセスできていない感じの挙動に見える。
(KDE Plasma:5.17.5、Dolphin:19.12.1)

改善策

基本に戻ってcifsマウントすればファイルシステムの一部として動作するはずなので、まずはcifs-utilsをインストールする。

# apt install cifs-utils

次にfstabに記述を追加してrootじゃなくてもマウント可能にする。

//192.168.1.1/Public /mnt/192.168.1.1-Public cifs vers=3.1.1,username=user,password=pass,file_mode=0666,dir_mode=0777,nobrl,noauto,x-systemd.automount,x-systemd.device-timeout=10,users 0 0

Dolphinを開くと、リモートの項目に「Public on 192.168.1.1」が追加されていた。クリックすると自動的にマウントが行われ、無事にVLCプレイヤーでmp4を再生できた。

VPN切断時にアンマウント

自分の場合はVPN経由でマウントする場合もあり、VPN経由でマウントしたまま+VPN切断済みの状態でシャットダウンを行うと、smbサーバーと通信できず、マウント解除を1分30秒待機してからシャットダウンされるので、ここの手順で対策した。

ログアウト時にVPN切断

それでもVPN接続したままシャットダウンすると1分30秒待たされるので、ログアウト時に下記のような内容のVPNを切断するスクリプトを登録しておくと安心。

#!/bin/sh
nmcli connection down VPN接続名

Ubuntu18.04で認証なしsamba共有を作成する

同一ネットワーク内のほかの端末にデータを渡したい場合に、簡単に共有するための「読み取り専用のsamba共有」を作成するのが目的です。

sambaをインストールする。

# apt install samba

設定ファイルをバックアップする。

# mv /etc/samba/smb.conf /etc/samba/smb.conf.backup

設定ファイルを以下の内容で作成する。

[global]
unix charset = UTF-8
dos charset = CP932
security = user
map to guest = Bad User
guest account = nobody

[usershares]
path = /var/lib/samba/usershares/
browseable = yes
guest ok = yes

/var/lib/samba/usershares/の権限を適宜変更する。今回は個人利用なので777で良い。

# chmod 777 /var/lib/samba/usershares/

サービスの開始と有効化。

# systemctl start smbd
# systemctl enable smbd

Ubuntu18.04でLVDSのディスプレイを無効にする

接続していないのに、なぜかLVDS-1というディスプレイがメインディスプレイになっていて、HDMIで接続しているディスプレイがセカンダリ扱いになっている。無効にしたいので、”video=LVDS-1:d”を追記する。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=LVDS-1:d"

設定ファイルを書き出す。

# grub-mkconfig -o /boot/grub/grub.cfg