Skip to content

Latest commit

 

History

History
57 lines (42 loc) · 4.08 KB

README.ru.md

File metadata and controls

57 lines (42 loc) · 4.08 KB

English, Русский

Ещё один клон make_ext4fs и его друзей, ответвление от репозитория superr/make_ext4fs.

Причина создания клона в том, что я наткнулся на серьёзную ошибку в make_ext4fs, а в процессе правки появилось желание чуть подправить здесь и там. Утилита мне нужна для проекта Android firmware construction kit project.

Также мне понадобилась одинаково работающая программа под линукс и виндоус. Для этого мейкфайлы были изменены для поддержки (кросс-)компиляции под MinGW.

В make_ext4fs были внесены следующие изменения:

  • Если в fs_config вместо uid, gid, mode указано -1, берётся значение атрибута по умолчанию (mode берётся из файловой системы, uid и gid по умолчанию равны нулю).

  • Если файл отсутствует в fs_config, выдаётся предупреждение вместо ошибки, и для uid, gid и mode берутся значения по умолчанию. (такое же поведение, как без ключа -C).

  • Версия для Windows/MinGW теперь умеет сканировать каталоги, аналогично тому, как это работает в Linux (зачем-то Google это отключили). В MinGW на файлах режим доступа равен 0666 (или 0444 для ReadOnly), а на каталогах 0777. Не то, чтобы это было очень полезно, просто имейте это в виду.

  • Если во время копирования файлов в образ программа обнаруживает, что не может открыть файл, происходит следующее:

    • В Linux сначала делается попытка временно сменить режим доступа на 0444, затем открыть файл, затем восстановить исходный режим доступа.

    • Если открыть файл всё равно не удаётся, на экран выводится сообщение об ошибке с указанием файла, который не мог быть прочитан. Также выставляется глобальный флаг ошибки, что в итоге приводит к удалению формируемого образа и выводу сообщения о том, что он был удалён.

  • Версия для MinGW имеет ограниченную поддержку символьных ссылок Cygwin. Пример шестнадцатиричного дампа файла ссылки, скажем, /bin/ls:

    00000000 21 3C 73 79  6D 6C 69 6E  6B 3E FF FE  74 00 6F 00  79 00 62 00  !<symlink>..t.o.y.b.
    00000014 6F 00 78 00  5F 00 76 00  65 00 6E 00  64 00 6F 00  72 00 00 00  o.x._.v.e.n.d.o.r...

    В созданном образе будет содержаться символьная ссылка /bin/ls, указывающая на "toybox_vendor".

  • Сборка для MinGW теперь имеет поддержку контекстов SELinux. Метки SELinux берутся только из файла "file_contexts", который указывается в опции -S. В именах файлах можно использовать регулярные выражения.

  • Исправлено падение программы когда размера образа недостаточно даже для метаданных.