Bug 34319 - Ошибка обновления с P8 до Sisyphus
: Ошибка обновления с P8 до Sisyphus
Status: ASSIGNED
: Sisyphus
(All bugs in Sisyphus/udev)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
: 34505 34508
:
  Show dependency tree
 
Reported: 2017-12-11 20:29 by
Modified: 2018-03-30 17:12 (History)


Attachments
Лог обновления (242.55 KB, application/octet-stream)
2017-12-11 20:29, Sergey Novikov
no flags Details


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2017-12-11 20:29:15
Created an attachment (id=7306) [details]
Лог обновления

Обновлении Workstation с P8 до Sisyphus завершается с ошибками (см.
прикрепленный файл)

После обновления:
# apt-get dist-upgrade
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
You might want to run `apt-get --fix-broken install' to correct these.
Следующие пакеты имеют неудовлетворенные зависимости:
  udev#1:233-alt0.M80P.1: Для установки требует: udev-rules (=
1:233-alt0.M80P.1)
                          Для установки требует: udev-hwdb (=
1:233-alt0.M80P.1)
                          Для установки требует: systemd-utils (=
1:233-alt0.M80P.1)
  udev-hwdb: Конфликтует: udev (< 1:235-alt3)
  udev-rules: Конфликтует: udev (< 1:235-alt3)
E: Unmet dependencies. Try using --fix-broken.
------- Comment #1 From 2018-01-29 18:30:04 -------
В сизифе совсем новый rpm.
Во всех описаниях на wiki для обновления с одной ветки на другую, рекомендуют
сначала обновить apt и rpm.
1) apt-get install apt rpm lua5.3 liblua5.1- lua5.1-alt-compat-
liblua5.1-preinstall- lua-module-luasocket
2) apt-get update
3) apt-get dist-upgrade
------- Comment #2 From 2018-01-29 20:22:17 -------
А это помогает ?
------- Comment #3 From 2018-01-29 20:59:15 -------
я это проверил в виртуалке, которую мне выделили.
------- Comment #4 From 2018-01-29 22:01:01 -------
Я завтра ещё раз посмотрю и закрою сам.
------- Comment #5 From 2018-02-02 17:32:26 -------
# apt-get install apt rpm lua5.3 liblua5.1- lua5.1-alt-compat-
liblua5.1-preinstall- lua-module-luasocket
Выдает следующее:
Пакет liblua5.1-preinstall не установлен, и не может быть удалён.
Следующие дополнительные пакеты будут установлены:
  chrpath libapt liblua5.3 libquvi0.9 librpm7 luarocks synaptic
Следующие пакеты будут ОБНОВЛЕНЫ:
  apt libapt libquvi0.9 lua-module-luasocket luarocks rpm synaptic
Следующие пакеты будут УДАЛЕНЫ:
  liblua5.1 lua5 lua5.1-alt-compat
Следующие НОВЫЕ пакеты будут установлены:
  chrpath liblua5.3 librpm7 lua5.3
7 будет обновлено, 4 новых установлено, 3 пакетов будет удалено и 1144 не будет
обновлено.
...
file /usr/lib/rpm/macros from install of librpm7-4.13.0.1-alt1 conflicts with
file from package librpm-4.0.4-alt101.M80P.1
file /usr/lib/rpm/rpmrc from install of librpm7-4.13.0.1-alt1 conflicts with
file from package librpm-4.0.4-alt101.M80P.1
E: Ошибка во время исполнения транзакции
------- Comment #6 From 2018-02-03 21:43:09 -------
Это отдельный баг, который стоит повесить на librpm7.
Возможно, сделав его зависимостью этого бага, если ещё останется.
------- Comment #7 From 2018-03-28 18:27:02 -------
Получается следующее:
1) обновляются библиотеки
2) обновляется udev и пытается перезапуститься. 
 - Если sysv - то вызывается сам бинарник udevd из init-скрипта.
 - Если systemd - то используется systemctl restart udevd, но systemctl еще не
обновился, а библиотеки уже обновились.
3) обновляется systemd (где новый systemctl)

Варианты решения:
1) попробовать добиться установки systemd сначала, а потом udev. 
2) в %post пакета udev определять init, и если это sysv то запускать рестарт,
если systemd то ничего не делать и перезапускать udev в %post пакета systemd.
------- Comment #8 From 2018-03-28 20:31:31 -------
ещё вариант - сделать отдельный upgrade mode для сложных ситуаций и загружаться
в него.
------- Comment #9 From 2018-03-28 20:48:14 -------
(В ответ на комментарий №8)
> ещё вариант - сделать отдельный upgrade mode для сложных ситуаций и загружаться
> в него.
Такой режим предусмотрен в systemd. Только мы его не используем. И не умеем
использовать, надо сначала научиться.
------- Comment #10 From 2018-03-28 20:49:17 -------
наверное, есть смысл подумать в эту сторону.
Нужна какая-то интеграция в apt ?
------- Comment #11 From 2018-03-29 15:35:40 -------
(В ответ на комментарий №8)
> ещё вариант - сделать отдельный upgrade mode для сложных ситуаций
> и загружаться в него.
Вот уж этого мегакостыля хотелось бы по возможности избежать.
Снизу постучать будет сложно.
------- Comment #12 From 2018-03-29 15:56:57 -------
Какой уж это мегакостыль ? вполне нормальное поведение для системы.
Один чёрт сейчас графискую систему (например KDE) приходится перегружать
самостоятельно, что бы потом ничего не взрывалось.
------- Comment #13 From 2018-03-29 16:08:27 -------
Буквально на днях обсуждал с Глебом. Я думал сделать фичу, что если в корне
системы появляется исполняемый /initramfs.sh, то initrd перемонтирует корень в
RW b выполнит этот скрипт вместо init= и после завершения скрипта сделает
reboot.

Скрипт же должен либо сам себя удалить, либо оставить вместо себя новую стадию
и они в свою очередь будет выполнена.
------- Comment #14 From 2018-03-29 16:31:55 -------
(В ответ на комментарий №12)
> Какой уж это мегакостыль ? вполне нормальное поведение для системы.
Для моих -- нет.

> Один чёрт сейчас графискую систему (например KDE) приходится перегружать
> самостоятельно, что бы потом ничего не взрывалось.
А мне не приходится.  Причём по тому бородатому анекдоту как только начинаешь
давать себе такие "технологические поблажечки" -- так и всё, путь под откос
открыт: "ну ведь режим же специальный есть".  Будешь потом сам не рад бутаться
по каждому чиху.

</rant>
------- Comment #15 From 2018-03-29 19:58:05 -------
(В ответ на комментарий №13)
> Буквально на днях обсуждал с Глебом. Я думал сделать фичу, что если в корне
> системы появляется исполняемый /initramfs.sh, то initrd перемонтирует корень в
> RW b выполнит этот скрипт вместо init= и после завершения скрипта сделает
> reboot.
> 
> Скрипт же должен либо сам себя удалить, либо оставить вместо себя новую стадию
> и они в свою очередь будет выполнена.

какой-то функционал есть в systemd. Может быть, он там более продуман ? Можно
ведь переложить эту задачу на init, а не на initramfs.
------- Comment #16 From 2018-03-29 20:39:57 -------
"Буквально на днях обсуждал с Глебом. Я думал сделать фичу, что если в корне
системы появляется исполняемый /initramfs.sh, то initrd перемонтирует корень в
RW b выполнит этот скрипт вместо init= и после завершения скрипта сделает
reboot."
А если у меня BTRFS и подтома @, @home, система стоит в @, то, судя по путям
вида /@/boot/ в grub.cfg initrd монтирует корень без параметра subvol=@, а уже
в kernel cmdline передается rootflags=subvol=@ , то есть ваш скрипт будет по
пути /@/initramfs.sh, а не /initramfs.sh, если я все правильно понимаю. При
этом корневой подтом воовсе необязательно должен называться @.
------- Comment #17 From 2018-03-29 20:41:23 -------
(In reply to comment #0)
> E: Unmet dependencies. Try using --fix-broken.

(In reply to comment #2)
> А это помогает ?

Мне вчера помогло! apt-get dist-upgrade --fix-broken просто снёс более старый
удав и всё.
------- Comment #18 From 2018-03-29 23:43:36 -------
(В ответ на комментарий №15)
> какой-то функционал есть в systemd. Может быть, он там более продуман ? Можно
> ведь переложить эту задачу на init, а не на initramfs.

Ну моё дело сказать.


(В ответ на комментарий №16)
> А если у меня BTRFS и подтома @, @home, система стоит в @, то, судя по путям
> вида /@/boot/ в grub.cfg initrd монтирует корень без параметра subvol=@, а уже
> в kernel cmdline передается rootflags=subvol=@ , то есть ваш скрипт будет по
> пути /@/initramfs.sh, а не /initramfs.sh, если я все правильно понимаю. При
> этом корневой подтом воовсе необязательно должен называться @.

Может вы меня не поняли, а может я вас.
------- Comment #19 From 2018-03-29 23:58:44 -------
А что непонятного? Как я представляю процесс, файла /initramfs.sh не будет до
загрузки ядра на стадии initrd, даже если в процессе работы системы он был
положен в /initramfs.sh
------- Comment #20 From 2018-03-30 00:05:21 -------
(В ответ на комментарий №19)
> А что непонятного? Как я представляю процесс, файла /initramfs.sh не будет до
> загрузки ядра на стадии initrd, даже если в процессе работы системы он был
> положен в /initramfs.sh

Сначала вопрос: что вы прописываете в init=, буквально пример можно ?
------- Comment #21 From 2018-03-30 00:06:27 -------
То есть на стадии initrd будет
$ ls /
@ @home

А после initrd, когда загрузится ядро Linux, будет
$ ls /
etc   initrd.img  media  proc  run   srv  usr
bin     cdrom              grub  lib         mnt    root  sbin  sys  var
boot    dev                home  lib64       opt    rosa  snap  tmp  vmlinuz
------- Comment #22 From 2018-03-30 00:09:05 -------
Я ничего не прописываю в init вручную, все автоматом, на Ubuntu инсталлятор
такую разбивку делает автоматом, если указать точку монтирования / в BTRFS и не
указывать /home отдельно, на Альте вручную переделывал уже установленную
систему на такую схему разбивки на подтома BTRFS, тоже работает.

$ cat /boot/grub/grub.cfg | grep '/@/boot/'
        linux    /@/boot/vmlinuz-4.15.0-13-generic
root=UUID=355fccdc-c430-43b5-929b-f38e35136c1c ro rootflags=subvol=@  
    initrd    /@/boot/initrd.img-4.15.0-13-generic
            linux    /@/boot/vmlinuz-4.15.0-13-generic
root=UUID=355fccdc-c430-43b5-929b-f38e35136c1c ro rootflags=subvol=@  
        initrd    /@/boot/initrd.img-4.15.0-13-generic
            linux    /@/boot/vmlinuz-4.15.0-13-generic
root=UUID=355fccdc-c430-43b5-929b-f38e35136c1c ro recovery nomodeset
rootflags=subvol=@ 
        initrd    /@/boot/initrd.img-4.15.0-13-generic

$ cat /etc/fstab | grep btrfs
UUID=355fccdc-c430-43b5-929b-f38e35136c1c /               btrfs  
defaults,subvol=@,compress=lzo 0       1
UUID=355fccdc-c430-43b5-929b-f38e35136c1c /home           btrfs  
defaults,subvol=@home,compress=lzo 0       2
# UUID=355fccdc-c430-43b5-929b-f38e35136c1c /home btrfs
nofail,discard,defaults,subvolid=264,compress=lzo
UUID=355fccdc-c430-43b5-929b-f38e35136c1c /home/user/.config/chromium btrfs
nofail,discard,defaults,subvol=@home_chromium,compress=lzo
UUID=355fccdc-c430-43b5-929b-f38e35136c1c /home/user/.thunderbird btrfs
nofail,discard,defaults,subvol=@home_thunderbird,compress=lzo
UUID=355fccdc-c430-43b5-929b-f38e35136c1c /home/user-rosa/ btrfs
nofail,discard,defaults,subvol=@home_rosa,compress=lzo
# UUID=355fccdc-c430-43b5-929b-f38e35136c1c /tmp btrfs
nofail,discard,defaults,subvol=@tmp
UUID=355fccdc-c430-43b5-929b-f38e35136c1c /home/user/.PlayOnLinux btrfs
nofail,discard,defaults,subvolid=335,compress=lzo
#UUID=355fccdc-c430-43b5-929b-f38e35136c1c /rosa btrfs
nofail,discard,defaults,compress=lzo,subvol=@rosa
#UUID=355fccdc-c430-43b5-929b-f38e35136c1c /var/lib/libvirt/images/ btrfs
nofail,discard,defaults,subvol=@libvirt-images
UUID="20de7529-5a39-4514-80d7-c5ef71a52b75"
/media/3TB_Toshiba_BTRFS/oblako-backup btrfs
nofail,compress=lzo,subvol=@oblako-backup
UUID="20de7529-5a39-4514-80d7-c5ef71a52b75" /var/lib/libvirt/ btrfs
nofail,subvol=@libvirt
UUID="20de7529-5a39-4514-80d7-c5ef71a52b75" /home/user/Загрузки/ btrfs
nofail,subvol=@downloads
UUID="20de7529-5a39-4514-80d7-c5ef71a52b75" /media/3TB_Toshiba_BTRFS/files
btrfs nofail,compress=lzo,subvol=@files
UUID="20de7529-5a39-4514-80d7-c5ef71a52b75"
/media/3TB_Toshiba_BTRFS/Linux-Dumalogiya btrfs
nofail,compress=lzo,subvol=@linux-dumalogiya
UUID="20de7529-5a39-4514-80d7-c5ef71a52b75" /home/user/.steam btrfs
nofail,compress=lzo,subvol=@steam-mikhailnov
------- Comment #23 From 2018-03-30 00:10:01 -------
user@pay2:~$ cat /proc/cmdline
BOOT_IMAGE=/@/boot/vmlinuz-4.15.0-13-generic
root=UUID=355fccdc-c430-43b5-929b-f38e35136c1c ro rootflags=subvol=@
user@pay2:~$ sudo btrfs subvol list /
[sudo] пароль для user: 
ID 264 gen 525182 top level 5 path @home_rosa
ID 277 gen 527110 top level 5 path @home_thunderbird
ID 307 gen 470827 top level 5 path @tmp
ID 335 gen 526322 top level 264 path @home_rosa/@home_playonlinux
ID 389 gen 506764 top level 5 path @libvirt-images
ID 391 gen 454544 top level 5 path
timeshift-btrfs/snapshots/2017-11-27_05-47-23/@
ID 392 gen 527114 top level 5 path @
ID 393 gen 527111 top level 5 path @home
ID 395 gen 470839 top level 5 path @home_24122017_Thunderbird58
ID 398 gen 470839 top level 5 path @home_thunderbird_22012018backup
ID 401 gen 527111 top level 5 path @home_chromium
ID 405 gen 525214 top level 392 path tmp/@home_08022018_18.04upgrade
ID 406 gen 470839 top level 5 path @_08022018_18.04inProgressUpgrade
ID 407 gen 470839 top level 5 path
@apt-snapshot-release-upgrade-bionic-2018-02-08_15:27:27
ID 408 gen 470839 top level 5 path @home_16022018_gnomeWayland
ID 409 gen 470839 top level 5 path @_16022018_cleanDevPlgs
ID 410 gen 470995 top level 5 path @_24022018_fontsRemove
ID 411 gen 470839 top level 5 path @home_24022018_fontsRemove
ID 412 gen 506764 top level 5 path @libvirt-images_19032018_lxc
ID 413 gen 514532 top level 264 path
@home_rosa/@home_playonlinux_22032018_finereader14
user@pay2:~$ mount | grep btrfs
/dev/sdb4 on / type btrfs
(rw,relatime,compress=lzo,ssd,space_cache,subvolid=392,subvol=/@)
/dev/sdb4 on /home type btrfs
(rw,relatime,compress=lzo,ssd,space_cache,subvolid=393,subvol=/@home)
/dev/sdb4 on /home/user/.config/chromium type btrfs
(rw,relatime,compress=lzo,ssd,space_cache,subvolid=401,subvol=/@home_chromium)
/dev/sdb4 on /home/user/.thunderbird type btrfs
(rw,relatime,compress=lzo,ssd,space_cache,subvolid=277,subvol=/@home_thunderbird)
/dev/sdb4 on /home/user-rosa type btrfs
(rw,relatime,compress=lzo,ssd,space_cache,subvolid=264,subvol=/@home_rosa)
/dev/sdb4 on /home/user/.PlayOnLinux type btrfs
(rw,relatime,compress=lzo,ssd,space_cache,subvolid=335,subvol=/@home_rosa/@home_playonlinux)
/dev/sda1 on /media/3TB_Toshiba_BTRFS/files type btrfs
(rw,relatime,compress=lzo,space_cache,subvolid=321,subvol=/@files)
/dev/sda1 on /media/3TB_Toshiba_BTRFS/Linux-Dumalogiya type btrfs
(rw,relatime,compress=lzo,space_cache,subvolid=506,subvol=/@linux-dumalogiya)
/dev/sda1 on /media/3TB_Toshiba_BTRFS/oblako-backup type btrfs
(rw,relatime,compress=lzo,space_cache,subvolid=258,subvol=/@oblako-backup)
/dev/sda1 on /home/user/Загрузки type btrfs
(rw,relatime,compress=lzo,space_cache,subvolid=300,subvol=/@downloads)
/dev/sda1 on /home/user/.steam type btrfs
(rw,relatime,compress=lzo,space_cache,subvolid=807,subvol=/@steam-mikhailnov)
/dev/sda1 on /var/lib/libvirt type btrfs
(rw,relatime,compress=lzo,space_cache,subvolid=260,subvol=/@libvirt)
------- Comment #24 From 2018-03-30 00:13:56 -------
Это все для полноты понимания картины, в целом расположено в порядке убывания
важности.

$ sudo parted -l
Модель: ATA TOSHIBA HDWD130 (scsi)
Диск /dev/sda: 3001GB
Размер сектора (логич./физич.): 512B/4096B
Таблица разделов: gpt
Флаги диска: 

Номер  Начало  Конец   Размер  Файловая система  Имя  Флаги
 1     1049kB  2784GB  2784GB  btrfs
 3     2784GB  2994GB  210GB   btrfs
 4     2994GB  2994GB  262MB   fat32                  загрузочный, esp
 2     2994GB  3001GB  6816MB  linux-swap(v1)


Модель: ATA KingDian S400 12 (scsi)
Диск /dev/sdb: 120GB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt
Флаги диска: 

Номер  Начало  Конец   Размер  Файловая система  Имя  Флаги
 1     1049kB  99,6MB  98,6MB  fat32                  загрузочный, esp
 4     99,6MB  119GB   119GB   btrfs
 3     119GB   120GB   1030MB  linux-swap(v1)
------- Comment #25 From 2018-03-30 00:17:06 -------
Ладно, не важно. Это всё оффтопик тут.
------- Comment #26 From 2018-03-30 00:36:44 -------
(В ответ на комментарий №19)
> Как я представляю процесс, файла /initramfs.sh не будет до
> загрузки ядра на стадии initrd, даже если в процессе работы системы он был
> положен в /initramfs.sh

Ошибочное представление. Стадия initrd выполняется тогда, когда ядро и
initramfs уже загружены загрузчиком. Задача initrd -- найти и смонтировать
правильный корень, возможно, предварительно подгрузив нужные модули УЖЕ
ЗАГРУЖЕННОГО ядра.

Разве скрипт /initramfs.sh поможет в решении проблемы обновления текущего ядра
вместе с initrd? Видел как отдельные товарищи вкорячивают подобное в
init-bottom из make-initrd-propagator, но ничего хорошего из этой практики не
вынести. Есть лишь один путь в этом направлении без lowmem + перезапуск, IMHO.
------- Comment #27 From 2018-03-30 00:49:08 -------
"Ошибочное представление. Стадия initrd выполняется тогда, когда ядро и
initramfs уже загружены загрузчиком. Задача initrd -- найти и смонтировать
правильный корень, возможно, предварительно подгрузив нужные модули УЖЕ
ЗАГРУЖЕННОГО ядра."
То есть initrd выполняется уже после загрузки ядра с cmdline rootflags=subvol=@
и монтирование, эквивалентного выполнению команды "mount /dev/sdXY -o subvol=@
/" ? Только после этого адрес скрипта будет не /@/initramfs.sh, a /initramfs.sh
.
------- Comment #28 From 2018-03-30 01:11:02 -------
(В ответ на комментарий №13)
> Буквально на днях обсуждал с Глебом. Я думал сделать фичу, что если в корне
> системы появляется исполняемый /initramfs.sh, то initrd перемонтирует корень в
> RW b выполнит этот скрипт вместо init= и после завершения скрипта сделает
> reboot.

Можно не фичу, а маленький патчик init-bottom, но отсутствие lowmem желательно
тоже проверять. По сути, нужен временный [активный] пункт загрузки, может даже
временный grub.cfg без выбора вариантов и пауз, на случай деликатных
обновлений, затрагивающих ядро, initramfs, системные службы. Загрузка в этом
случае обязательно должна выполняться в оперативку, хотя мы никогда старые
ядра, модули и initramfs не удаляем сразу, но без такой проверки это невозможно
сделать вообще.

(В ответ на комментарий №27)
> Только после этого адрес скрипта будет не /@/initramfs.sh, a /initramfs.sh

Вас действительно трудно понять.
Если initrd находит корень, он и скрипт в корне найдёт.
Специального адреса для этого не требуется!
------- Comment #29 From 2018-03-30 01:39:08 -------
Требуется. 
* создайте раздел btrfs /dev/sdXY и точку монтирования /tmp/0
* mount /dev/sdXY /tmp/0
* ls 0 - будет пусто
* btrfs subvol create /tmp/0/@; btrfs subvol create /tmp/0/@home
* ls 0; будет @ @home 
* touch /tmp/0/@/testfile
* umount /tmp/0
* mount /dev/sdXY -o subvol=@ /tmp/0
* ls /tmp/0; будет testfile

Только вместо testfile будут /bin, /lib и остальные папки корня системы вместо
с initramfs.sh
------- Comment #30 From 2018-03-30 01:51:08 -------
(В ответ на комментарий №26)
> Разве скрипт /initramfs.sh поможет в решении проблемы обновления текущего ядра
> вместе с initrd?

А вот на такие вопросы хочется отвечать.

Этот скрипт исключить все пользовательские программы и пользователя самого из
поцесса обновления. Кроме того, это гарантирует перезагрузку системы с
обновлением.

В целом, это мысли не мои. А в нашем startup в rc.sysinit существует целый ряд
таких флагов, которые выполняются в процессе инициализации системы (/fastboot,
/forcefsck, /.autorelabel).

Также если вернуться к обновлениям, то, например, fedora обновляет. На такой
подход есть разные точки зрения.
------- Comment #31 From 2018-03-30 02:25:56 -------
(В ответ на комментарий №29)
> Требуется.

Нет, не требуется.

> Только вместо testfile будут /bin, /lib и остальные папки корня системы вместо
> с initramfs.sh

Ну и что? Есть же /initramfs.sh в корне?

> * btrfs subvol create /tmp/0/@

А теперь хорошенько подумайте зачем вы только что это сделали в Альт-Линуксе! И
какая документация перед вами открыта!? ;-) Ubiquity здесь нет и про его
привычки здесь мало кто знает. С удивлением для себя узнал, что он это делает.

> * touch /tmp/0/@/testfile

Всё куда проще. Смонтировали subvolume, сделали touch, назначили этот subvolume
корнем, если уж хотите жить в убунте^W^W по феншую^W^W иметь корень в отдельном
subvolume с таким экзотическим именем:

btrfs subvolume set-default 333 /tmp/0/@

А вообще, Михаил, отрадно что Вы занимаетесь масштабными внедрениями, тянетесь
к знаниям, но продолжение темы правильной работы с btrfs здесь неуместно.
------- Comment #32 From 2018-03-30 02:39:10 -------
(В ответ на комментарий №30)
> Этот скрипт призван исключить все пользовательские программы и
> пользователя самого из поцесса обновления.

Да я в целом за, просто и сам делал/напрывался на всякие грабли, видел, как
другие тужатся, в том числе, переделывая наш initrd. Практика есть плохая и
хорошая. Если уж идти по такому пути, надо понимать, зачем мы это делаем.
Например, этот скрипт может много чего с собой тащить. Может и весь диск
переразметить / отформатировать. Но всего это не сделаешь, если ядро, initrd и
сам этот скрипт не будут лежать в оперативке в не привязанном к корневому
разделу и даже всему диску состоянии.

> Кроме того, это гарантирует перезагрузку системы с обновлением.

echo u > /proc/sysrq-trigger
sleep 2
echo b > /proc/sysrq-trigger

в конце этого скрипта гарантирует на любых системах, ага! :)
------- Comment #33 From 2018-03-30 02:43:05 -------
Тогда давайте сделаем отдельный баг или для обсуждения этой темы.
---------

> Ну и что? Есть же /initramfs.sh в корне?
На этапе работы initrd в корне есть только @, а внутри директории @ есть
initramfs.sh, если я правильно понимаю работу initrd и загрузку системы.
Соответственно, в корне initramfs.sh нет на эатпе загрузки системы в initrd.

> А теперь хорошенько подумайте зачем вы только что это сделали в Альт-Линуксе! И какая документация перед вами открыта!? ;-) Ubiquity здесь нет и про его
привычки здесь мало кто знает. С удивлением для себя узнал, что он это делает.

И что? Эта стандартная функция BTRFS (и Grub тоже), какая разница Альт это или
не Альт? btrfs-progs, coreutils и ядро одинаковые.

> Всё куда проще. Смонтировали subvolume, сделали touch, назначили этот subvolume
корнем, если уж хотите жить в убунте^W^W по феншую^W^W иметь корень в отдельном
subvolume с таким экзотическим именем:
> btrfs subvolume set-default 333 /tmp/0/@
Это _иная_ схема снапшотирования, она мне менее удобная, чем описанная выше,
почему — расписать можно, но не в этом баге. Нет, не проще и не логичнее. Под
нее постепенно пишу скрипт https://github.com/mikhailnov/dumasnap для
автоматизации снапшотирования, пока что умеет только создавать снапшоты.

И вообще, если такая установка и работа системы возможны, то значит возможны и
никакие извороты не должны ее ломать или отваливаться на ней.

Обсуждать нужно не нужность, краосту и популярность такой схемы разбивки
системы на подтома, а ее совместимость с  предложенным решением /initramfs.sh.
("Я думал сделать фичу, что если в корне
системы появляется исполняемый /initramfs.sh, то initrd перемонтирует корень в
RW b выполнит этот скрипт вместо init= и после завершения скрипта сделает
reboot.")
------- Comment #34 From 2018-03-30 08:54:08 -------
на btrfs мир не заканчивается. есть ещё другие файловые системы, из которых
кто-то поддерживает снэпшоты, а кто-то нет.
------- Comment #35 From 2018-03-30 09:00:02 -------
И ещё - я с удивлением узнал что на альте кто-то использует btrfs в production. 
Не будет ли вам так сложно описать несколько ваших сценариев его использования
- можно по почте или на www.altlinux.org. Мы по ним добавим тесты в нашу
систему тестирования и вероятность взрыва при обновлении у вас станет меньше.
А то я так смело перекладываю btrfs из Sisyphus в p8, делая минимальные
тесты...