Slackware Linux 14.1を14.2にアップグレードする

提供: Akionux-wiki
Share/Save/Bookmark
移動先: 案内検索

概要

Slackware Linux 14.1から14.2にアップグレードした。

テスト環境

Slackware Linux x86_64 14.1 から Slackware Linux x86_64 14.2 へアップグレードする。

現在のバージョンの確認するには、/etc/slackware-versionを見る:

cat /etc/slackware-version 
Slackware 14.1

DVDの入手

熱心なSlackwareユーザなら、The Slackware StoreでDVDかCDを注文しよう。

もちろん、Torrentからダウンロードしたり、ミラーサイトからのダウンロードも可能。

バックアップ

アップグレードを始める前に、システムのバックアップを取ろう。 もちろんシステム全体をバックアップを取っておくのが最も安心だが、最低でも/etc以下はバックアップを取っておく。

私の場合、バックアップ先のストレージを/mnt/systemBackupへマウントし、rsyncを使ったスクリプトを使ってバックアップを取った。

mount /dev/<バックアップ先のストレージ> /mnt/systemBackup
#!/bin/sh
START=$(date +%s)
rsync -avxHAX --delete /* /mnt/systemBackup/ --exclude='/dev/*' --exclude='/proc/*' --exclude='/sys/*' --exclude='/tmp/*' --exclude='/run/*' --exclude='/mnt/*' --exclude='/home/*'
FINISH=$(date +%s)
echo "total time: $(( ($FINISH-$START) / 60 )) minutes, $(( ($FINISH-$START) % 60 )) seconds" >> /root/backup_system.log

容量がでかいし、重要なものは別途バックアップを取ってある/home以下はここではバックアップを取っていない。

アップグレード作業

Slackware 14.2 x86_64のDVDでアップグレードをすることとする。 DVDの場合、両面でx86とx86_64が入っているので、間違えないようにする。間違えそうになったのは、x86やx86_64と書いてあるほうにその内容が入っているので、見えるほうにすると逆になってしまう。

DVDルート下にあるUPGRADE.TXTに基本的に従う。以下に書いてあるスクリプトはUPGRADE.TXTに書いてあるものである。

まずは専用のディレクトリを作って、DVDをマウントする。

mkdir /packages
mount /dev/cdrom /packages

シングルユーザモードに入る。

telinit 1

glibc共有ライブラリをアップグレードする。

upgradepkg /packages/slackware64/a/glibc-solibs-*.txz

ユーティリティ関連をアップグレードする。

upgradepkg /packages/slackware64/a/pkgtools-*.txz
upgradepkg /packages/slackware64/a/tar-*.txz
upgradepkg /packages/slackware64/a/xz-*.txz
upgradepkg /packages/slackware64/a/findutils-*.txz

その他全部をアップグレードする。

upgradepkg --install-new /packages/slackware64/*/*.t?z

不要になったパッケージを削除する。CHANGES_AND_HINTS.TXTにそのリストが入っているはずである。 14.1から14.2の場合は、次のようにパッケージ削除する。

removepkg ConsoleKit apmd bluez-hcidump cxxlibs foomatic-filters \
      gnome-icon-theme imlib kdeadmin kdenetwork kdesdk kdetoys kwallet \
      lesstif libelf libjpeg libxfcegui4 networkmanagement obex-data-server \
      obexfs open-cobol oxygen-gtk3 phonon-mplayer phonon-xine pil portmap \
      procps qca-cyrus-sasl qca-gnupg qca-ossl udev xchat xf86-input-aiptek \
      xf86-video-modesetting xfce4-mixer xfce4-volumed xfwm4-themes

次に、設定ファイルを更新する。/etc以下の設定ファイルなどはソフトのアップグレードにより設定ファイルを更新する必要があり、新しい設定ファイルの雛形が*.newという名前で置いてある。 すべての設定ファイルを新しい設定ファイルに置き換え、今までの設定ファイルを*.bakという名前に置き換えるスクリプトは以下のようになる。

     #!/bin/sh
     cd /etc
     find . -name "*.new" | while read configfile ; do
       if [ ! "$configfile" = "./rc.d/rc.inet1.conf.new" \
         -a ! "$configfile" = "./rc.d/rc.local.new" \
         -a ! "$configfile" = "./group.new" \
         -a ! "$configfile" = "./passwd.new" \
         -a ! "$configfile" = "./shadow.new" ]; then
         cp -a $(echo $configfile | rev | cut -f 2- -d . | rev) \
           $(echo $configfile | rev | cut -f 2- -d . | rev).bak 2> /dev/null
         mv $configfile $(echo $configfile | rev | cut -f 2- -d . | rev)
       fi
     done

デスクトップ用途ならばこのスクリプトで良い場合が多いだろうが、サーバ用途ならば慎重に設定ファイルを更新する必要があるだろう。

新しいカーネルの起動設定をする。 次のコマンドでinitrd.gzを生成する:

/usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.14 | bash

これで/boot/initrd.gzが生成される。 あとはブートローダを設定する。 私の場合はelilo(UEFI用LILO)を使っているので、EFIパーティションをマウントし

mount /boot/efi

vmlinuz-*-4.4.14とさっき作ったinitrd.gzをEFIのディレクトリへコピー:

cp /boot/vmlinuz-*-4.4.14 /boot/efi/EFI/Slackware
cp /boot/initrd.gz /boot/efi/EFI/Slackware/initrd-4.4.14.gz

それに合うようにelilo.confを設定する:

prompt
chooser=simple
delay=1
timeout=50
default=vmlinuz-generic-4.4.14
#
image=vmlinuz-generic-4.4.14
        label=vmlinuz-generic-4.4.14
        initrd=initrd-4.4.14.gz
        read-only
        root=/dev/sda3
image=vmlinuz-huge-4.4.14
        label=vmlinuz-huge-4.4.14
        read-only
        root=/dev/sda3

マルチユーザモードに切り替える:

telinit 3

そしてリプート

reboot

更新が必要な可能性のある設定ファイル

  • ntpd: /etc/ntp.conf

アップグレード後に起きた問題とその対策

nvidiaドライバ

Xorgの設定が更新されて、Xの起動時にnouveauでなくてnvidiaを読もうとするためにXが起動しなくなった。

対策は/usr/share/X11/xorg.conf.d/以下の設定ファイルの名前を変えるだけでよい:

cd /usr/share/X11/xorg.conf.d/
mv 10-nvidia.conf 10-nvidia.conf.bak
mv 20-nouveau.conf.bak 20-nouveau.conf

fcitx

インプットメソッドフレームワークのfcitxのインプッドメソッドのオン・オフが切り替わらなくなってしまった。 fcitxとQtの依存関係が影響しているらしく[1]、SlackBuildsのfcitxを再ビルド・インストールしてみたら元通りに直った。

カーネルモジュールのインストール

カーネルが新しくなったので、カーネルモジュールを改めてインストールする必要がある。 例えば、VirtualBoxのカーネルモジュールがある。

アップグレード後にインストール・アップグレードしたパッケージ

  • VLC
VideoLAN - VLC media player for Linux Slackware https://www.videolan.org/vlc/download-slackware.html
  • network/sshfs-fuse
Thunarでssh接続するため。

References

  • Slackware Linux 14.1 DVDのUPGRADE.TXT
  1. Cannot switch input method (to Sunpinyin e.g.) for ONLY KF5 applications · Issue #9 · fcitx/fcitx-configtool · GitHub https://github.com/fcitx/fcitx-configtool/issues/9