概略
結構新しいラックサーバーをubuntu22.04にアップグレードしたらモニターが映らなくなった。
GPUは Matrox G200xxx なんだけど、枯れすぎたらしい。
ssh経由でkernelのフレーバーを変更したら写ったけど、新規にインストールできない(何かあっても再現できない)環境になってしまった。インストールUSBで立ち上げてもログインする前にモニターに映らなくなる。幸い立ち上げたばかりなので色々かえてもいい。
仕様
ベンダーはubuntuをサポートしているらしいが、canonicalのカーネル開発チームがベンダーを裏切ったので意味がない。
いつの時代もサポートなんて最小限にされてしまうよなと感慨深げに。
処置 & 新たな問題
debianに変更した。ubuntuよりもシンプルでsidからパッケージを持ってくることもできるしやった〜!!
あ、コンフリクトするやん。。。
家ではarchを使っていて、職場では長らくubuntuだったのでパッケージを管理してコンフリクトがものすごいエモかったです。
サーバーは主にdockerでデプロイされる環境なのでカーネルを比較的新しく保っておけばいい。だが、debianだと、sidからカーネルをインストールはできるが、他のツールのバージョンは古くなって他に入れたいソフトがビルドできない。。。
Dockerでビルドしたろ!!!!!!
Dockerでsidのイメージを持ってきてビルドするとシステムがクリーンなまま保てて、カスタマイズできてとても良い。
kernelはKCFLAGS=-march=native
でビルドすると品質があがるらしい。
FROM debian:unstable-slim
RUN echo "deb-src http://deb.debian.org/debian unstable main" >> /etc/apt/sources.list
RUN sed -i 's@deb.debian.org@ftp.riken.jp/Linux/debian@g' /etc/apt/sources.list
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install build-essential libncurses-dev fakeroot dpkg-dev && apt-get -y build-dep linux
RUN apt-get -y install linux-source
RUN ls -l /usr/src/linux-config-5.18
RUN tar xf /usr/src/linux-source* && cd linux-source* && mv /usr/src/linux-config-*/config.amd64_none_amd64.xz . && xz -d config.amd64_none_amd64.xz && mv config.amd64_none_amd64 .config && echo "CONFIG_PROCESSOR_SELECT=y" >> .config
RUN cd linux-source* && nice make -j 65 KCFLAGS=-march=native bindeb-pkg
RUN mkdir data
CMD mv linux-headers* ./data/ && mv linux-image* ./data/ && mv linux-libc-dev* ./data/
dataディレクトリをマウントしたら良い。
結論
えっ!5分でビルド終わった。。。。。
コンフリクトはDockerに丸投げする。本番ディストリはお固くまとめる。新旧一体でどや。