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でエラーになる。 - それマグで!