Мне нужно перемонтировать /
только для чтения с C, работающим в Linux. Пока что я придумал следующий код:
mount("/dev/sda1", "/", "ext4", MS_REMOUNT | MS_RDONLY, NULL);
Но мне было интересно, есть ли способ сделать это без указания исходного устройства (/ dev / sda1) или типа файловой системы (ext4), например, команды mount -o remount,ro /
. Можно ли просто заменить эти разделы системного вызова на NULL
?
strace mount -o remount,ro /
в тестовой системе и посмотрите, как она вызываетmount
. Это может быть определение устройства и типа файловой системы из информации statvfs (), копание в / proc и т. Д. - person zwol   schedule 25.08.2018mount -o remount,ro /
ищет информацию о файловой системе, например, упомянутую @AndrewHenle. - person Billy   schedule 25.08.2018