Попробуйте это ...
find /tree -depth -type d -inum 2 -print | xargs umount
Извините, я не могу это проверить ... но теория такова, что корень каждой файловой системы будет иметь номер индекса 2 (по крайней мере, для ext [2-4] и большинства других unix-подобных файловых систем ... чтобы подтвердить это для /
, запустите ls -ldi /
- номером inode будет номер в левом столбце).
Я нашел исходники инструментов initramfs -Ubuntu . Здесь хорошо видно, что сначала печатается сообщение Begin: "Mounting root file system"
, а в mount_root
функция fsck
запускается до фактического монтажа. Я опустил некоторый код, не относящийся к -, просто чтобы указать порядок. (Если вы просмотрите связанные источники, вы также найдете другие обнаруженные скрипты на снимке экрана ).
/init
строка 256
log_begin_msg "Mounting root file system"
# Always load local and nfs (since these might be needed for /etc or
# /usr, irrespective of the boot script used to mount the rootfs).
. /scripts/local
. /scripts/nfs
. /scripts/${BOOT}
parse_numeric ${ROOT}
maybe_break mountroot
mount_top
mount_premount
mountroot
log_end_msg
/scripts/local
@строка 244
mountroot()
{
local_mount_root
}
/scripts/local
@строка 131
local_mount_root()
{
# Some code ommited
# FIXME This has no error checking
[ -n "${FSTYPE}" ] && modprobe ${FSTYPE}
checkfs ${ROOT} root "${FSTYPE}"
# FIXME This has no error checking
# Mount root
mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
mountroot_status="$?"
if [ "$LOOP" ]; then
if [ "$mountroot_status" != 0 ]; then
if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then
panic "<Error message ommited>"
fi
fi
mkdir -p /host
mount -o move ${rootmnt} /host
# Some code ommitted
}
Два варианта:
fsck
. Systemd — это реализация init на монетном дворе, и поскольку вы уже проверили, существует ли она там, этот вариант не применяется. /sbin/fsck.ext4
запускается в «пространстве раннего пользователя» , настроенном с помощью initramfs . Что, скорее всего, имеет место в вашей системе. Даже если вы заметили, что /sbin/fsck.ext4
запускался до systemd
, я хочу немного уточнить. Systemd вполне способна запускать fsck
саму себя на смонтированной файловой системе -только для чтения. См. документацию systemd -fsck@.service . Скорее всего, эта служба не включена по умолчанию в Mint, так как она будет избыточной с ранним пользовательским пространством .
Я не знаю, какая реализация initramfs mint работает, но я буду использоватьdracut
в качестве примера. (используется в Debian, openSuse и др. )В документации по подготовке к монтированию указано следующее:
When the root file system finally becomes visible:
- Any maintenance tasks which cannot run on a mounted root file system are done.
- The root file system is mounted read-only.
- Any processes which must continue running (such as the rd.splash screen helper and its command FIFO) are hoisted into the newly-mounted root file system.
И задачи обслуживания включают fsck
. Дополнительные доказательства,есть возможность в вырезать параметры командной строки отключитьfsck
:
rd.skipfsck
skip fsck for rootfs and /usr. If you’re mounting /usr read-only and the init system performs fsck before remount, you might want to use this option to avoid duplication
Динамический (основанный на udev )и гибкий initramfs можно реализовать с помощью инфраструктуры systemd . Dracut является такой реализацией, и, вероятно, есть дистрибутивы, которые хотят написать свою собственную.
Другим вариантом может быть скрипт на основе initramfs . В таком случае busybox ash
используется как оболочка для сценариев и, возможно, даже заменяет udev
на mdev
, а может быть, просто полностью статичен. Я обнаружил , что некоторые люди перебрасывались в оболочку busybox
из-за какой-то ошибки fsck int mint, так что эта реализация может быть применима к mint.
Если вы действительно хотите знать наверняка, попробуйте распаковать файл initramfs в /boot
и посмотреть, что там. Также возможно увидеть его смонтированным под /initramfs
.
systemd-fsck@.service and systemd-fsck-root.service are services responsible for file system checks. They are instantiated for each device that is configured for file system checking. systemd-fsck-root.service is responsible for file system checks on the root file system, but only if the root filesystem was not checked in the initramfs. systemd-fsck@.service is used for all other file systems and for the root file system in the initramfs.
https://www.freedesktop.org/software/systemd/man/systemd-fsck@.service.html
Похоже, вам это тоже может быть интересно:
https://www.freedesktop.org/software/systemd/man/bootup.html