# [INIT] xdm a runlevel - nie domyślny

## WombaT

Instaluje i konfiguruje KDE według dokumentacji (klik!) i mam problem na punkcie 3.4., mianowicie:

 *Quote:*   

> Listing 3.4: Dodawanie xdm do domyślnego poziom uruchamiania
> 
> ```
> # rc-update add xdm default
> ```
> ...

 

juz jedno gentoo mam zainstalowane (na maszynie wirtualnej na laptopie) i tam po wywołaniu tego polecenia x'y startują na domyślnym poziomie, czyli 3... Moj problem polega na tym ze chce aby domyslnie, w inittabie, poziom byl ustawiony na 3, ale x'y startowaly na 5. tak jak w innych dystrybucjach. Czyli aby system startowal tylko z konsola, a dopiero po wpisaniu init 5 startowały x'y i inne programy z tego poziomu. Oczywiscie nie bedzie tak zawsze, z czasem zmienie inittaba aby od razu startowalo do 5. ale dzieki temu bede mial prosty sposob na zamkniecie srodowiska graficznego init 3 - taki nawyk pozostał mi po opensuse. 

Tak więc jak to zrobić? 

Myslałem aby zmienic domyslny poziom na 5, dodac xdm do domyślnego, i potem znow zmienic domyslny na 3. Ale problem w tym ze jesli xdm jest faktycznie dodawany do "domyślnego", a nie do konkretnego numerka to nawet jak zmienie na 3 poziom to i tak mi bedzie srodowisko startowac.

Nastepnie przegladalem inittaba i zaciekawił mnie ten fragment:

```
l0:0:wait:/sbin/rc shutdown

l1:S1:wait:/sbin/rc single

l2:2:wait:/sbin/rc nonetwork

l3:3:wait:/sbin/rc default

l4:4:wait:/sbin/rc default

l5:5:wait:/sbin/rc default

l6:6:wait:/sbin/rc reboot
```

czy gdyby zmienic przy piątym poziomie nazwe z default na jakas inna, chociazby na "wszystko" to zadziałałaby komenda:

```
# rc-update add xdm wszystko
```

i start srodowiska graficznego "dodal" by sie TYLKO do 5. poziomu? Szczerze mówiąc to troche w to wątpie, zeby takie coś zaskoczyło.

próbowałem:

```
# rc-update add xdm 5
```

ale nie zadziałało, otrzymałem komunikat o nie istniejącym poziomie.

Jest to szczególnie dla mnie ważne, bo dodając np sambe do automatycznego uruchamiania, oczywistą rzeczą jest wybranie poziomu default aby usluga startowała przy każdym uruchomieniu. Napisałem sobie skrypt synchronizujący archiwum wiadomości kadu windowsa z linuksem (w obie strony) i chcę go dodać TYLKO do 5 poziomu na którym startuje środowisko graficzne, bo nie potrzebna jest synchornizacja historii jeżeli nie możliwe jest odpalenie w ogóle kadu. 

Mam nadzieję ze zrozumieliście co mam na myśli  :Smile: 

----------

## individual

Małe pytanie - dlaczego w ogóle potrzebujesz tymczasowo startu bez X'ów? A później chcesz zmienić żeby automatycznie wstawały?

----------

## WombaT

 *individual wrote:*   

> Małe pytanie - dlaczego w ogóle potrzebujesz tymczasowo startu bez X'ów? A później chcesz zmienić żeby automatycznie wstawały?

 

A czy to ma jakies krytyczne znaczenie? Taki mam kaprys, tak sobie wymyslilem i chce wiedziec jak to zrobic, nawet jesli to nie ma sensu  :Wink: 

edit:

generalnie to chce wiedziec jak dodac jakikolwiek program do konkretnego, jednego poziomu, a nie do domyslnego  :Smile: 

----------

## individual

```
rc-update add twoja-usluga jakis_runlevel
```

Oczywiście wcześniej musisz stworzyć taki runlevel.

Co innego to uruchamiać taki a nie inny runlevel dla danego uruchomienia - tutaj nie jestem zorientowany.

Aha. Pytałem - bo jeśli masz przyzwyczajenie z OpenSuse to niekoniecznie muszą one mieć zastosowanie w Gentoo. Dla przykładu instalacja nvidia-drivers nie wymaga zamknięcia X-ów co kiedyś musiałem w innych distro robić.

A dla zabicia X-ów wystarczy w razie czego dać: 

```
/etc/init.d/xdm stop
```

   - i po klopocie  :Smile: 

Jeśli masz jakiś program w kilku runlevelach to musisz go z nich wywalić:

```
rc-update del twoja-usluga niechciany_runlevel
```

Ten skrypt musi się uruchomić po kadu?

----------

## WombaT

Powiem tak: Linuksem zainteresował mnie wykładowca na uczelni, a uczył mnie na przykładzie jednego z uczelnianych serwerow na ktorym rezyduje fedora. No i zostałem nauczony ze poziomów jest tylko sześć:

(pisze z pamięci)

0 - wyłączenie komputera

1 - tryb jednego usera

2 - tryb wielu uzytkowników bez obsługi sieci

3 - tryb wielu użytkowników z siecią

5 - najwyższy tryb, ze srodowiskiem graficznym i wszystkim czym sie da

6 - reboot.

Tak więc, byłem lekko zdziwiony widząc srodowisko graficzne na 3cim poziomie. Tym bardziej, jak napisałeś "stwórz taki runlevel" to zleksza zdębiałem. Myslałem ze obczajam o co chodzi w tych poziomach, a teraz nie mam pojecia  :Very Happy: 

Cały czas swoje rozumowania opieram na cyferkach, tak jak mnie nauczyli.  Tak więc nie rozumiem jak mógłbym stworzyć własny runlevel  :Razz: 

----------

## individual

http://www.gentoo.org/doc/pl/handbook/handbook-x86.xml?part=2&chap=4

 *Quote:*   

> Gentoo posiada siedem zdefiniowanych poziomów: trzy wewnętrzne i cztery definiowane przez użytkownika. Wewnętrzne nazywają się sysinit, shutdown i reboot. Jak nietrudno się domyślić służą one kolejno do inicjacji, wyłączania oraz ponownego uruchamiania systemu.
> 
> Poziomy definiowane przez użytkownika związane są z podkatalogami /etc/runlevels: boot, default, nonetwork i single. W poziomie boot uruchamiane są wszystkie niezbędne usługi systemowe używane w pozostałych poziomach. Pozostałe trzy różnią się rodzajem uruchamianych usług: default służy do uruchamiania "standardowych" operacji, nonetwork wykorzystywany jest w przypadkach kiedy do uruchomienia danej usługi nie jest wymagane połączenie z siecią, zaś single używany jest tylko wtedy, gdy system wymaga naprawy. 

 

Zobacz sobie ns poddział - softlevel. Wydaje mi się, że musisz zmienić runlevel dla poziomu 5 z default na jakiś softlevel (stworzony przez Ciebie) - ale to tak na szybko piszę. Może ktoś zweryfikuje?

----------

## WombaT

 *individual wrote:*   

> Wydaje mi się, że musisz zmienić runlevel dla poziomu 5 z default na jakiś softlevel (stworzony przez Ciebie) - ale to tak na szybko piszę. Może ktoś zweryfikuje?

 

Właśnie to by mi odpowiadało! gdyby tak zadziałało jak myślę, to zrezygnowałbym z nazwy default, nazywajac trzeci np konsola a piaty wszystko. Wtedy wiedziałbym do ktorego dokladnie runlevelu co dodaje i by było wszystko tak jakbym chciał  :Smile: 

Kwestia tylko, czy da się tak zrobić i jak?

----------

## individual

Jeszcze inaczej. 

Tworzysz softlevel: (np.) bez_X

```
mkdir /etc/runlevels/bez_X
```

kopiujesz ustawienia default do bez_X. Poza xdm i twoim skryptem kadu.

```
# cd /etc/runlevels/default

 for service in *; do rc-update add $service bez_X; done

#(Usuwanie niechcianej usługi z runlevela bez_X

rc-update del xdm bez_X

#(Wyświetlenie wszystkich aktywnych usług dla runlevela bez_X

rc-update show bez_X
```

to samo robisz dla soflevela (np) z_X (tylko razem z xdm i kadu_skryptem)

Zostaje jeszcze edycja /boot/grub/grub.conf

```
title Gentoo Linux Tryb bez X

root (hd0,0)

kernel (hd0,0)/kernel-X.X.XX root=/dev/hdaX softlevel=bez_X

title Gentoo Linux Tryb X

root (hd0,0)

kernel (hd0,0)/kernel-X.X.XX root=/dev/hdaX softlevel=z_X

```

Tym sposobem masz na starcie 2 możliwości do wyboru. Wg how-to powinno działać.  :Smile: 

----------

## WombaT

Nie, to mnie nie satysfakcjonuje  :Smile:  to jest takie obejscie problemu na około, chciałbym zeby to działalo tak jak w innych distro :]

----------

## mziab

Nie wiem czy cię zainteresuje, ale można też podać kernelowi  nox jako parametr. Wtedy skrypt xdm to wyłapuje i nie autostartuje Xów. Całkiem przydatna rzecz przy aktualizacjach kernela, kiedy trzeba po reboocie przebudować nvidia-drivers  :Smile: 

----------

## Drwisz

Zainteresuj się plikiem 

```
/etc/inittab
```

Dokładnie ostatnią linią. Kasujesz to co jest i wklepujesz  

```
 x : 5 : respawn : {tu podajesz ścieżkę dla np : xdm} --nodaemon 
```

By startowały xy automatycznie z 5 runlevela przy starcie systemu musisz edytować linię:

```
# Default runlevel.

id:3:initdefault:
```

Trzeba zmienić na :

```
# Default runlevel.

id:5:initdefault:
```

Hmmm.. nie chce mi się grzebać i sprawdzać ale powinno działać. Kiedyś działało.

----------

