Mau oyamba
Mukamapanga Linux, ntchito yopanga zolemba zolumikizana zomwe zimachitika pomwe makinawo atsegulidwa kapena kutseka amawuka. Mu system V izi zinali zophweka, koma ndi systemd imapanga zosintha. Koma ikhoza kukhala ndi nthawi yakeyake.
N'chifukwa chiyani timafunikira zolinga?
Nthawi zambiri zimalembedwa kuti chandamale chimagwira ntchito ngati analogue ya runlevel mu system V -init. Ine sindimagwirizana kwenikweni. Pali zambiri za izo ndipo mukhoza kugawa phukusi m'magulu ndipo, mwachitsanzo, kuyambitsa gulu la mautumiki ndi lamulo limodzi ndikuchita zina zowonjezera. Komanso, alibe utsogoleri, koma kudalira.
Chitsanzo cha chandamale chikayatsidwa (chidule cha mawonekedwe) ndikugwiritsa ntchito script
Kufotokozera chandamale yomweyi:
cat installer.target
[Unit]
Description=My installer
Requires=multi-user.target
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target
AllowIsolate=yes
Wants=installer.service
Cholinga ichi chidzayamba pamene multi-user.target idzakhazikitsidwa ndikuyimba installer.service. Komabe, pakhoza kukhala mautumiki angapo otere.
cat installer.service
[Unit]
# ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
Description=installer interactive dialog
[Service]
# ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎ
Type=idle
# ΠΠΎΠΌΠ°Π½Π΄Π° Π·Π°ΠΏΡΡΠΊΠ° - Π²ΡΠ·ΠΎΠ² ΡΠΊΡΠΈΠΏΡΠ°
ExecStart=/usr/bin/installer.sh
# ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠ΅ΡΠ΅Π· tty3
StandardInput=tty
TTYPath=/dev/tty3
TTYReset=yes
TTYVHangup=yes
[Install]
WantedBy=installer.target
Ndipo potsiriza, chitsanzo cha script ikuchitidwa:
#!/bin/bash
# ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π² tty3
chvt 3
echo "Install, y/n ?"
read user_answer
Chofunika kwambiri ndikusankha final.target - chandamale chomwe dongosolo liyenera kufika poyambira. Pakuyambitsa, systemd idzadutsa pazodalira ndikuyambitsa zonse zomwe ikufuna.
Pali njira zosiyanasiyana zosankhira final.target, ndinagwiritsa ntchito njira yodzaza izi.
Kutulutsa komaliza kumawoneka motere:
- Bootloader imayamba
- Bootloader imayamba kuyambitsa firmware podutsa final.target parameter
- Systemd imayamba kuyambitsa dongosolo. Motsatizana amapita ku installer.target kapena work.target kuchokera ku basic.target kudzera mu kudalira kwawo (mwachitsanzo, multi-user.target). Omaliza abweretse dongosolo kuti ligwire ntchito yomwe mukufuna
Kukonzekera firmware kuti iyambe
Mukamapanga firmware, ntchitoyo nthawi zonse imakhala yobwezeretsa dongosolo poyambira ndikulisunga potseka. State imatanthawuza mafayilo osinthira, zotayira pa database, mawonekedwe a mawonekedwe, ndi zina.
Systemd imayendetsa njira mu chandamale chofanana. Pali zodalira zomwe zimakupatsani mwayi wodziwa momwe malembedwe amayambira.
Zimagwira ntchito bwanji mu polojekiti yanga (
- Dongosolo limayamba
- Setting_restore.service service yakhazikitsidwa, imayang'ana kupezeka kwa fayilo ya settings.txt mu gawo la data. Ngati palibe, ndiye kuti fayilo yolozera imayikidwa m'malo mwake.Kenako, zoikamo zadongosolo zimabwezeretsedwa:
- password ya admin
- dzina la alendo,
- nthawi zone
- malo
- Imatsimikiza ngati media yonse ikugwiritsidwa ntchito. Mwachikhazikitso, kukula kwa chithunzicho ndi kochepa - kuti muzitha kukopera ndi kujambula ku media. Poyambira, imayang'ana kuti awone ngati pali malo osagwiritsidwa ntchito. Ngati ilipo, diskiyo imagawidwanso.
- Kupanga makina-id kuchokera ku adilesi ya MAC. Izi ndizofunikira kuti mupeze adilesi yomweyo kudzera pa DHCP
- Zokonda pa netiweki
- Imaletsa kukula kwa zipika
- Galimoto yakunja ikukonzedwa kuti igwire ntchito (ngati njira yofananira yayatsidwa ndipo drive ndi yatsopano)
- Yambani postgresq
- Ntchito yobwezeretsa ikuyamba. Zimafunika kukonzekera zabbix yokha ndi database yake:
- Imafufuza ngati pali kale nkhokwe ya zabbix. Ngati sichoncho, chimapangidwa kuchokera kumayendedwe oyambira (ophatikizidwa ndi zabbix)
- mndandanda wamagawo anthawi amapangidwa (ofunikira kuti awonetse pa intaneti)
- IP yamakono ikupezeka, ikuwonetsedwa mu nkhani (kuyitanira kuti mulowe mu console)
- Maitanidwe akusintha - mawu akuti Okonzeka kugwira ntchito akuwonekera
- Firmware ndi yokonzeka kugwiritsidwa ntchito
Mafayilo autumiki ndi ofunikira, ndi omwe amakhazikitsa ndondomeko ya kukhazikitsidwa kwawo
[Unit]
Description=restore system settings
Before=network.service prepare.service postgresql.service systemd-networkd.service systemd-resolved.service
[Service]
Type=oneshot
ExecStart=/usr/bin/settings_restore.sh
[Install]
WantedBy=multi-user.target
Monga mukuonera, ndinayika zodalira kuti script yanga iyambe kugwira ntchito, ndipo pokhapokha maukonde akukwera ndipo DBMS idzayamba.
Ndipo utumiki wachiwiri (zabbix kukonzekera)
#!/bin/sh
[Unit]
Description=monitor prepare system
After=postgresql.service settings_restore.service
Before=zabbix-server.service zabbix-agent.service
[Service]
Type=oneshot
ExecStart=/usr/bin/prepare.sh
[Install]
WantedBy=multi-user.target
Ndizovuta pang'ono pano.Kuyambitsako kulinso mu multi-user.target, koma ATAyamba postgresql DBMS ndi setting_restore yanga. Koma MUSANAyambe ntchito zabbix.
Ntchito yowerengera nthawi ya logrotate
Systemd ikhoza kulowa m'malo mwa CRON. Mozama. Komanso, kulondola sikufika pa miniti, koma mpaka yachiwiri (bwanji ngati pakufunika) Kapena mutha kupanga chowerengera choyipa, chotchedwa ndi kutha kwa chochitika.
Inali chowerengera chodabwitsa chomwe chimawerengera nthawi kuyambira pomwe makinawo adayamba.
Izi zidzafuna mafayilo a 2
logrotateTimer.service - kufotokozera kwenikweni kwautumiki:
[Unit]
Description=run logrotate
[Service]
ExecStart=logrotate /etc/logrotate.conf
TimeoutSec=300
Ndi zophweka - kufotokoza kwa lamulo loyambitsa.
Fayilo yachiwiri logrotateTimer.timer ndipamene zowerengera zimagwira ntchito:
[Unit]
Description=Run logrotate
[Timer]
OnBootSec=15min
OnUnitActiveSec=15min
[Install]
WantedBy=timers.target
Zomwe zili pano:
- kufotokoza kwanthawi
- Nthawi yoyambira, kuyambira pa boot system
- nthawi yowonjezereka
- Kudalira ntchito yowerengera nthawi.M'malo mwake, iyi ndi chingwe chomwe chimapanga chowerengera
Script yolumikizana mukayimitsa ndikutseka chandamale chanu
Pachitukuko china, ndidayenera kuchita zovuta kwambiri kuzimitsa makinawo - kudzera mu chandamale changa, kuti ndichite zambiri. Nthawi zambiri tikulimbikitsidwa kuti tipange ntchito ya Oneshot ndi njira ya RemainAfterExit, koma izi zimakulepheretsani kupanga script yolumikizana.
Koma chowonadi ndichakuti malamulo omwe adakhazikitsidwa ndi njira ya ExecOnStop amaperekedwa kunja kwa TTY! Ndiosavuta kuyang'ana - ikani lamulo la tty ndikusunga zotuluka zake.
Chifukwa chake, ndidakhazikitsa kutseka kudzera mu chandamale changa. Sindikunena kuti ndizolondola 100%, koma zimagwira ntchito!
Momwe zidachitikira (nthawi zambiri):
Ndinapanga chandamale my_shutdown.target, chomwe sichidalira aliyense:
yanga_shutdown.changa
[Unit]
Description=my shutdown
AllowIsolate=yes
Wants=my_shutdown.service
Popita ku chandamalechi (kudzera systemctl isolate my_shutdwn.target), idayambitsa my_shutdown.service service, yomwe ntchito yake ndi yosavuta - kuchita my_shutdown.sh script:
[Unit]
Description=MY shutdown
[Service]
Type=oneshot
ExecStart=/usr/bin/my_shutdown.sh
StandardInput=tty
TTYPath=/dev/tty3
TTYReset=yes
TTYVHangup=yes
WantedBy=my_shutdown.target
- M'kati mwa script iyi ndikuchita zofunikira. Mutha kuwonjezera zolemba zambiri pazomwe mukufuna kuti muzitha kusinthasintha komanso zosavuta:
my_shutdown.sh
#!/bin/bash --login
if [ -f /tmp/reboot ];then
command="systemctl reboot"
elif [ -f /tmp/shutdown ]; then
command="systemctl poweroff"
fi
#ΠΠΎΡ Π·Π΄Π΅ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
#ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, cp /home/user/data.txt /storage/user/
$command
Zindikirani. Pogwiritsa ntchito mafayilo /tmp/reboot ndi /tmp/shutdown. Simungathe kuyimba chandamale ndi magawo. Ntchito yokha ndiyotheka.
Koma ndimagwiritsa ntchito chandamale kuti ndizitha kusinthasintha pa ntchito komanso dongosolo lotsimikizika la zochita.
Komabe, chinthu chosangalatsa kwambiri chinabwera pambuyo pake. Makinawa akufunika kuzimitsidwa/kuyambiranso. Ndipo pali 2 zosankha:
- M'malo mwa kuyambiransoko, kutseka ndi malamulo ena (akadali ma symlink ku systemctl) ndi script yanu. M'kati mwazolemba, pitani ku my_shutdown.target. Ndipo zolemba zomwe zili mkati mwa chandamale ndiye imbani systemctl mwachindunji, mwachitsanzo, systemctl reboot
- Njira yosavuta, koma sindimakonda. M'malo onse, musayimbire shutdown/reboot/zina, koma imbani mwachindunji chandamale systemctl isolate my_shutdown.target.
Ndinasankha njira yoyamba. Mu systemd, yambitsaninso (monga poweroff) ndi ma symlink ku systemd.
ls -l /sbin/poweroff
lrwxrwxrwx 1 root root 14 ΡΠ΅Π½ 30 18:23 /sbin/poweroff -> /bin/systemctl
Chifukwa chake, mutha kuwasintha ndi zolemba zanu:
kuyambiransoko
#!/bin/sh
touch /tmp/reboot
sudo systemctl isolate my_shutdown.target
fi
Source: www.habr.com