DISM /Image:D:\ /Get-Packages
DISK /Image:D:\ /Remove-Package /PackageName:(packagename)
このDISMのRevertPendingActionsでやっていることは、レジストリに残っているUpdate途中だよという記録を消すことらしく、DISMコマンドが成功しないなら手動でやるような手もあるとのことで、試してみる。 レジストリをロードして、regeditで「HKEY_LOCAL_MACHINE\Offline_Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending」を確認して中身を削除、レジストリを書き出すという手順だったが、途中のregeditで見てみると、PackagesPendingキーの下にサブフォルダが数百個あった。これはくるくる状態で無限に増えたりしていたのではないか…? とりあえずコマンドラインで全削除を行い、元キーも空で作り直すことにした。
reg load HKLM\Offline_Software D:\Windows\System32\config\SOFTWARE
reg delete "HKEY_LOCAL_MACHINE\Offline_Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending" /f
reg add "HKEY_LOCAL_MACHINE\Offline_Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending"
reg unload HKLM\Offline_Software
さらに保留ファイル pending.xml も念のためリネームして削除扱いにする。
cd d:\Windows\WinSxS\
ren pending.xml pending.xml.bank
mount --bind /dev /mnt/sysroot/dev && mount --rbind /sys /mnt/sysroot/sys && mount -t proc /proc /mnt/sysroot/proc
chroot /mnt/old /bin/bash
mount -a
dnf install grub2-efi-x64-modules.noarch
/usr/sbin/grub2-install --force