debian 11 -> 12 にアプグレ
そろそろアップデートしようかなと思った。
nodesource や gitlab や php など apt でインストールしているパッケージ関連も debian 12 に対応したっぽいので特に問題なくアップグレード出来るはず。
準備。
事前に最新版にする
sudo apt update sudo apt upgrade
apt source を書き換える。
sed -i '/bullseye/bookworm/g' /etc/apt/sources.list sed -i '/bullseye/bookworm/g' /etc/apt/sources.list.d/*
debian 11 から non-free が分割されて、 non-free , non-free-firmware になった。参考資料
sed -i '/non-free/non-free non-free-firmware/' /etc/apt/sources.list
更新する
screen sudo apt update sudo apt upgrade --without-new-pkgs sudo apt full-upgrade sudo apt update sudo apt upgrade
screen で切断時に再接続するようにしておく。
一部がエラーになった。
終わったら再起動
sudo reboot
更新された。
$ cat /etc/debian_version 12.1 $ uname -a Linux mine 6.1.0-11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-4 (2023-08-08) x86_64 GNU/Linux
一部エラーになったもの
libapache2-mod-dnssd がエラーになったのですべてが止まってしまった。
sudo apt purge gnome-user-share libapache2-mod-dnssd
一旦削除して再開した。
中途で停止したため、エラーになったのがgitlab-ce。gitlabは本当によくインストール失敗する。
sed -i '/^/#/' etc/apt/sources.list.d/gitlab_gitlab-ce.list
libapache2-mod-dnssdでアップグレードが中途半端になり、glibcのバージョンが合わずにエラーになった。 エラーになったgitlab-ce は一旦アップグレードから除外してあとまわしにした。
pt1_drv dkms がエラーになった
pt1_drv がエラーになった。どうやら根本的に動かなくなった模様
revh=`hg parents --template '#define DRV_VERSION "r{rev}:{node|short}"\n#define DRV_RELDATE "{date|shortdate}"\n' 2>/dev/null`; \
if [ -n "$revh" ] ; then \
echo "$revh" > version.h; \
else \
printf "#define DRV_VERSION \""1.1.0"\"\n#define DRV_RELDATE \""2010-01-27"\"\n" > version.h; \
fi
make -C /lib/modules/`uname -r`/build M=`pwd` V=0 modules
make[1]: ディレクトリ '/usr/src/linux-headers-6.1.0-11-amd64' に入ります
CC [M] /home/takuya/pt1-dkms/pt1/driver/pt1_pci.o
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c: In function ‘pt1_release’:
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:407:12: warning: "/*" within comment [-Wcomment]
407 | /* /* /* /* mutex_unlock(&channel->ptr->lock); */ */ */ */
|
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:407:15: warning: "/*" within comment [-Wcomment]
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:407:18: warning: "/*" within comment [-Wcomment]
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:407:60: error: expected expression before ‘/’ token
407 | /* /* /* /* mutex_unlock(&channel->ptr->lock); */ */ */ */
| ^
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:414:12: warning: "/*" within comment [-Wcomment]
414 | /* /* /* mutex_unlock(&channel->ptr->lock); */ */ */
|
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:414:15: warning: "/*" within comment [-Wcomment]
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:414:57: error: expected expression before ‘/’ token
414 | /* /* /* mutex_unlock(&channel->ptr->lock); */ */ */
| ^
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:416:12: warning: "/*" within comment [-Wcomment]
416 | /* /* mutex_unlock(&channel->ptr->lock); */ */
|
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c: In function ‘pt1_makering’:
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:666:34: error: implicit declaration of function ‘pci_alloc_consistent’ [-Werror=implicit-function-declaration]
666 | dmaptr = pci_alloc_consistent(pdev, DMA_SIZE, &dmactl->ring_dma[lp2]);
| ^~~~~~~~~~~~~~~~~~~~
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:666:32: warning: assignment to ‘__u32 *’ {aka ‘unsigned int *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
666 | dmaptr = pci_alloc_consistent(pdev, DMA_SIZE, &dmactl->ring_dma[lp2]);
| ^
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c: In function ‘pt1_dma_init’:
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:688:21: warning: assignment to ‘void *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
688 | ptr = pci_alloc_consistent(pdev, DMA_SIZE, &dev_conf->ring_dma[lp]);
| ^
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c: In function ‘pt1_dma_free’:
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:706:25: error: implicit declaration of function ‘pci_free_consistent’ [-Werror=implicit-function-declaration]
706 | pci_free_consistent(pdev, DMA_SIZE,
| ^~~~~~~~~~~~~~~~~~~
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c: In function ‘pt1_pci_init_one’:
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:734:14: error: implicit declaration of function ‘pci_set_dma_mask’ [-Werror=implicit-function-declaration]
734 | rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
| ^~~~~~~~~~~~~~~~
コメントのあたりがおかしい
/home/takuya/pt1-dkms/pt1/driver/pt1_pci.c:414:57: error: expected expression before ‘/’ token 414 | /* /* /* mutex_unlock(&channel->ptr->lock); */ */ */
関数が見つからなくて、implicit declaration of function になってた
666 | dmaptr = pci_alloc_consistent(pdev, DMA_SIZE, &dmactl->ring_dma[lp2]); 688 | ptr = pci_alloc_consistent(pdev, DMA_SIZE, &dev_conf->ring_dma[lp]); 706 | pci_free_consistent(pdev, DMA_SIZE, 734 | rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
どうやら、pci関連の関数が大幅に変わった模様
pt1_drv は家族が録画を楽しみにしてて、生活の一部になってるので、なんとか方法を考える。
ソースコードを書き換えようかと思ったけど、github にレポジトリをみつけた、カーネル6(debian12)に対応できたソースを見つけたのでそれをつかうことに
既存のdkmsは捨てて新しく作り直した。
if [ ! -e ~/repos/stz2012-recpt1 ]; then
cd ~/repos/
git clone https://github.com/stz2012/recpt1.git stz2012-recpt1
fi
cd ~/repos/stz2012-recpt1
git pull
REVISION=`git rev-parse --short HEAD`
##
sudo cp -r ./driver/ /usr/src/pt1_drv-$REVISION/
##
cat << EOT | sudo tee /usr/src/pt1_drv-$REVISION/dkms.conf
PACKAGE_NAME="pt1_drv"
PACKAGE_VERSION="$REVISION"
MAKE[0]="make KVER=\${kernelver}"
CLEAN[0]="make clean"
BUILT_MODULE_NAME[0]="pt1_drv"
DEST_MODULE_LOCATION[0]="/kernel/drivers/video"
AUTOINSTALL="YES"
EOT
##
sudo dkms add -m pt1_drv -v $REVISION
sudo dkms build -m pt1_drv -v $REVISION
sudo dkms install -m pt1_drv -v $REVISION
これで、しばらくpt2/pt1 も動くはずである。良かったね。
rubygem が死んだ。
昔書いたスクリプトで自動化してる系がruby と pythonとphpがあるが、ruby は システム rubygems を使っていために、動作が止まってしまった。
bundler を使ってない系はgem 直接インストール。
bundler を使っている系は、rubygems をシステム全体にインストールして解決した。
ruby のバージョンを固定するのがめんどくさいですね・・・
python や php はDebianアップデート後でも簡単に動くのに。
bundleを使ってる箇所を探すには
sudo updatedb sudo locate Gemfile.lock
とでもやっておけば見つかると思う。
rootで入れたシステム全体のgem はもうやめて、apt で入れたほうが良いかもしれない。
bundle で入れたものはruby のバージョンで依存するので、rbenv をあわせたほうが良いかもしれない。
apt list ruby-*
でapt に登録されている gems を見る限り、ruby-mail ruby-sinatra ruby-zip ruby-pry-byebug ruby-parallel ruby-rspec-core ruby-rmagick ruby-sequel ruby-sqlite3 ruby-daemons とかよく使いそうなものはapt で入るっぽい。OSに任せてロードしたほうがアップデート追従出来て嬉しいかも。
スリープしてしまう。
以前も起きたのですが。アップデート後にスリープしてしまう事象が発生 https://takuya-1st.hatenablog.jp/entry/2021/11/26/172528
sshがdropbear になる。
dropbear は luks 解除のために入れているんですが、SSHDがopenssh-server ではなく、、dropbearになってしまった。
init.d のdropbear が openssh-server より先に起動するためである。
dropbear はモジュールだけがほしいのであるが、自動起動まで入ってしまう。無効にしたのに、また有効になっていた。systemd はマジ、F◯ck だわ。
mysqldumpがエラーを吐くようになった
debian12 に移行したら mysqldump が Events Schedulerでエラーになる。 - それマグで!