Как загрузить модуль ядра позже в последовательности загрузки?

Я экспериментировал с модулем ядра g_mass_storage. Сначала я попробовал загрузить его, поместив его в /etc/modules и опции в /etc/modprobe.d/file.conf

Это сработало, но когда я подключил устройство к компьютеру, хранилище массовых файлов было только для чтения - не то, что я искал.

Я решил, что это потому, что при загрузке модуля корневая файловая система монтируется как доступная только для чтения, а не для чтения-записи.

Это проблема, потому что драйвер ядра пытается получить файловый хэндл для чтения-записи для своего резервного хранилища, и если он не может договориться о таком хэндле rw, он возвращается к read-only.

Единственное решение, которое мне приходит в голову, - это перенести загрузку модуля ядра на более поздний этап загрузки.

Я перенес инициализацию модуля в /etc/rc.local с помощью modprobe, и это сработало как при чтении, так и при записи - но мне кажется, что это немного хак, чтобы загрузить модуль там.

Есть ли рекомендуемое место для загрузки модулей ядра, которым нужен rw доступ к файлу?

0
18.01.2016, 01:09
1 ответ

[вероятно, не идеальное] решение этой проблемы заключалось в подключении к службе systemd "systemd-remount-fs.service", которая является перемонтированием файловая система для чтения-записи.

Это означает, что модуль будет загружен как можно раньше, в то время как он все еще загружается после того, как файловая система перейдет в режим чтения и записи.

Мой пример конфигурационного файла systemd выглядит следующим образом:

[Unit]
Description=Starts kernel modules for USB OTG
After=systemd-remount-fs.service
DefaultDependencies=false

[Service]
Type=simple
ExecStart=/home/pi/programs/startmod.sh
WorkingDirectory=/home/pi/programs/

[Install]
WantedBy=local-fs.target

Это работает, хотя и немного хакерски.

0
28.01.2020, 04:53

Теги

Похожие вопросы