SlinkingAnt schreef op 06 oktober 2004 @ 14:28:
Laat ik nu ook een probleempje hebben.
code:
1
2
| distributed.net # ./dnetc -install
dnetc: Unable to symlink /etc/rc0.d/K09dnetc->../init.d/dnetc: No such file or directory |
Hoe krijg ik 'm alsnog in de startup? Geen X oid, lekker alles console

Het is iets meer werk, maar je kunt het natuurlijk ook manueel doen. Ik doe het ook altijd manueel omdat ik meestal m'n eigen linux doosjes bouw (ik installeer geen distributie maar compileer alles zelf). Wat je precies moet doen hangt wat af van je systeem, maar aan je error te zien werkt je systeem ook met 'System-V style init scripts'. Ik doe een poging om een x-stappenplan te geven:
1. heb je wel permissies om die symlinks te maken? misschien eens proberen om 'dnetc -install' als root te draaien?
2. ik heb het sterke vermoeden dat dnetc al een boot script aangemaakt heeft omdat de error die je krijgt optreedt bij het maken van de symlinks; dus kijk eens of je een directory /etc/rc.d/init.d hebt en of daarin een file met naam 'dnetc' staat. Typisch staat daarin iets als volgt (ik dump ff die van mij hier):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| #! /bin/sh
#
# distributed.net client startup/shutdown script generated by 'dnetc -install'
# Use 'dnetc -uninstall' to stop the client from being started automatically.
#
# Don't forget to change buffer/.ini file perms if you wish to run suid'd.
#
CLIENT=/opt/dcapps/dnetc/dnetc
STARTOPTS="-ini ${CLIENT}.ini"
#STARTOPTS will need to be in quotes if it has white space in it
test -f $CLIENT || exit 0
case "$1" in
*start)
$CLIENT -quiet -shutdown # only allow one instance to run.
$CLIENT -quiet $STARTOPTS # -quiet is 'mandatory' here.
;;
*stop) # sends SIGTERM to all running clients.
$CLIENT -quiet -shutdown # remove '-quiet' to see activity.
;;
*reload) # sends SIGHUP to all running clients.
$CLIENT -quiet -restart # remove '-quiet' to see activity.
;;
*)
echo "Usage: $0 {[-]start|[-]stop|[-]reload}"
exit 1
;;
esac
exit 0 |
Is dat het geval, kijk dan even na of 'CLIENT=...' wel degelijk naar je dnetc wijst en ga dan maar meteen naar stap 4

3. als je dit bestand niet hebt, maak het dan even aan...
4. nu is het slechts een kwestie van wat symlinks zetten in de /etc/rcX.d directories (wat bij jou dus mislukt als dnetc -install het doet). X is hier een nummertje wat een runlevel aangeeft. Het getal 0 is bvb de computer afsluiten, 1 is single user mode, 2 is multi user mode zonder netwerk, 3 is multi user mode met netwerk, etc.
Ik denk dat je de logica kunt volgen dat je dingen die je als eerste opstart als laatste afsluit; wat laatst is opgestart sluit je eerst af. Die symlinks zijn eigenlijk soft links naar het bestand (een script) hierboven (typisch dus /etc/rc.d/init.d/dnetc). Als je eens in je rcX.d directories kijkt, zul je zien dat het er al vol staat met zulke symlinks. Sommige beginnen met een K, andere met een S. Ze hebben verder allemaal twee nummer na die initiele letter. De K betekent stop (kill) een service, de S betekent start. De nummers bepalen de volgorde in welke de scripts worden uitgevoerd, van 00 tot en met 99. Hoe lager het nummer, hoe sneller het script uitgevoerd zal worden. Wanneer init naar een ander runlevel overschakelt, worden de bijhorende services gestopt en eventueel worden andere gestart. Als je bvb van runlevel 3 naar 0 gaat (van 'multi user met netwerk' wat meestal normaal opgestart is als je geen X hebt draaien naar 'sluit maar af') dan worden de K-links in rc3.d uitgevoerd, daarna S-links in rc0.d (maar daar zul je geen S scripts vinden want dingen opstarten als je de machine afsluit is niet nuttig, maar je snapt waar ik heen wil). Je kan wat met die nummertjes spelen (volgorde weet je wel), maar je kan dan bvb volgende symlinks maken:
/etc/rc0.d/K09dnetc
/etc/rc1.d/K09dnetc
/etc/rc2.d/S90dnetc
/etc/rc3.d/S90dnetc
/etc/rc4.d/S90dnetc
/etc/rc5.d/S09dnetc
/etc/rc6.d/K09dnetc
zo'n symlink maak je (vanuit /etc) met 'ln -s ../init.d/dnetc rc0.d/K09dnetc' (voor de eerste dus). De truuk is natuurlijk dat je '../init.d/dnetc' zo aanpast dat je naar je dnetc script (het bestand hierboven) verwijst...
Als dit niet lukt of je komt er niet uit, dan hoor ik het wel. Desnoods zetten we dan wel een IRC of emailconversatie op om je te helpen
Succes!