Van egy fájl a fájlrendszeren. Többféle verziója is használatos, és még boot előtt kellene a megfelelőt a helyére másolni, hogy boot során már a megfelelő verzió legyen a helyén, az addig ott levőt felülírva.
Van-e mód arra, hogy hogy ezt például GRUB-ból megtegyem, hogy egy adott menüpontot kiválasztva egy verziót másol a helyére, másikat választva meg másikat?
Vagy máshogy?
(Konkrétan az /etc/network/interfaces fájlról van szó: más hálózati környezetben más beállításokkal kellene bootolnia a gépnek, más interface-en át csatlakozni a default gw-hez.)
Köszönöm, ha okosat szólsz.
- 4032 megtekintés
Hozzászólások
A grub parancsok között nem láttam ilyet. Viszont szerintem átadható a kernel paraméterek között olyan infó, amit a kernel semmire sem használ, de az oprendszer alatt kiolvasható, s ez alapján a file létrehozható, a hálózati szolgáltatás újraindítható.
A Grubban pedig ugyanaz a kernel különféle paraméterekkel külön menüpontokban szerepelne.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Az összes, a kernelnek a grub konfigban átadott kernel paraméter kiolvasható a /proc/cmdline-ból.
Ez alapján kell írni valami nagyon korai boot scriptet, ami kikeresi a neki szánt paramétert (fontos, hogy a /proc már mountolt legyen), és az alapján megnézi, hogy van-e tennivalója.
- A hozzászóláshoz be kell jelentkezni
Igen, erre gondoltam, csak olyan paraméter kell, ami nincs hatással a kernel működésére, tehát csak átadja, de nem csinál vele semmit.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Valamikor nagyon regen csinaltam ilyet: egy init szkript feldobott egy menut a juzernek, hogy mit szeretne, letarolta egy file-ban, majd az ifup mapping segitsegevel beallitotta a kivant halozati kornyezetet.
Az
/etc/network/interfaces
igy nezett ki:
auto eth0
mapping eth0
script /etc/network/check-network-mode
map VPN eth0-vpn
map MediaConv eth0-mediaconv
map Full eth0-full
auto eth1
mapping eth1
script /etc/network/check-network-mode
# map VPN eth1-vpn
# map MediaConv eth1-mediaconv
map Full eth1-full
#
# VPN mode (VPN, IPX only)
#
iface eth0-vpn ipx static
frame 802.3
netnum 0x48507431
#
# Media converter mode (no VPN, IP only)
#
iface eth0-mediaconv inet static
address 192.168.190.254
netmask 255.255.255.0
network 192.168.190.0
broadcast 192.168.190.255
#
# Full mode (VPN, IP+IPX)
#
iface eth0-full ipx static
frame 802.3
netnum 0x48507431
iface eth1-full inet static
address 192.168.190.254
netmask 255.255.255.0
network 192.168.190.0
broadcast 192.168.190.255
Az
/etc/network/check-network-mode
szkript pedig:
#! /bin/bash
# Network mode file
NETWORK_MODE_FILE="/var/run/network-mode"
INTERFACE="$1"
if [ -f "$NETWORK_MODE_FILE" ]; then
. "$NETWORK_MODE_FILE"
fi
[ -z "$NETWORK_MODE" ] && exit 1
while read condition scheme; do
if [ "$condition" = "$NETWORK_MODE" ]; then
which="$scheme"
break
fi
done
if [ -n "$which" ]; then
echo "$which"
exit 0
else
exit 1
fi
A
/var/run/network-mode
file-t eloallito init szkript neked marad hazi feladatnak :-)
- A hozzászóláshoz be kell jelentkezni
Többek között épp azért kell, hogy másképp azonosítsuk a júzert. Még az előtt kell, hogy azonosítani kellene.
- A hozzászóláshoz be kell jelentkezni
Nem ertem, hogy mit nem ertesz :-)
Mielott beallitanad a halozatot (/etc/init.d/networking), elinditod az uzemmod-valaszto szkriptet (ha nagyon szeretned, grub-bol is at tudsz adni parametereket, de azt csak akkor valasztanam, ha a kernel vagy a kernel parameterei is kulonbozoek kell legyenek, amugy egyszerubb egy init szkript).
Az a lenyeg, hogy az /etc/init.d/networking altal meghivott ifup altal meghivott /etc/network/check-network-mode szkript el tudja donteni, hogy eppen milyen uzemmodban akarsz mukodni. Utana mar az ifup dolga felhuzni a megfelelo interfeszeket (pl. eth0-home, eth0-work).
- A hozzászóláshoz be kell jelentkezni
Öööö. Lehet, hogy csak nem figyeltem? :)
Köszi!
- A hozzászóláshoz be kell jelentkezni
A check-network-mode scripted nézhetné a /proc/cmdline fájlt - abba meg az kerül, ami a grub-ban aktuálisan kiválasztott menünél a kernel sorban található - oda meg berakható tetszőleges olyan plusz paraméter, amit a kernel nem értelmez - azt ugyanis szépen figyelmen kívül hagyja - viszont a boot után a procfs-ben ott figyel majd.
- A hozzászóláshoz be kell jelentkezni
A "más hálózati környezet" nem deríthető ki automatikusan? Ha kideríthető, inkább ebbe az irányba indulnék el.
- A hozzászóláshoz be kell jelentkezni
Mármint a boot során kell a helyére kerülnie az adott fájlnak :-P Erre CentOS/RHEL alatt én a /etc/rc.d/rc.sysinit patkolását (frissítésnél lecserélődhet, úgyhogy reboot előtt ellenőrizni/javítani kell) hasnzáltam - a trükk annyi hozzá, hogy a grub menüben a "kernel" sort kiegészítettem egy (vagy több) paraméterrel, például:
kernel /vmlinuz-2.6.18-xxx ro root=/dev/sda2 pamparam=PARAMPAM
és az rc.sysinit-ben ezt a plusz stringet kell keresni a /proc/cmdline fájlban.
- A hozzászóláshoz be kell jelentkezni