LINUX.ORG.RU

autorun а gentoo

 , ,


1

1

Нужно запустить простой безусловный скрипт с командами по настройке системы. Система инициализации - openRC.

Написал скрипт /etc/init.d/start.sh

#!/sbin/runscript

start () {
echo 98 > /proc/sys/vm/swappiness
modprobe zram num_devices=2
echo 1200000000 > /sys/block/zram0/disksize
echo 1200000000 > /sys/block/zram1/disksize
mkswap /dev/zram0
mkswap /dev/zram1
swapon -p 100 /dev/zram0
swapon -p 100 /dev/zram1
swapon -p 1 /dev/sda4
echo 1 > /sys/kernel/mm/ksm/run
modprobe vboxdrv
}

stop () {
swapoff /dev/zram0
swapoff /dev/zram1
}

restart () {
stop
start
}

Скрипту даны права на исполнение и ручная команда /etc/init.d/start.sh start хорошо работает. Также сделан симлинк этого скрипта в /etc/local.d/rc.start, но при старте действия не выполняются и rc-update не видит сервиса start.sh. Как превратить этот скрипт в системный сервис?

На правах оффтопика - половину действий из написанных в скрипте делать таким методом не надо, это делается через fstab/modules.d/sysctl.

DeadEye ★★★★★ ()
Ответ на: комментарий от DeadEye

У него нет modules.d, это openrc. И вообще, кококо, что может быть лучше тонны скриптоты, только две тонны скриптоты!

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

А, ОК, не в курсах был на тему modules.d. Спасибо за инфу.

Тем не менее. %)

DeadEye ★★★★★ ()

пишешь два скрипта, 1-ый на пуск зрам zram.start, 2-ой на остановку зрам zram.stop, делаешь их исполняемыми и кладёшь в дирку /etc/local.d. служба локал, вроде, по умолчанию уже активна

Deleted ()

Используй zswap и не надо этих танцев с тонной скриптов при запуске.

А вместо KSM используй UKSM

sudopacman ★★★★★ ()
Последнее исправление: sudopacman (всего исправлений: 2)
Ответ на: комментарий от Deleted

Что должно быть в этих скриптах? Надо ли задавать переменные start (), stop ()?

kirill_rrr ★★★★★ ()
Ответ на: комментарий от sudopacman

Нашёл разницу. У меня обычное ядро, pf-kernel ставить не буду.

kirill_rrr ★★★★★ ()
Последнее исправление: kirill_rrr (всего исправлений: 1)

Все-таки наверно лучше бросать сам скрипт в /etc/local.d, init.d это только для системных, OpenRC, скорее всего, еще где-то хранит список системных скриптов, и чужим туда вход не позволен :)

Motif ()
Ответ на: комментарий от sudopacman

Кстати, все эти танцы с бубном сделаны не только для большого свопа, но и для максимально позднего его включения. Первые страницы падают в реальный своп только когда 98% оперативки заполнено (не кешам и буферами), и сжато.

kirill_rrr ★★★★★ ()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от Motif

Я сделал симлинк. Теоретически это аналогично тому, что скрипт размещён ещё и в /etc/local.d. Но что именно у меня не так?

kirill_rrr ★★★★★ ()
Ответ на: комментарий от kirill_rrr

просто баш-скрипт, без start и stop. у меня вот так

$ cat zram.start 
/bin/echo 1 > /sys/block/zram0/compact; \
/bin/echo 8 > /sys/block/zram0/max_comp_streams; \
/bin/echo lz4 > /sys/block/zram0/comp_algorithm; \
/bin/echo 16G > /sys/block/zram0/disksize; \
/sbin/mkswap /dev/zram0; \
/sbin/swapon -p100 /dev/zram0

Deleted ()

А для кого же тогда придуман /etc/local.d/ ?

ass ★★★★ ()
Ответ на: комментарий от kirill_rrr

только когда 98% оперативки заполнено
echo 98 > /proc/sys/vm/swappiness

Может у тебя там swapiness как-то по-другому работает, но вообще vm.swappiness=98 означает, что свопиться система начнёт когда свободно 98% оперативки.

sudopacman ★★★★★ ()
Ответ на: комментарий от intelfx

Ну скажи ещё, что в systemd нет скриптов, да все стартовые сервисы в systemd это тоже скрипты в той или иной форме. Всё отличие systemd от openrc в основном только в том, что systemd умеет запускать эти скрипты параллельно, более оптимально, ну и конечно в том, что systemd в большей степени комбайн, почти целая операционная система.

kostik87 ★★★★★ ()
Ответ на: комментарий от kirill_rrr

pf-kernel

Не обязательно pf-kernel, достаточно один патч накатить (хотя проще взять готовые исходники pf)

ставить не буду

Почему?

sudopacman ★★★★★ ()
Ответ на: комментарий от Deleted

Вот это помогло. Стоп правда не проверял.

И остаётся непонятным, почему rc-update не видит скрипта в /etc/init.d

kirill_rrr ★★★★★ ()
Ответ на: комментарий от sudopacman

вот сейчас. Запустил VBox на 2 Гиб оперативки и 2 градиента в гимпе 100000х100000. Использовано 6,2 Гиб из 7,4 оперативной памяти и 0,94 Гиб свопа.

Filename                                Type            Size    Used    Priority
/dev/zram0                              partition       1562496 350576  100
/dev/zram1                              partition       1562496 350532  100
/dev/sda4                               partition       10028336        0       1
Ни один SSD в процессе эксперимента не пострадал!

http://devhead.ru/read/uskorenie-raboty-linux - пишут обратное.

kirill_rrr ★★★★★ ()
Ответ на: комментарий от kostik87

Не надо про параалельность и оптимальность, это ещё в sys-v init было. И именно там были получены первые рекорды «загрузка системы за 5,37 секунды»

kirill_rrr ★★★★★ ()
Ответ на: комментарий от sudopacman

pf-kernel даёт некую отзывчивость ценой 1-2-5% суммарной производительности под нагрузкой. Так пишут, причём вроде сами разработчики. Текущая отзывчивость меня устраивает, зачем ставить более тяжёлые и сложные планировщики чего то там?

kirill_rrr ★★★★★ ()
Ответ на: комментарий от kirill_rrr

http://devhead.ru/read/uskorenie-raboty-linux - пишут обратное

Почитай википедию. Думаю, википедия более надёжный источник, чем статьи в интернете. Да и ещё во многих источниках пишут именно что при большем значении swappiness система будет скорее свопиться.

Просто в твоём случае это незаметно т. к. своп находится в оперативке.

sudopacman ★★★★★ ()

sys-block/zram-init
sysctl
modprobe

Что у людей за мания превращать систему в свалку?

daemonpnz ★★★★★ ()
Последнее исправление: daemonpnz (всего исправлений: 1)

modprobe zram num_devices=2

Закинь в /etc/modules_load.d

echo 98 > /proc/sys/vm/swappiness

И подобное перенеси в /etc/sysctl.d

swapon -p 100 /dev/zram0

В /etc/fstab

И не страдай хернёй.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

В /etc/fstab

Нужно указать приоритет. fstab не умеет. Особенно для несуществующего на момент монтирования устройства.

Закинь в /etc/modules_load.d

Его вообще нет.

И не страдай хернёй.

Вам чем то не нравится тонкий тюнинг из 1 стартового скриптика? Обязательно использовать весь спектр раскиданых по /etc конфигов с разными синтаксисами?

kirill_rrr ★★★★★ ()
Ответ на: комментарий от sudopacman

Википедия в том же интернете. Попробуйте у себя выставить 20 и 80, и погонять. Всё сразу будет видно.

kirill_rrr ★★★★★ ()
Ответ на: комментарий от kirill_rrr

Ну когда я эксперементировал с zram ставил максимальное значение и система нормально так свопилсаь.

Сейчас тоже стоит 100 и система свопится при этом занято ~50% ОЗУ.

sudopacman ★★★★★ ()
Последнее исправление: sudopacman (всего исправлений: 2)
Ответ на: комментарий от kirill_rrr

Нужно указать приоритет. fstab не умеет. Особенно для несуществующего на момент монтирования устройства.

pri=100

несуществующего на момент монтирования устройства.

Вообще-то модули грузятся до свапа. mkswap можно делать правилом удева.

Его вообще нет.

/etc/modprobe.d/

deadNightTiger ★★★★ ()
Ответ на: комментарий от deadNightTiger

mkswap можно делать правилом удева

Это однозначно проще, чем мой вариант.

kirill_rrr ★★★★★ ()
Ответ на: комментарий от sudopacman

Да, вообще с zram эта переменная должна работать абсолютно по другому.

Когда zram не использовал, с swappines 98 своп начинался только при заполнении ~90% оперативки памятью приложений, т.е. в самом конце. А при стандартном 60, где то с 60-70%, как и положено.

kirill_rrr ★★★★★ ()
Ответ на: комментарий от no-such-file

И вообще, мне уже дали хороший совет - использовать zswap вместо zram. Пока пусть так постоит, а потом так и сделаю.

kirill_rrr ★★★★★ ()
  • Зачем скрипту на runscript расширение шеллскрипта?
  • Пользоваться /etc/sysctl.{conf,d} не учили?
  • Модули автолоадятся вот так.
r3lgar ★★★★★ ()
Ответ на: комментарий от r3lgar

Нет, не учили. Пользуюсь тем, что знаю и как умею. А в январе ещё был debian и /etc/rc.local

kirill_rrr ★★★★★ ()
Ответ на: комментарий от kirill_rrr

в январе ещё был debian

Я думал, что ты опытный гентушник, поэтому сжал ответ. Если что не понятно — переспроси.

Пользуюсь тем, что знаю и как умею.

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

r3lgar ★★★★★ ()
Ответ на: комментарий от r3lgar

Пожалуй пока не буду копать как правильно. Результат достигнут, прочие проблемы - по мере поступления.

kirill_rrr ★★★★★ ()
Ответ на: комментарий от kirill_rrr

прочие проблемы - по мере поступления.

Потом не говори, что я тебя не предупреждал, что они со временем копятся в геометрической прогрессии, и не найдёшь концов в этой каше.

r3lgar ★★★★★ ()
Ответ на: комментарий от r3lgar

Дебиан был довольно чистым. Все котыли лежали в /make/, /bin/ и ~/skript/ и 4 года почти не создавало проблем. Так что я рискну.

kirill_rrr ★★★★★ ()

Поясните, в чём смысл свап раздела в оперативке?

Gentooshnik ★★★ ()
Ответ на: комментарий от kirill_rrr

4 года почти не создавало проблем.

Дебьян — не роллинг, и там всё довольно консервативно. Гента — роллинг, софт там обновляется довольно часто (даже на штабле), апи софта переписывается, мейнтейнеры часто просто тупят (шукай баги по несборке софта после обновления либ) (в этот момент у меня сфейлилась сборка вайна, лол), так что с дебианом сравнивать генту неуместно.

r3lgar ★★★★★ ()
Ответ на: комментарий от Gentooshnik

А фиг его знает. Своп нужен только для гибернации, и из оперативки оно просто не проснётся.

r3lgar ★★★★★ ()
Ответ на: комментарий от Gentooshnik

Не просто в оперативке, а в оперативке со сжатием. То, что кладётся в такой «своп», на самом деле просто сжимается lzo.

intelfx ★★★★★ ()

-=:=-

копец, прям перепись адекватов.
Тебе нужен /etc/local.d/твой_мега_скрыпт.start
и в обратке ****.stop
Всё.
к тому же - скрипы выполняются в порядке сортировки по алфавиту. или числам.
000_тонна_жыра-на-вброс.start или 999_мегатонна_жыра-на-слив.stop
то есть если скрипт по необходимости стартует первым - значит должен стопиться последним.
ах да, никаких старт-стопов в скрипте. только простыня. ну..вообщем сам как-нить распарсишь.

KosmiK ()
Последнее исправление: KosmiK (всего исправлений: 1)
Ответ на: -=:=- от KosmiK

Так ещё полтреда назад так и сделал. Дальше обсуждали «зачем?» и «как по другому?»

kirill_rrr ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.