自宅でコンソールに使用しているシングルボードコンピュータ"Orange Pi One"のアップグレード(apt-get upgrade)でエラーになったので、対応しました。
目次
バージョン
今年1月に Orange Pi One に Lubuntu を導入しています。
$ cat /etc/issue
Ubuntu 16.04.4 LTS \n \l
$ cat /proc/version
Linux version 3.4.112 (root@curry) (gcc version 4.6.3 20120201 (prerelease) (crosstool-NG linaro-1.13.1-2012.02-20120222 - Linaro GCC 2012.02) ) #1 SMP PREEMPT Mon Nov 14 17:00:28 CST 2016
$ uname -a
Linux OrangePI 3.4.112 #1 SMP PREEMPT Mon Nov 14 17:00:28 CST 2016 armv7l armv7l armv7l GNU/Linux
エラー内容
アップグレードで以下のエラーが発生しました。
- flash-kernel
- initramfs-tools
$ sudo apt-get upgrade
以下のパッケージは保留されます:
linux-generic-hwe-16.04 linux-headers-generic-hwe-16.04 linux-image-generic-hwe-16.04
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 3 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に追加で 0 B のディスク容量が消費されます。
initramfs-tools (0.122ubuntu8.11) を設定しています ...
update-initramfs: deferring update (trigger activated)
flash-kernel (3.0~rc.4ubuntu62.2) のトリガを処理しています ...
Unsupported platform.
dpkg: パッケージ flash-kernel の処理中にエラーが発生しました (--configure):
サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
initramfs-tools (0.122ubuntu8.11) のトリガを処理しています ...
update-initramfs: Generating /boot/initrd.img-4.13.0-26-generic
Unsupported platform.
run-parts: /etc/initramfs/post-update.d//flash-kernel exited with return code 1
dpkg: パッケージ initramfs-tools の処理中にエラーが発生しました (--configure):
サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
処理中にエラーが発生しました:
flash-kernel
initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)
詳細確認
"-s"オプションでシミュレーションを行ってみます。
linux-header(linux-headers-generic)周りでエラーが起きているようです。
※"-u"オプションで内容の詳細を表示しても良かったかもしれません
$ sudo apt-get -s dist-upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが新たにインストールされます:
linux-headers-4.13.0-37 linux-headers-4.13.0-37-generic linux-image-4.13.0-37-generic
以下のパッケージはアップグレードされます:
linux-generic-hwe-16.04 linux-headers-generic-hwe-16.04 linux-image-generic-hwe-16.04
アップグレード: 3 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
2 個のパッケージが完全にインストールまたは削除されていません。
Inst linux-image-4.13.0-37-generic (4.13.0-37.42~16.04.1 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf])
Inst linux-generic-hwe-16.04 [4.13.0.26.46] (4.13.0.37.56 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf]) []
Inst linux-image-generic-hwe-16.04 [4.13.0.26.46] (4.13.0.37.56 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf]) []
Inst linux-headers-4.13.0-37 (4.13.0-37.42~16.04.1 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [all]) []
Inst linux-headers-4.13.0-37-generic (4.13.0-37.42~16.04.1 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf]) []
Inst linux-headers-generic-hwe-16.04 [4.13.0.26.46] (4.13.0.37.56 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf])
Conf initramfs-tools (0.122ubuntu8.11 Ubuntu:16.04/xenial-updates [all])
Conf flash-kernel (3.0~rc.4ubuntu62.2 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf])
Conf linux-image-4.13.0-37-generic (4.13.0-37.42~16.04.1 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf])
Conf linux-image-generic-hwe-16.04 (4.13.0.37.56 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf])
Conf linux-headers-4.13.0-37 (4.13.0-37.42~16.04.1 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [all])
Conf linux-headers-4.13.0-37-generic (4.13.0-37.42~16.04.1 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf])
Conf linux-headers-generic-hwe-16.04 (4.13.0.37.56 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf])
Conf linux-generic-hwe-16.04 (4.13.0.37.56 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [armhf])
bootパーティション確認
カーネルエラーなので、bootパーティションを確認します。
特にパンクしているわけではなさそうです。
$ ls /boot/
abi-4.13.0-26-generic script.bin.OPI-2_720p50_hdmi script.bin.OPI-PLUS_480p_dvi
abi-4.13.0-37-generic script.bin.OPI-2_720p60_dvi script.bin.OPI-PLUS_480p_hdmi
boot0_OPI.fex script.bin.OPI-2_720p60_hdmi script.bin.OPI-PLUS_720p50_dvi
config-4.13.0-26-generic script.bin.OPI-PC_1080p50_dvi script.bin.OPI-PLUS_720p50_hdmi
config-4.13.0-37-generic script.bin.OPI-PC_1080p50_hdmi script.bin.OPI-PLUS_720p60_dvi
initrd.img-4.13.0-26-generic script.bin.OPI-PC_1080p60_dvi script.bin.OPI-PLUS_720p60_hdmi
initrd.img-4.13.0-26-generic.dpkg-bak script.bin.OPI-PC_1080p60_hdmi System.map-4.13.0-26-generic
initrd.img-4.13.0-37-generic script.bin.OPI-PC_480p_dvi System.map-4.13.0-37-generic
initrd.img-4.13.0-37-generic.dpkg-bak script.bin.OPI-PC_480p_hdmi u-boot_OPI-emmc.fex
retpoline-4.13.0-37-generic script.bin.OPI-PC_720p50_dvi u-boot_OPI.fex
script.bin.OPI-2_1080p50_dvi script.bin.OPI-PC_720p50_hdmi uImage
script.bin.OPI-2_1080p50_hdmi script.bin.OPI-PC_720p60_dvi uImage_OPI-2
script.bin.OPI-2_1080p60_dvi script.bin.OPI-PC_720p60_hdmi uImage_OPI-PLUS
script.bin.OPI-2_1080p60_hdmi script.bin.OPI-PLUS_1080p50_dvi vmlinuz-4.13.0-26-generic
script.bin.OPI-2_480p_dvi script.bin.OPI-PLUS_1080p50_hdmi vmlinuz-4.13.0-37-generic
script.bin.OPI-2_480p_hdmi script.bin.OPI-PLUS_1080p60_dvi
script.bin.OPI-2_720p50_dvi script.bin.OPI-PLUS_1080p60_hdmi
対処法1
念のため、カーネルを確認して古いカーネルを削除します。
$ ls -lh /boot/*generic
-rw-r--r-- 1 root root 1.4M Jan 10 00:49 /boot/abi-4.13.0-26-generic
-rw-r--r-- 1 root root 1.4M Mar 7 21:43 /boot/abi-4.13.0-37-generic
-rw-r--r-- 1 root root 221K Jan 10 00:49 /boot/config-4.13.0-26-generic
-rw-r--r-- 1 root root 221K Mar 7 21:43 /boot/config-4.13.0-37-generic
-rw-r--r-- 1 root root 43M Apr 3 02:37 /boot/initrd.img-4.13.0-26-generic
-rw-r--r-- 1 root root 43M Apr 3 02:58 /boot/initrd.img-4.13.0-37-generic
-rw-r--r-- 1 root root 24 Mar 7 21:43 /boot/retpoline-4.13.0-37-generic
-rw------- 1 root root 3.5M Jan 10 00:49 /boot/System.map-4.13.0-26-generic
-rw------- 1 root root 3.5M Mar 7 21:43 /boot/System.map-4.13.0-37-generic
-rw------- 1 root root 7.6M Jan 10 00:49 /boot/vmlinuz-4.13.0-26-generic
-rw------- 1 root root 7.6M Mar 7 21:43 /boot/vmlinuz-4.13.0-37-generic
$ sudo rm -rf /boot/*4.13.0-26*
アップデートを再試行します。
$ sudo apt-get dist-upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
2 個のパッケージが完全にインストールまたは削除されていません。
この操作後に追加で 0 B のディスク容量が消費されます。
続行しますか? [Y/n] y
initramfs-tools (0.122ubuntu8.11) を設定しています ...
update-initramfs: deferring update (trigger activated)
flash-kernel (3.0~rc.4ubuntu62.2) を設定しています ...
initramfs-tools (0.122ubuntu8.11) のトリガを処理しています ...
update-initramfs: Generating /boot/initrd.img-4.13.0-37-generic
Unsupported platform.
run-parts: /etc/initramfs/post-update.d//flash-kernel exited with return code 1
dpkg: パッケージ initramfs-tools の処理中にエラーが発生しました (--configure):
サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
処理中にエラーが発生しました:
initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)
相変わらず、エラーです...。
対処法2
パッケージ管理システムのデータベースをチェック
"--audit"オプションで、パッケージDBの健全性・整合性をチェックします。
$ sudo dpkg --audit
以下のパッケージは最初の設定中に問題が発生したため、設定が終了していません。
dpkg --configure <パッケージ> か dselect で設定 (configure) メニューオプショ
ンを使って設定作業を再試行しなければなりません:
initramfs-tools generic modular initramfs generator (automation)
未設定のパッケージを再設定
上記、メッセージに従い"--configure"オプションを使って、設定作業を再試行します。
$ sudo dpkg --configure initramfs-tools
initramfs-tools (0.122ubuntu8.11) を設定しています ...
update-initramfs: deferring update (trigger activated)
initramfs-tools (0.122ubuntu8.11) のトリガを処理しています ...
update-initramfs: Generating /boot/initrd.img-4.13.0-37-generic
Unsupported platform.
run-parts: /etc/initramfs/post-update.d//flash-kernel exited with return code 1
dpkg: パッケージ initramfs-tools の処理中にエラーが発生しました (--configure):
サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
処理中にエラーが発生しました:
initramfs-tools
エラースクリプトの削除
壊れたアップグレードスクリプトを削除します。
$ ls /var/lib/dpkg/info/ | grep initramfs-tools
initramfs-tools-bin.list
initramfs-tools-bin.md5sums
initramfs-tools.conffiles
initramfs-tools-core.conffiles
initramfs-tools-core.list
initramfs-tools-core.md5sums
initramfs-tools-core.postinst
initramfs-tools-core.postrm
initramfs-tools.list
initramfs-tools.md5sums
initramfs-tools.postinst
initramfs-tools.triggers
$ sudo rm -rf /var/lib/dpkg/info/initramfs-tools*
適用
再度、"--configure"オプションを使って設定すると正常終了します。
$ sudo dpkg --configure initramfs-tools
initramfs-tools (0.122ubuntu8.11) を設定しています ...
問題なくアップデート出来ました。
$ sudo apt-get upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。