История эта началась с рутинного действия. По моей просьбе пользователь Windows 7
загрузил на свой компьютер большие файлы (у меня не было стабильного интернета). Большие файлы представляли собой «нарезку» образов под лимиты ФС FAT32
. Человек скопировал файлы на мою флешку.
Поскольку я знаю, как обычные люди пользуются флешками на компьютерах с «виндой», то флешку ждала fsck
. Первые строки вывода команды вроде бы подтверждали мои ожидания…
There are differences between boot sector and its backup.
fsck
слегка призадумалась и после некоторой паузы выдала (подобных строк было много; для иллюстрации я оставил одну строчку)
[manjaro manjaro]# fsck /dev/sdb1
fsck from util-linux 2.37.4
fsck.fat 4.2 (2021-01-31)
...
/path/file.img
File size is 4294963200 bytes, cluster chain length is 0 bytes.
Truncating file to 0 bytes.
...
Такого я ещё не видел.
Первая мысль: флешку выдернули не просто без выполнения команды «Извлечь», но даже дописать файлы на флешку не дали. Я соглашаюсь с предложенным fsck
лечением. Получаю в итоге файлы нулевой длины.
Дальше я напрашиваюсь в гости к моему добровольному помощнику – файлы-то мне забрать необходимо. Выполняю весь процесс самостоятельно: копирую файлы, делаю hash файлов, безопасно извлекаю флешку.
Подключаю флешку к своему ноутбуку. Для fsck
ничего не изменилось
...
/path/file.img
File size is 4294963200 bytes, cluster chain length is 0 bytes.
Truncating file to 0 bytes.
...
В этот раз я от «лечения» флешки отказываюсь. Монтирую флешку в ro
. Файлы читаются полностью. Хеш «оригиналов» совпадает с хешами файлов на флешке.
Где баг?
FAT32
fsck
- ?
Gonzo вот так выглядит моё «очевидное-невероятное» :)
Сперва я думал создать вопрос в General.
После того как я убедился в целостности файлов эта история больше, чем на Talks «не тянет».
Итог: «баг» ожидаемо оказался в fsck.fat
. Спасибо i-rinat: «пришёл и расставил все точки, где надо» :). В AUR
есть пакет с фиксом.