Propozycja do rc-scripts

Rafał Kleger-Rudomin klakier w pg.gda.pl
Pon, 22 Mar 1999, 15:29:49 CET


On Mon, 22 Mar 1999, Tomasz Kłoczko wrote:

> Tu by trzeba to przemysleć ale wydaje mi się, że tak czy inaczej można
> taką funkcjonalność zawrzeć. Trzeba to tylko zrobić przejrzyście z
> wykorzystaniem wszystkich możliwości jakie są tu do wykorzystania. Po
> pierwsze Trzeba sobie zdać sprawę z tego co i w jakiej kolejności jest
> czytane, a także co gdzie jest ustawiane jeśli chodzi o rózne zmienne i
> nazwy plików.

Ja już się w to wgryzałem - jak pisałem dysponuję czymś co chodzi bez
problemu od pół roku i do tego pozwala wsadzać dysk na różne interfejsy
(nie tylko np. /dev/hda). O szczegółach za chwilę.

> Po pierwsze jeśli chodzi o XF86Config to przed przeczytaniem tego pliku
> czytany jest plik XF86Config.<hostname>. Pierwsza miożliwość jaka się tu
> nasuwa to korzystanie z różnych nazw hosta w różnych miejscach.

Owszem jest szukany XF86Config[.hostname] - tak ale tylko w
usr/X11R6/lib/X11 - jeśli go (ich) tam nie ma to jest brany
etc/X11/XF86Config.
U mnie jest tak że XF86Config jest w etc/X11 a w lib/X11 jest do niego
pojedynczy link - choroba nie pamiętam czy tak mi się PLD zaistalowało czy
sam to zmieniałem, ale tak czy owak tak powinno być - wszystkie configi w
etc i kropka... I wtedy podmienimy tylko pliki w etc.

> Kolejna spraw to zawartość /proc/cmdline. W pliku tym jest min zmienna
> BOOT_IMAGE, która jest także wstawiana w środowisko skryptów startowych
> rc. Czyli kolejna możliwość to sterowanie przestawianiem paramerów w
> zależności od BOOT_IMAGE.

Moje rozwiązanie na tym właśnie bazuje!

> Może możnaby tak zrobić, że w zadeżności od BOOT_IMAGE ustawiać rózne
> HOSTNAME, a w zależności od HOSTNAME wczyta się różne XF86Config (?).

ano właśnie tak musi być!

Więc może przybliżę problem i jak go rozwiązałem:

Obecny rc.sysinit robi następujące rzeczy w następującej kolejności:
1. Ustawia PATH
2. Czyta /etc/sysconfig/network
3. Czyta /etc/sysconfig/system
4. Odpala swapa
5. Ustawia hostname, nisdomain
6. SPRAWDZA partycję / (ro)
7. Włącza quotę
8. Montuje proca
9. Odpala isapnp
10. PRZEMONTOWUJE partycję / na rw
11. Bawi się modułami
12. Ustawia RAID
13. SPRAWDZA POZOSTAŁE partycje
14. MONTUJE LOKALNE FILESYSTEMY
15. Robi pozostałe rzeczy...

Najlepiej byłoby się wstrzelić z podmianą plików gdzieś na początku
Ale zauważmy że przy takiej sekwencji jest to niemożliwe - "/" jest
read-only aż do punktu 10! A wcześniej odbywają się rzeczy bazujące na
plikach z dysku.



Ja to rozwiązałem tak: przeniosłem pkt 6 i 10 zaraz za 1, dodałem
'podmieniacz' i wygląda to tak:



1. Ustawia PATH
2. Tu dostawiłem takie coś:

	# KOMP - identyfikator maszyny (pierwsze znaki do kropki lub
	# minusa w etykiecie wybranego jądra np. "dom.kernel1" - pc36) 
	export KOMP=`echo "$BOOT_IMAGE" | sed 's/[.-].*//g'` 
	# KOMP_ROOT - nazwa partycji z "/" np /dev/hdc2
	export KOMP_ROOT=`awk '$2=="/" {print $1}' /etc/fstab.$KOMP`

3. SPRAWDZA partycję / (ro) z małą modyfikacją żeby się dało używać dysku
   z różnych interfejsów
	# było fsck -V -a $fsckoptions /
	# zrobiłem:
        fsck -V -a $fsckoptions $KOMP_ROOT


4. PRZEMONTOWUJE partycję / na rw
5. Tu wstawiłem pierwsze wywołanie podmieniacza

	if [ -n "$KOMP" ]; then # na wypadek bootowania z dyskietki z jadrem
    	/etc/rc.d/podmieniacz /etc/rc.d/do.podmiany.raz
	fi

6. Czyta /etc/sysconfig/network
7. Czyta /etc/sysconfig/system
8. Odpala swapa
9. Ustawia hostname, nisdomain
10. Włącza quotę
11. Montuje proca
12. Odpala isapnp
13. Bawi się modułami
14. Ustawia RAID
15. SPRAWDZA POZOSTAŁE partycje
16. MONTUJE LOKALNE FILESYSTEMY
17. To wstawiłem drugie wywołanie podmieniacza

	if [ -n "$KOMP" ]; then # na wypadek bootowania z dyskietki z jadrem
    	/etc/rc.d/podmieniacz /etc/rc.d/do.podmiany.dwa koniec
	fi

18. Robi pozostałe rzeczy...


Pliki do.podmiany.* zawierają listy plików
Podmieniacz działa tak (w dużym skrócie):
Ma zapisane w /var/poprzedni.komp identyfikator ostatnio używanego kompa
(załóżmy że poprzednio był "dom" a teraz "praca"), wtedy:
 zachowuje aktualne pliki z listy (np. cp fstab fstab.dom)
 wstawia odpowiedni plik (np. cp fstab.praca fstab)

Po co drugie wywołanie podmieniacza? Początkowo podmieniałem link w
/usr...X11/XF86Config, a usr miałem na innej partycji. Teraz już tego nie
używam (podmieniam w etc/X11)... 
... i nie powinno tego być bo co np. jeśli mamy /usr na nfs?

Czy potraficie wskazać jakieś istotne pliki z partycji nie-root które
trzebaby podmieniać? bo wtedy sprawa sie mocno komplikuje.
Jeśli nie to wszysko jest proste: podmiana w jednym rzucie (tylko w etc?)

Problem z quotą, montowaniem proca, - wedrują do obszaru gdzie "/" jest rw 
Czy to może być niewskazane?


Czekam na dalsze uwagi...

Rafał Kleger-Rudomin

> kloczek
> -- 
> -----------------------------------------------------------
> *Ludzie nie mają problemów, tylko sobie sami je stwarzają*
> -----------------------------------------------------------
> Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*
> 
> 





Więcej informacji o liście dyskusyjnej pld-devel-pl