Какие важные файлы могут отсутствовать, которые необходимы для загрузки, но ранее к ним не обращались?
Я думаю, что речь идет не о "никогда ранее не доступном", а о том, что "их новое время доступа не может быть сохранено", потому что в целом некоторые этапы процесса загрузки читают файловую систему (ы) только для чтения.
Дело не в том, что что-то обходит функцию atime
специально. Время доступа, которое не обновляется, является лишь побочным эффектом предварительного монтирования только для чтения (чтобы сохранить новое время, вам нужно записать его, верно?). Я ожидаю, что это особенно относится к initrd
и vmlinuz
в /boot
, но корневая файловая система изначально также монтируется только для чтения:
Таким образом, ядро инициализирует устройства, монтирует корневую файловую систему, указанную загрузчиком как доступную только для чтения, и запускает Init (/sbin/init
) ...
(источник)
Тогда все, что действует как Init (это systemd
в Ubuntu), в какой-то момент перемонтирует файловую систему как чтение-запись. Для systemd
:
systemd-remount-fs.service
- это служба ранней загрузки, которая применяет параметры монтирования, перечисленные в fstab(5)
к корневой файловой системе [...]
Поэтому, когда я читаю это ваше заявление: "При ранней загрузке не отображается черный экран", я предполагаю, что вы удалили некоторые файлы, к которым нужно обращаться только на этих ранних этапах загрузки только для чтения, когда atime не может быть обновлено ,
Еще один подводный камень (который, в конце концов, не имеет отношения к вашему делу, но это полезно знать):
От man 8 mount
[выделение мое]:
atime
Не используйте функцию noatime
, поэтому время доступа к inode определяется настройками ядра по умолчанию. См. Также описания параметров монтирования relatime
и strictatime
.
relatime
Обновить время доступа к индоду относительно времени изменения или изменения. Время доступа обновляется только в том случае, если предыдущее время доступа было раньше, чем текущее время изменения или изменения. (Аналогично noatime
, но он не нарушает mutt
или другие приложения, которым необходимо знать, был ли файл прочитан с момента его последнего изменения.)
Начиная с Linux 2.6.30, ядро по умолчанию соответствует поведению, обеспечиваемому этой опцией (если не указано noatime
), и опция strictatime
требуется для получения традиционной семантики. Кроме того, начиная с Linux 2.6.30, время последнего доступа к файлу всегда обновляется, если ему более 1 дня.
Это условие "1 день" вместе с ОС, "установленной несколько дней назад", и с удалением файлов, "к которым не обращались в последние дни", - думаю, все это делает relatime
умолчанию несоответствующим вашей проблеме Тем не менее, вы, возможно, подумали, что atime
достаточно, чтобы время доступа обновлялось каждый раз; поэтому я подумал, что было бы хорошо объяснить это.