Skrypty startowe w Slackware

Uwaga: Usunięcie/Edycja skryptów startowych może spowodować uszkodzenie systemu! Autor niniejszego poradnika nie ponosi odpowiedzialności za ewentualne szkody i konsekwencje powstałe w wyniku korzystania z informacji w nim zamieszczonych

Co to jest?

Skrypty startowe są to (jak wskazuje nazwa) skrypty wykonywane podczas uruchamiania systemu. Zazwyczaj uruchamiają one różne usługi systemowe, muszące działać przez cały czas jego działania. Należą do nich np. przykład cron, hal, czy (zwykle na serwerach) apache, sshd, mysqld.

Dzięki ich umiejętnej konfiguracji można zautomatyzować wiele czynności, które w innym wypadku byłyby wykonywane ręcznie po każdym uruchomieniu systemu, a które sprowadzają się do wydania tego samego zestawu komend, np. Podłączenie się do konkretnej sieci wi-fi.

Położenie i opis podstawowych skryptów startowych

Skrypty startowe w Slackware umieszczone są w katalogu /etc/rc.d. Podczas przyjmowania przez init’a rożnych runleveli wykonują się poszczególne skrypty umieszczone w tym katalogu. Podkatalogi o nazwach rc.*, odpowiadają poszczególnym runlevelom. W samym /etc/rc.d/ umieszczony jest między innymi plik rc.local, do którego można dodawać własne skrypty.

Edycja skryptów startowych

Do edycji skryptów startowych potrzebne są uprawnienia roota. Dobry pomysł stanowi wykorzystanie pakietu sudo, dzięki któremu nie trzeba podawać hasła root’a podczas wykonywania większości czynności administracyjnych.

Do edycji (włącz/wyłącz) podstawowych usług najlepiej jest wykorzystywać pkgtoola (jeśli sudo pkgtool zwraca komunikat o tym, że nie ma takiego polecenia, należy wykonać sudo /usr/sbin/pkgtool). Po uruchomieniu tego narzędzia należy wybrać opcje setup, następnie services i kolejno jakie chcemy mieć usługi uruchamiane wraz ze startem systemu. Alternatywnym sposobem na włączenie/wyłączenie uruchamiania się danego skryptu wraz ze startem systemu jest nadanie/odjęcie mu praw do wykonania (chmod u+x – nadanie praw do uruchamiania, chmod u-x – odjęcie praw do uruchamiania; należy wykonać z poziomu roota).

Nie polecam jednak majstrowania przy nich początkującym, ponieważ, jak już ostrzegłem, grozi to uszkodzeniem systemu.

Własne skrypty startowe można dodać w bardzo łatwy sposób, grozi to jednak wydłużeniem czasu potrzebnego do uruchomienia systemu (przy zachowaniu zdrowego rozsądku – jeśli NIE są to skrypty, np. wyłączające system). Pamiętajmy, że skrypty startowe wykonywane są z poziomu roota.

Aby dodać własny skrypt uruchamiany razem z systemem, należy dodać go do /etc/rc.d/rc.local. Jeśli jest to większy skrypt, warto umieścić w /etc/rc.d/rc.local samą komendę go uruchamiająca (pamiętaj jednak o nadaniu praw do uruchamiania).

Jeśli skrypt ma być wykonany podczas wyłączania sytemu, umieszcza się go w /etc/rc.d/rc.shutdown. Jest to przydatne, jeśli chcesz mieć pewność, iż dana usługa zostanie poprawnie zamknięta. Dla przykładu, kiedy chcesz, aby podczas startu systemu uruchamiane było odtwarzanie muzyki (a korzystasz z odtwarzacza MOC), wystarczy, że uruchomisz komendę sudo vim /etc/rc.d/rc.local i dodasz linię: su TwojLogin -c "mocp --server && mocp --play.

Dlaczego su? Skrypty startowe (jak już wcześniej wspomniałem) są domyślnie wykonywane z poziomu roota, a odtwarzacz skonfigurowany jest zwykle dla zwykłego użytkownika. Analogicznie, chcąc dodać automatyczne ściąganie torrentów (korzystając z rtorrenta), dodajesz do /etc/rc.d/rc.local linię su TwojLogin -c "screen -S rtorrent -md rtorrent". Podsumowując, aby dodać własny skrypt startowy, dodajesz do /etc/rc.d/rc.local linię: su TwojLogin -c "./SciezkaDoTwojegoSkryptu". Stanowi to lepszy pomysł niż od razu umieszczenie komend w /etc/rc.d/rc.local, ponieważ łatwiej utrzyma porządek. Z /etc/rc.d/rc.shutdown, możesz postąpić tak samo, dodając skrypty wykonywane podczas wyłączania sytemu.

Opis usług systemowych, zawartych w skryptach startowych (domyślnie):

  • rc.atalk – Serwis AppleTalk, jeśli nie korzystasz, możesz wyłączyć.
  • rc.bind – Uruchamia serwer nazw (DNS) BIND, możesz wyłączyć, jeśli nie korzystasz.
  • rc.cups – System do drukowania, jeśli nie korzystasz, możesz wyłączyć.
  • rc.dnsmasq – DNS, możesz wyłączyć, jeśli nie korzystasz.
  • rc.fuse – Odpowiada za system plików dla użytkowników, nie wyłączaj.
  • rc.hald – Uruchamia HAL’a – demona kontrolującego pracę sprzętu. Nie wyłączać, może spowodować to błędną pracę sprzętu.
  • rc.httpd – Apache – Serwer http. Jeśli nie stawiasz serwera http na swoim komputerze, możesz go wyłączyć.
  • rc.inetd – Super-daemon inet pochodzi z BSD, nie wyłączaj.
  • rc.ip_forward – Aktywuje przekierowywanie pakietów IP, jeśli nie korzystasz, możesz wyłączyć/
  • rc.messagebus – Szyna wiadomości systemowych. Nie wyłączać.
  • rc.mysqld – Serwer MySQL, jeśli takowego nie masz na swoim komputerze, możesz go wyłączyć.
  • rc.ntpd – Serwer czasu, jeśli nie korzystasz, możesz wyłączyć.
  • rc.pcmcia – Odpowiada, za obsługę PCMCIA’ci, jeśli nie korzystasz, możesz wyłączyć.
  • rc.rpc – Demon RCP (NFS), możesz wyłączyć.
  • rc.samba – Uruchamia sambę, jeżeli nie korzystasz, możesz wyłączyć.
  • rc.saslaughtd – Odpowiada za autoryzację serwisu SASL, jeśli nie korzystasz, możesz wyłączyć.
  • rc.sendmail – Serwer wysyłania maili. Jeśli nie korzystasz, możesz go wyłączyć.
  • rc.snmtp – Uruchamia daemona do wysyłania maili.
  • rc.syslog – Logowanie. Warto mieć włączone, logi systemowe są czasami przydatne (np. podczas rozwiązywania problemów ze sprzętem).
  • rc.sshd – Demon SSH, jeśli nie stawiasz serwera SSH, wyłącz go, klient nie jest zależny od niego.

Naprawa skryptów startowych

Uwaga:Poniższe operacje są potencjalnie niebezpieczne i grożą uszkodzeniem systemu operacyjnego!

Może się zdążyć, że jakaś usługa uruchamiana wraz systemem (np. serwer MySQL) ulegnie uszkodzeniu, uniemożliwiając uruchomienie systemu. Tak naprawdę wystarcza tylko odpowiednio ‚unieszkodliwić’ skrypt uruchamiający ten program (aby system się włączył). Musimy się zaopatrzyć w LiveCD (lub LiveDVD) z jakimś systemem operacyjnym umożliwiając edycję danych na dysku twardym. Polecam do tego celu Knoppix’a, ponieważ jest on lekki i wszystko, co nam oferuje w zupełności wystarcza do naszych celów. Po ściągnięciu (polecam zrobić to przez P2P) i wypaleniu płyty należy zabootowac z niej komputer. Następnie wybrać opcję shell (w wypadku innych dystrybucji Linuksa w inny sposób uzyskać możliwość skorzystania z jakiegoś shell’a). Kolejnym krokiem jest wydanie komendy su (zalogowanie się jako root), następnie fdisk -l (w wypadku braku tego programu: cat /proc/partitions).

Rozpoznajemy naszą partycję z folderem / (root), np. po systemie plików i rozmiarze, następnie ją montujemy (mount /dev/NaszaPartycja (np. /dev/sdb1) /mnt/JakisFolder (być może trzeba będzie utworzyć folder (mkdir NazwaFolderu), do którego zamontujemy naszą partycję).

Po zamontowaniu polecam uruchomić Midnight Commandera (polecenie mc) i przejść do katalogu z naszą partycją root. Teraz trzeba przejść do katalogu /etc, następnie rc.d i tu w zależności od tego, jaka usługa nam się uszkodziła albo wstawić znak hash (#) w rc.local (jeśli padła nam usługa, którą sami dodaliśmy), albo odebrać prawa do wykonywania danemu plikowi (chmod u-x). Pamiętajmy tylko, że jeśli stało się to z jakąś kluczową usługą (np. daemon’em HAL, odpowiedzialnym za obsługę sprzętu), po uruchomieniu się systemu należy niezwłocznie tę usługę naprawić (np. poprzez reinstalacje programu), następnie przywrócić prawa do wykonywania się temu skryptowi (chmod u+x). W każdym razie, po naprawieniu skryptów należy wyjść z zamontowanego katalogu (najlepiej cd bez żadnych parametrów – przeniesie nas do katalogu HOME), następnie odmontować partycję (umount /mnt/NaszaPartycja). Teraz możemy wyłączyć komputer i zabootować go ponownie z dysku twardego.

Komentarze (RSS)
Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

7 komentarzy

  1. Mefisto 7 marca 2012 o godz. 18:12 #

    Z tego co pamiętam, twórca dystrybucji niechętnie odnosił się do sudo, a piśmak wpadł na odlotowy pomysł sudo+skrypty startowe.

    • sirmacik 7 marca 2012 o godz. 23:55 #

      Myślę, że chęć bądź niechęć twórcy dystrybucji do danego narzędzia zdecydowanie nie powinna stanowić dla użytkowników jakiegoś niepisanego zakazu wykorzystywania. Sudo jest jednym z podstawowych narzędzi administracyjnych w wielu innych dystrybucjach, w których powyższe wskazówki również mają zastosowanie.

  2. tux 7 marca 2012 o godz. 18:22 #

    Skoro nie poleca się początkującym to po co jest na jakilinux?

    • sirmacik 7 marca 2012 o godz. 23:52 #

      Bo JL nie jest serwisem skierowanym wyłącznie dla początkujących użytkowników. Jeśli spędziłeś już trochę czasu na Linuksie i chcesz lepiej poznać swój system, myślę że slack i ten właśnie tekst to jest coś dla Ciebie.

  3. szuwar 8 marca 2012 o godz. 10:08 #

    w Slackware nie ma rc.shutdown , skrypty które mają być wykonane podczas zamykania systemu dodaje się do rc.local_shutdown.

(wymagane)
URI
Uwaga! Niektóre komentarze, m.in. te dodane przez niezalogowanych i nowych użytkowników, są ręcznie moderowane. Jeśli Twój komentarz nie ukaże się od razu, nie dodawaj go ponownie, tylko cierpliwie poczekaj na akceptację.

Literówki najlepiej zgłaszać mailem: sirmacik@jakilinux.org!

W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="jaklinux.org">Linux dla każdego</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <del>tekst przekreślony</del>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.