Небольшие проблемы Отмена загрузки Ubuntu (18.04) через Debian 8.10

Если вы используете bash , просто:

shopt -s globstar # to match files recursively
cat -- **/*.tcl
6
03.05.2018, 11:16
1 ответ

Хорошо, я понял. Вызов debootstrapдействительно указывал на сбой, возвращая код выхода 1. Я пропустил это из-за того, что я связывал несколько команд и использовал подоболочки.

Как только я понял это, мне нужно было выяснить, с какой проблемой debootstrapя столкнулся. Это не было очевидно из/debootstrap/debootstrap.log(внутри мишени ), хотя задним числом это было очевидно. Так что мне нужно было самоанализ debootstrap. Чтобы сделать это, я вызвал скрипт оболочки /usr/sbin/debootstrapявно через /bin/sh -x(, чтобы включить трассировку ), и вывод можно увидеть внутри/debootstrap/debootstrap.log(внутри цели ). В моем случае проблема была mknod, как показано этой записью трассировки и выводом:

+ mknod -m 666 /target/dev/null c 1 3
mknod: '/target/dev/null': File exists

, что, в свою очередь, было вызвано тем, что я установил /dev, /procи /sysв мишень впереди(то, что работало в прошлом! ).

В новых debootstrapверсиях это кажется безусловным сбоем. Соответствующая функция, вызывающая mknod, — это setup_devices_simpleиз /usr/share/debootstrap/functions.

Одно заметное изменение, которое я заметил при сравнении debootstrapсценариев для 1.0.59и1.0.89~bpo8+1(и последующих версий ), заключалось в том, что вызов функции setup_devicesпереместился из функции second_stage_installв функцию first_stage_install(. сценария gutsy). Эта функция вызывает setup_devices_simple, если только не выполняется вариант fakechrootили работа на «чужом» ядре, и поэтому вызывает mknodнесколько раньше, чем раньше.

Причина, по которой это раньше не давало сбоев, похоже, заключается в том, что в прошлом устройства хранились внутри файла.tgz и распаковывались на место, тогда как теперь debootstrapиспользует mkdnodнапрямую.

8
27.01.2020, 20:27

Теги

Похожие вопросы