Я работаю над пользовательским изображением Установщика Ubuntu, и я нахожусь в немногим выше моей головы.
У нас есть пользовательский файл семени, который выполняет эту команду:
d-i preseed/early_command string /cdrom/Snare/update_v5.sh
В том файле сценария я добавил проверку, которая бросает ошибку, если он не может найти файл в существующей системе:
if [ ! -f /target/path/to/file.gz ]; then
logger custom-partition error "File not found, upgrade aborted!"
logger custom-partition error "Please run the Upgrade Preparation script first."
exit 1
fi
Когда проверка перестала работать, она бросает главным образом бесполезное сообщение об ошибке и предоставляет возможность продвигаться с процессом установки.
Как я могу заставить его бросить полезное сообщение об ошибке и блок дальнейшие действия по установке?
С помощью полезных указателей из @CallmeV я нашел решение.
В скрипте preseed/early_command
вы можете настроить шаблон debconf error
и принудительно запустить неограниченный цикл, чтобы предотвратить дальнейшее продвижение через установщик.
if [ ! -f /target/path/to/file.gz ]; then
. /usr/share/debconf/confmodule
cat > /tmp/Notification.template <<'!EOF!'
Template: snare-upgrade/notification
Type: error
Description: ERROR - Unable to upgrade!
Unable to upgrade your existing system... blah blah blah...
!EOF!
debconf-loadtemplate snare-upgrade /tmp/Notification.template
while [ 1 ]; do
db_input critical snare-upgrade/notification || true
db_go
db_get snare-upgrade/notification
done
fi
Как я уже сказал, большое спасибо CallmeV и этим страницам: