Summary: | Восстановить функциональность live flash | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Anton V. Boyarshinov <boyarsh> | ||||
Component: | make-initrd-propagator | Assignee: | Michael Shigorin <mike> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | blocker | ||||||
Priority: | P3 | CC: | aen, boyarsh, evg, george, mike, rider, rom_as, zerg | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
URL: | http://mjg59.dreamwidth.org/4957.html | ||||||
Bug Depends on: | |||||||
Bug Blocks: | 27685, 32476 | ||||||
Attachments: |
|
Description
Anton V. Boyarshinov
2012-12-28 10:17:50 MSK
IMHO копать стоит в сторону parted; думаю попробовать. normal->critical Критически важно для бета-версий. Возможно, зависит от bug #27954. Эксперименты пока опять застряли на том, что получающаяся на флэшке при вкатывании туда исошки таблица разделов (что MBR, что GPT) имеет довольно посредственное отношение к действительности, поскольку задача перед isohybrid/xorriso -isohybrid-* стоит "показать фирмвари что-нибудь загрузочное и обеспечить ядру возможность смонтировать squashfs из ISO9660". Предлагаю для начала вернуть на i586, где заведомо MBR. Этого оказалось недостаточно, т.к. /image монтируется с /dev/sdX (не раздела). С другой стороны, таблица разделов кривая (например, с раздела размером "~100M" монтировался гигабайтный squashfs). Собрал xorriso-1.2.6, где в ChangeLog упоминались схожие проблемы; смотрю. (In reply to comment #5) > /image монтируется с /dev/sdX Надо доработать propagator с automatic=method:cdrom, чтобы научился в случае наличия sdX1 смотреть сперва на него. (В ответ на комментарий №6) > (In reply to comment #5) > > /image монтируется с /dev/sdX > Надо доработать propagator с automatic=method:cdrom, чтобы научился в случае > наличия sdX1 смотреть сперва на него. надо. доработайте, пожалуйста. Created attachment 5772 [details]
cdrom.c: probe sdX1 before sdX if that's sdX not srY
led@ доработал.
...но чуточку переоптимизировал в последний момент, пришлось загрубить: - size_t l = strlen(strcpy(device_fullname + 5, dev_name)); + strcpy(device_fullname + 5, dev_name); + size_t l = strlen(device_fullname); иначе проверялись имена устройств вроде "/de1". (В ответ на комментарий №9) > ...но чуточку переоптимизировал в последний момент, пришлось загрубить: > > - size_t l = strlen(strcpy(device_fullname + 5, dev_name)); > + strcpy(device_fullname + 5, dev_name); > + size_t l = strlen(device_fullname); > > иначе проверялись имена устройств вроде "/de1". Виноват, ступил: в голове ещё оставался старый вариант со strcat(device_fullname, dev_name), а в коде уже был новый вариант с strlen(strcpy(device_fullname + 5, dev_name) Не, параллелить кодирование на два разных полушария мозга нужно осторожно - возможны рэйсы:) Хотелось бы ещё узнать, зачем делается проверка automatic:label -- оставил её для случая метода disk, а добавленная в 0.17 обработка метода cdrom туда не смотрит. GPT потребует отдельной возни -- текущие сизифные parted и gdisk конфузятся при виде isohybrid-ной таблицы разделов, первый из которых начинается с нулевого сектора, и отказываются с ней работать. http://www.syslinux.org/archives/2010-March/014116.html make-initrd-propagator-0.17-alt1 -> sisyphus: * Sat Mar 16 2013 Michael Shigorin <mike@altlinux> 0.17-alt1 - accept cdrom for rw disk_slice on isohybrid media (closes: #28289) * Thu Feb 21 2013 Michael Shigorin <mike@altlinux> 0.16-alt1 - reenable rw slice if it's not GPT (thus MBR) - fixed annoying /etc/mtab related message Для архива: - см. тж. bug #21345 -- хорошо бы вспомнить, что было не так; - http://www.altlinux.org/make-initrd-propagator; - в 0.18 делаю для disk/cdrom реакцию при условии наличия в параметрах ядра ключевого слова "live_rw" (подсмотрено в m-p-d в р-не gf1bb7ce), т.к. по умолчанию при первой загрузке получаются немаленькие тормоза вследствие усиленного I/O по флэшке с приличной долей записи; - создаю ext4 без журнала и монтирую с опциями[1] вместо ext3 с дефолтом (при этом загрузка всего вдвое медленней, чем без rw slice); см. тж. bug #28713. Также хотелось бы уточнить критерии _создания_ и _подключения_ rw slice с флэшки -- ныне _создаётся_ при наличии "automatic:label=..." либо "live_rw" в параметрах загрузки ядра, а _подключается_ при наличии ФС с меткой alt-live-storage; возможно, подключение должно происходить при тех же условиях, что и создание. Ну и надо учесть случай использования с NFS, который пока проверять не умею. [1] noatime,nodiratime,commit=30,min_batch_time=100000, barrier=0,data=writeback,delalloc Не работает на последнем RC2 Simply i586. во первых после записи через dd образа на flash fdisk выдаёт предупреждение что на ней есть GPT, хотя реально нет (corrupted GPT). во вторых, даже после создания раздела вручную он не монтируется как оверлей. Всё это воспроизводится на свежайшей бете Simply: # cat /etc/altlinux-release Simply Linux 7.0.0 (Dory) # uname -a Linux localhost.localdomain 3.8.13.3-std-def-alt1.M70P.1 #1 SMP Fri Jun 21 06:25:57 UTC 2013 i686 GNU/Linux # fdisk -l /dev/sdb WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/sdb: 7747 MB, 7747397632 bytes, 15131636 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x7768d6c1 Device Boot Start End Blocks Id System /dev/sdb1 * 64 1669119 834528 17 Hidden HPFS/NTFS /dev/sdb2 1669120 15131635 6731258 83 Linux # mount|grep /.rw none on /.rw type tmpfs (rw,relatime,mode=755) # blkid /dev/sda1: UUID="b6862c3b-9363-4194-a895-113a75d2abfd" TYPE="swap" /dev/sda2: UUID="65f8594e-84c0-47c7-8aeb-f5c7378bd31e" SEC_TYPE="ext2" TYPE="ext3" /dev/sdb1: UUID="2013-06-25-17-45-21-00" LABEL="Simply Linux 7.0.0 (Dory)" TYPE="iso9660" /dev/sdb2: LABEL="alt-live-storage" UUID="132aacf3-ae53-49b0-b649-48256ca9a3d4" TYPE="ext4" /dev/loop0: TYPE="squashfs" /dev/zram0: UUID="ff750c86-81c6-459b-afec-72a10b34dd9b" TYPE="swap" (В ответ на комментарий №15) > Не работает на последнем RC2 Simply i586. > во первых после записи через dd образа на flash fdisk выдаёт предупреждение что > на ней есть GPT, хотя реально нет (corrupted GPT). > > во вторых, даже после создания раздела вручную он не монтируется как оверлей. > > Всё это воспроизводится на свежайшей бете Simply: showstopper. Будем разбираться. (В ответ на комментарий №15) > Не работает на последнем RC2 Simply i586. > во первых после записи через dd образа на flash fdisk выдаёт предупреждение что > на ней есть GPT, хотя реально нет (corrupted GPT). Странно, у меня это не наблюдается и раздел создаётся и форматирвется. > во вторых, даже после создания раздела вручную он не монтируется как оверлей. Не хватает модуля ext4 в initrd, сейчас исправлю. Пересобрал образ, добавив ext4, сработало сразу без какого-либо шаманства с ручным созданием раздела.. (В ответ на комментарий №18) > Пересобрал образ, добавив ext4, сработало сразу без какого-либо шаманства с > ручным созданием раздела.. (В ответ на комментарий №19) > (В ответ на комментарий №18) > > Пересобрал образ, добавив ext4, сработало сразу без какого-либо шаманства с > > ручным созданием раздела.. 2boyarsh@, sem@ Прошу создать и выложить новые образы i586. live_rw не пришлось добавлять параметр ? Посмотри код - там странности с GPT. Надо чинить - условие "fdisk -l|grep GPT" срабатывает, если на устройстве был когда-то GPT, а потом про него забыли и вкатили через dd образ. Новый образ выложишь ? Может быть стоит сразу поправить и остальные замечания по поводу live_flash ? думаю, что с GPT воспроизведётся, если на USB flash >8Gb через gdisk создать GPT таблицу с разделами, а потом залить на него live для Simply. (В ответ на комментарий №22) > думаю, что с GPT воспроизведётся, если на USB flash >8Gb через gdisk создать > GPT таблицу с разделами, а потом залить на него live для Simply. Возможно. После релиза посмотрим. Вообще, мне кажется, что GPT на флэшке -- ситуация нечастая. (В ответ на комментарий №23) > (В ответ на комментарий №22) > > думаю, что с GPT воспроизведётся, если на USB flash >8Gb через gdisk создать > > GPT таблицу с разделами, а потом залить на него live для Simply. > > Возможно. После релиза посмотрим. Вообще, мне кажется, что GPT на флэшке -- > ситуация нечастая. Да. Но отразить ее в Release Notes стоит. Сэкономим время на ответы "нечастых" пользователей, по крайней мере будет куда дать ссылку. По поводу "нечастая" я не был бы так уверен. Ещё раз: дело в том, что на Flash реально нет GPT. Её затёрли с помощью dd, и то, что находит fdisk - это не GPT, а его "ошлёпки". Предлагаю просто убрать в коде проверку на GPT - врятли будет ситуация, когда после dd if=siply.iso of=/dev/sda на /dev/sda будет реальный GPT. на вчерашнем simply опять вылезло. думаю, что на этот раз всё-таки виновато это сообщение: # fdisk -l /dev/sdb WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/sdb: 7747 MB, 7747397632 bytes 64 heads, 32 sectors/track, 7388 cylinders, total 15131636 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x7d1192ca Device Boot Start End Blocks Id System /dev/sdb1 * 64 1669119 834528 17 Hidden HPFS/NTFS Надо игнорировать такое - gpt после записи Simply на /dev/sdb уже нет. # gdisk /dev/sdb GPT fdisk (gdisk) version 0.7.0 Caution: invalid main GPT header, but valid backup; regenerating main header from backup! Caution! After loading partitions, the CRC doesn't check out! Warning! One or more CRCs don't match. You should repair the disk! Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: damaged Found valid MBR and corrupt GPT. Which do you want to use? (Using the GPT MAY permit recovery of GPT data.) 1 - MBR 2 - GPT 3 - Create blank GPT (В ответ на комментарий №25)
> Предлагаю просто убрать в коде проверку на GPT - врятли будет ситуация, когда
> после dd if=siply.iso of=/dev/sda на /dev/sda будет реальный GPT.
Если это будет simply x86_64, то именно gpt там и будет.
GPT будет в гибридном ISO ? Тогда получается что на x86_64 у нас не работает live_rw ? (В ответ на комментарий №29) > GPT будет в гибридном ISO ? > > Тогда получается что на x86_64 у нас не работает live_rw ? Да, не работает и это документировано. Задача модификации дважды гибридного образа CD+MBR+GPT пока не решена. *** Bug 29706 has been marked as a duplicate of this bug. *** (В ответ на комментарий №14) > Для архива: И ещё: командную строку ядра модифицирует gfxboot, если есть. Например, в kdesktop-7.0.0 содержится: append initrd=alt0/full.cz live lowmem fastboot splash stagename=live quiet=1 showopts При загрузке получаем: initrd=alt0/full.cz live lowmem fastboot splash stagename=live quiet=1 vga=normal lang=ru_RU automatic=method:disk,label:ALT* А ещё в mkimage-profiles почти год как содержится 32live_rw.cfg, указывающий automatic=method:cdrom вместо automatic=method:disk,label:ALT* live_rw. Плюс аналогично и в mkimage::tools/mki-copy-efiboot. При BIOS получается выкрутиться нормально, а вот при UEFI-загрузке из-за того, что образ El Torito одновременно подсовывается и как FAT-раздел -- elilo.conf используется один и тот же. Пока в раздумьях, вообще это бы в refind разделять -- там есть информация о том, что за устройство. На x86_64/BIOS трудами boyarsh@ работает (если не ошибаюсь, с 0.23-alt1 -- вошло в 7.0.3). На UEFI это отдельная фича и пока похоже, что делать её стоит в refind. Отправил FR. Возможно, с нас патч. На самом деле доработка propagator коммитами 4d66f07, 13019ba оказалась немножко переоптимизированной и содержала off-by-5, в итоге обнаруженный ldv@: http://git.altlinux.org/gears/p/propagator.git?p=propagator.git;a=commitdiff;h=c011d5e337f98f64d0aed824af9c12189ab48eaf 2 zerg: можно выкинуть из design-bootloader-source тот жуткий хак с превращением "automatic=method:cdrom" в "automatic=method:disk,label:ALT*", вообще говоря. Должно быть исправлено в propagator-20150306-alt1. Кстати, текущий fdisk научился и GPT... |