Я использую встроенный Linux (построен с использованием LTIB).

Я не могу внести изменения в каталог /etc В основном я хочу добавить скрипт запуска в /etc/rc.d/init.d

/etc/ кажется смонтированным как rwfs

вывод df -h:

Filesystem                Size      Used Available Use% Mounted on
/dev/root                 3.0G    376.9M      2.4G  13% /
tmpfs                   424.2M     36.0K    424.1M   0% /dev
shm                     424.2M         0    424.2M   0% /dev/shm
rwfs                    376.0M      5.1M    370.9M   1% /mnt/rwfs
rwfs                    376.0M      5.1M    370.9M   1% /tmp
rwfs                    376.0M      5.1M    370.9M   1% /var
rwfs                    376.0M      5.1M    370.9M   1% /etc

Я пытался :

umount /etc/ 
touch /etc/dummy  --> just for the sake of checking
reboot
(after boot-up)
ls -lth /etc/dummy ---> file is missing

Это образ, который я загружаю с SD-карты. На одной из SD-карт после того, как я выполнил вышеупомянутый umount /etc и затем поместил фиктивный файл, как упомянуто выше, при следующей загрузке, как и ожидалось, /etc возвращается для монтирования как tmpfs но фиктивный файл был доступен. Но на другой SD-карте, когда я пытаюсь сделать то же самое, фиктивный файл недоступен.

Какие-либо предложения?

Вывод mount (перед использованием umount /etc/):

root@freescale /etc$ mount
rootfs on / type rootfs (rw)
/dev/root on / type ext2 (rw,relatime,errors=continue)
proc on /proc type proc (rw,relatime)
sys on /sys type sysfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
shm on /dev/shm type tmpfs (rw,relatime)
rwfs on /mnt/rwfs type tmpfs (rw,relatime,size=385024k)
rwfs on /tmp type tmpfs (rw,relatime,size=385024k)
rwfs on /var type tmpfs (rw,relatime,size=385024k)
rwfs on /etc type tmpfs (rw,relatime,size=385024k)

Вывод mount (после umount /etc):

rootfs on / type rootfs (rw)
/dev/root on / type ext2 (rw,relatime,errors=continue)
proc on /proc type proc (rw,relatime)
sys on /sys type sysfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
shm on /dev/shm type tmpfs (rw,relatime)
rwfs on /mnt/rwfs type tmpfs (rw,relatime,size=385024k)
rwfs on /tmp type tmpfs (rw,relatime,size=385024k)
rwfs on /var type tmpfs (rw,relatime,size=385024k)

1 ответ1

2

Эта строка с выхода mount

rwfs on /etc type tmpfs (rw,relatime,size=385024k)

говорит /etc на самом деле tmpfs . Теперь из Википедии:

tmpfs - это общее имя для временного хранилища файлов во многих Unix-подобных операционных системах. Он предназначен для отображения в виде смонтированной файловой системы, но хранится в энергозависимой памяти вместо постоянного запоминающего устройства.

А также

Все, что хранится в tmpfs является временным в том смысле, что на жестком диске не будет создано никаких файлов; однако пространство подкачки используется в качестве резервного хранилища в случае нехватки памяти. При перезагрузке все в tmpfs будет потеряно.

Это именно то, что происходит в вашем случае.

Встроенные системы используют tmpfs для /etc и несколько других каталогов, чтобы сделать их доступными для записи для любой программы, которая в этом нуждается, но в то же время

  • чтобы избежать повреждения файловой системы, когда идет какая-либо запись, и устройство отключается от сети, потянув за вилку;
  • чтобы избежать повреждения ОС, когда вы делаете что-то не так, играя в консоли.

"Большие" системы могут быть спасены загрузкой с USB, запуском fsck и т.д. Здесь крайне желательно просто перезагрузить компьютер с проверенной конфигурацией.

В общем, ОС может предоставить способ зафиксировать изменения, записать их в энергонезависимую память, откуда они будут восстановлены при следующей перезагрузке. Или это может не обеспечить ни способ, ни такой процесс восстановления вообще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .