Скрипт %_initdir/halt размонтирует loop-устройства, но не освобождает задействованые /dev/loop* устройствами файлы. При том, что loop-устройства не обязательно были смонтированны (например, использовались как swap). Таким образом, на этапе перемонтирования файловой системы, на которой эти файлы находятся, в ro происходит ошибка и система выключается с файловой системой (в том числе и /) всё ещё смонтированной в rw.
Мож патчик нарисуешь?