Bug 32476

Summary: вернуть возможность запуска livecd без rw slice на флэшке
Product: Sisyphus Reporter: Michael Shigorin <mike>
Component: make-initrd-propagatorAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, boyarsh, ildar, sem, zerg
Version: unstableKeywords: regression
Hardware: all   
OS: Linux   
URL: http://git.altlinux.org/gears/m/make-initrd-propagator.git?p=make-initrd-propagator.git;a=commit;h=eb592241a93852d2658bcf58c98e35c2cdc8744a
Bug Depends on: 28289    
Bug Blocks:    

Description Michael Shigorin 2016-09-06 16:07:35 MSK
Пользователи уже не впервые жалуются на низкую скорость работы LiveCD с флэшки -- похоже, на недорогих флэшках, сильно тормозящих на запись, режим live_rw по умолчанию попросту не годится (а сейчас де-факто так и есть, поскольку вследствие моего слишком сильного исправления bug 28289 для тех же стартеркитов пункты загрузки "LiveCD" и "LiveCD с поддержкой сеансов" практически одинаковы).

Предложение: учеть сказанное в коммите eb592241a93852d2658bcf58c98e35c2cdc8744a и выровнять условия *монтирования* rw-раздела с условиями его создания, либо хотя бы сделать монтирование условным по "live_rw" в командной строке ядра.
Comment 1 Michael Shigorin 2016-09-06 21:31:17 MSK
Изменил поведение make-initrd-propagator в 0.30: без live_rw в параметрах
не монтирует и уже существующий rw slice.

На UEFI думаю сделать умолчанием всё-таки вариант "live_rw без lowmem", т.е. грузить squashfs в RAM для чтения, а писать на флэшку (если это флэшка).
Резон -- машины с UEFI, как правило, имеют от 2 Гб памяти и флэшки с ними
применяются обычно тоже не самые древние/медленные (хотя...).

Сейчас это выглядит так:

-       if get_cmdline automatic label || get_cmdline live_rw; then
-               create_disk_slice
+       if [ -d /sys/firmware/efi ] || get_cmdline automatic label; then
+               get_cmdline live_rw && create_disk_slice
        fi

См. тж.:
https://bugzilla.altlinux.org/show_bug.cgi?id=28289#c14
https://bugzilla.altlinux.org/show_bug.cgi?id=28289#c32
https://bugzilla.altlinux.org/show_bug.cgi?id=28289#c34

PS: ещё может иметь смысл сделать проверку на разумный объём места: напоролся на ситуацию, когда образ впритирку влез на четырёхгиговую флэшку, /.rw получился размером мегабайт двести и без дополнительных действий даже apt-get update было не выполнить.
Comment 2 Repository Robot 2016-09-06 21:41:45 MSK
make-initrd-propagator-0.30-alt1 -> sisyphus:

* Tue Sep 06 2016 Michael Shigorin <mike@altlinux> 0.30-alt1
- only mount rw slice when live_rw is specified explicitly
  due to severe I/O penalty coming with it (closes: #32476)
- slightly better package description
Comment 3 Michael Shigorin 2016-10-20 18:46:52 MSK
(В ответ на комментарий №2)
> - only mount rw slice when live_rw is specified explicitly
>   due to severe I/O penalty coming with it (closes: #32476)
Это неправда, т.к. условие get_cmdline live_rw накладывалось только на вызов create_disk_slice(), но не на объемлющий его вызов disk_slice().

Обсудили с george@, он подсказал мнемонику для refind -- "RO" показывать как CD (что сейчас и делается), live_rw -- как флэшку.  Это потребуется реализовать в том куске mkimage, который давно надо бы оттуда вынести в профили, и в refind (для начала починив сборку, это обновление efi toolchain со всеми вытекающими).

Пока думаю выровнять условия _создания_ и _монтирования_ disk slice,
перенеся дополнительное условие из "внутри disk_slice()" в место вызова этой функции (при этом остаётся возможность монтирования раздела с меткой "alt-live-storage" с локального диска или другой флэшки, чем пользовался ildar@):

 disk_slice(){
        local dev=/dev/disk/by-label/alt-live-storage
        case "$(get_cmdline -p automatic method)" in
        disk|cdrom)
                if [ -d /sys/firmware/efi ] || get_cmdline automatic label; then
-                       get_cmdline live_rw && create_disk_slice
+                       create_disk_slice
                fi
                ;;
        esac
[...]
     if equal_cmdline live stagename || equal_cmdline rescue stagename; then
-           disk_slice
+           get_cmdline live_rw && disk_slice
     fi
Comment 4 Repository Robot 2016-10-24 22:34:59 MSK
make-initrd-propagator-0.31-alt1 -> sisyphus:

* Mon Oct 17 2016 Michael Shigorin <mike@altlinux> 0.31-alt1
- improve RW slice operation (closes: #32476, #32562):
  only create/use it when there's enough space (1Gb or more), and
  it's been either
  + explicitly asked for (BIOS mode), or
  + fast enough (UEFI mode; otherwise the filesystem
    will be marked "alt-slow-storage")
- add mkfs/mount options for faster operation
- extend debug support