Страница 1 из 1

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 00:43
Белый Кролик
Приветствую всех форумчан. Столкнулся с проблемой при попытке перезаписать файл /sys/bus/serio/devices/serio1/protocol. Я могу внести изменения только от root'а, но после перезагрузки ноутбука файл возвращается в исходное состояние. Буду весьма признателен если кто-то подскажет как решить эту проблему.

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 01:07
slant
Если подразумевается "чтоб изменения сохранялись после перезагрузки" - ответ: никак. Это не физические файлы на диске.

https://it.wikireading.ru/1978

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

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 01:36
Белый Кролик
slant писал(а):
01 июн 2019, 01:07
Если подразумевается "чтоб изменения сохранялись после перезагрузки" - ответ: никак. Это не физические файлы на диске.

https://it.wikireading.ru/1978

Если нужно, можно только обеспечить перезапись файла во время загрузки системы, с помощью автоматического запуска соответствующего скрипта, скажем.
Спасибо за ссылку, узнал для себя что-то новое.
Я создал .sh файл с таким содержимым:

!#bin/bash
echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol

Сделал его исполняемым и добавил в автозагрузку, но не сработало. Если пытаюсь запустить в ручную, то в терминале вижу сообщение:

строка 1: !#bin/bash: Нет такого файла или каталога
строка 2: /sys/bus/serio/devices/serio1/protocol: Отказано в доступе

Можете подсказать что я неправильно сделал? Я понял только что файл должен запускаться от root'а, но не знаю как это сделать.

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 02:14
Белый Кролик
Зашел под root'ом и добавил этот скрипт в автозагрузку. В сеансе root все заработало. Как бы теперь заставить скрипт выполняться в сессии пользователя?

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 07:00
vir0id
Белый Кролик писал(а):
01 июн 2019, 01:36
!#bin/bash
В этой строчке забыл слеш поставить

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 07:47
Griga211
И ещё ! И # местами поменять.

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 09:14
Белый Кролик
vir0id писал(а):
01 июн 2019, 07:00
Белый Кролик писал(а):
01 июн 2019, 01:36
!#bin/bash
В этой строчке забыл слеш поставить
И правда забыл, спасибо.

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 09:17
Белый Кролик
Griga211 писал(а):
01 июн 2019, 07:47
И ещё ! И # местами поменять.
Спасибо. Моя внимательность к двум часам ночи куда-то улетучилась.

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 09:22
Белый Кролик
В сеансе root все работает. В сеансе пользователя скрипт приходится выполнять в терминале вручную и вводить пароль администратора.
Наверное, чтоб не вводить пароль и автоматизировать запуск, нужно из под администратора прописать этот скрипт в автозагрузку пользователя?

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 10:03
Chocobo
Белый Кролик, Автозагрузка силами DE происходит от имени пользователя, разумеется он обламывается по правам.

накидай service-юнит вместо скрипта, для автоматичсекого выполнения от рута на стадии до запуска пользовательских сессий

заведи файлик /lib/systemd/system/serio1-change.service

Код: Выделить всё

[Unit]
Description=change serio1 protocol onboot

[Service]
ExecStart=/usr/bin/bash -c '/usr/bin/echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol'

[Install]
WantedBy=multi-user.target
затем перечитать изменения
sudo systemctl daemon-reload
включить и добавить в автозагрузку
sudo systemctl start serio1-change.service
sudo systemctl enable serio1-change.service

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 10:15
Chocobo
Нашел еще одно прекрасное решение, https://wiki.archlinux.org/index.php/Sy ... rary_files
У системды оказывается есть свой хендлер для обраюотки динамических файлов. где можно поменять права доступа, содержимое.


заводишь файлик в одну строчку
/usr/lib/tmpfiles.d/serio1-protocol.conf

Код: Выделить всё

#    Path                  Mode UID  GID  Age Argument
w    /sys/bus/serio/devices/serio1/protocol     -    -    -    -   SynPS/2
А дальше системный менеджер при запуске сделает все сам.
лисапеды с echo вызываемые откуда только выозможно - уходят в небытие, какая прелесть :thumbs:
Правда сам еще не проверял :)

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 11:10
Белый Кролик
Chocobo писал(а):
01 июн 2019, 10:03
Белый Кролик, Автозагрузка силами DE происходит от имени пользователя, разумеется он обламывается по правам.

накидай service-юнит вместо скрипта, для автоматичсекого выполнения от рута на стадии до запуска пользовательских сессий

заведи файлик /lib/systemd/system/serio1-change.service

Код: Выделить всё

[Unit]
Description=change serio1 protocol onboot

[Service]
ExecStart=/usr/bin/bash -c '/usr/bin/echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol'

[Install]
WantedBy=multi-user.target
затем перечитать изменения
sudo systemctl daemon-reload
включить и добавить в автозагрузку
sudo systemctl start serio1-change.service
sudo systemctl enable serio1-change.service
Большое спасибо, теперь заработало! :yahoo:
Только пришлось изменить строку:
ExecStart=/usr/bin/bash -c '/usr/bin/echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol'
на:
ExecStart=/bin/bash -c 'echo -n "SynPS/2" > /sys/bus/serio/devices/serio1/protocol'

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 11:15
Белый Кролик
Chocobo писал(а):
01 июн 2019, 10:15
Нашел еще одно прекрасное решение, https://wiki.archlinux.org/index.php/Sy ... rary_files
У системды оказывается есть свой хендлер для обраюотки динамических файлов. где можно поменять права доступа, содержимое.


заводишь файлик в одну строчку
/usr/lib/tmpfiles.d/serio1-protocol.conf

Код: Выделить всё

#    Path                  Mode UID  GID  Age Argument
w    /sys/bus/serio/devices/serio1/protocol     -    -    -    -   SynPS/2
А дальше системный менеджер при запуске сделает все сам.
лисапеды с echo вызываемые откуда только выозможно - уходят в небытие, какая прелесть :thumbs:
Правда сам еще не проверял :)
Стоит попробовать и такой способ.

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 12:01
Chocobo
Белый Кролик писал(а):
01 июн 2019, 11:10
Только пришлось изменить строку:
Под рукой только федора, с нее и взял путь к echo :)

Не сохраняются изменения в файле

Добавлено: 01 июн 2019, 14:16
Белый Кролик
Chocobo писал(а):
01 июн 2019, 12:01
Белый Кролик писал(а):
01 июн 2019, 11:10
Только пришлось изменить строку:
Под рукой только федора, с нее и взял путь к echo :)
У меня на ноутбуке опенсузе, пришлось импровизировать по ходу дела т.к. в сузе еще и файлик пришлось ложить в /usr/lib/systemd/system, а не в /lib/systemd/system. Очень помог советом, еще раз спасибо! :thumbs: