Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: winman в Apr 15, 2008, 19:50



Титла: Rc.local в debian lenny
Публикувано от: winman в Apr 15, 2008, 19:50
/etc/rc.local в Debian Lenny не се изпълнява при стартиране на системата. Може ли някой да ми помогне как да реша проблема?

Иначе /etc/init.d/rc.local start си работи. Явно трябва да активирам  изпълнението на rc.local при стартиране на системата, но не знам как. Досега не съм имал този проблем с Mandriva, Fedora, Vector и т.н.


Титла: Rc.local в debian lenny
Публикувано от: Hapkoc в Apr 15, 2008, 20:25
apt-get install sysv-rc-conf
sysv-rc-conf --level $RUNLEVELS rc.local on


Титла: Rc.local в debian lenny
Публикувано от: winman в Apr 15, 2008, 20:57
Наркос, благодаря!

Всичко изпълних, като войник, обаче резултата е все същия, не се изпълнява. Дай друг акъл. А ето и самия rc.local. Този опшън -е в началото не ми е ясно какво казва, обаче и с него, и без него все тая.

localhost:/home/winman$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 318 Apr 15 20:50 /etc/rc.local

localhost:/home/winman$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/usr/bin/tpb
exit 0





Титла: Rc.local в debian lenny
Публикувано от: winman в Apr 16, 2008, 00:11
Хм, като кажа, че Мандрива е по-добрата дистрибуция, тука такъв крясък настава. Сега тишина...


Титла: Rc.local в debian lenny
Публикувано от: neter в Apr 16, 2008, 00:44
Има едни папки в /etc с имена rc*.d, в които се поставят файловете, които трябва да се изпълняват при зареждане и изключване на системата. При стартиране системата гледа в папките от rc2.d до rc5.d, а точно коя, зависи кой init си избрал да се зареди. По подразбиране е init 5 и папка rc5.d (погледни /etc/inittab за по-точни данни). За да се зареди даден файл при стартиране на системата, трябва да се сложи symlink към него в съответната папка. Имената на symlink-овете за стартиране започват с буква S, следва двуцифрено число, посредством което файлът се подрежда на определена позиция по ред за изпълнение и следва името на файла. На едно число могат да седят толкова файла, колкото реални конзоли ти зарежда системата (по подразбиране шест). Т.е., в случая трябва да изпълниш
Примерен код
ln -s /etc/rc.local /etc/rc5.d/S90rc.local

Двуцифреното число тук е примерно. Погледни какви номерации имаш в /etc/rc5.d и избери подходящото за теб ;)


Титла: Rc.local в debian lenny
Публикувано от: winman в Apr 16, 2008, 00:54
neter,
Странното е, че всичко това го имам направено. Точно както го описваш. Нещо друго има. Обикновено се оказва накрая няква тъпня. От сутринта се боря с тва rc.local.

Благодаря, все пак, за подробното обяснение и вниманието.


Титла: Rc.local в debian lenny
Публикувано от: neter в Apr 16, 2008, 01:01
Дай тогава да ти видим съдържанието на /etc/inittab файла, защото може да има нещо оплетено там с указателите за различните init-и.
А, и погледни symlink-а в rc5.d дали води към /etc/rc.local или към /etc/init.d/rc.local, защото по подразбиране води към втория.





Титла: Rc.local в debian lenny
Публикувано от: winman в Apr 16, 2008, 01:27
Symlink-а в rc5.d води към /etc/init.d/rc.local, обаче това не е проблема, защото:
/etc/init.d/rc.local start стартира всичко записано в /etc/rc.local.

Ето и изхода на cat /etc/inittab:
# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-B) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  <id>:<runlevels>:<action>:<process>
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3


Титла: Rc.local в debian lenny
Публикувано от: neter в Apr 16, 2008, 01:43
От твоя /etc/inittab се вижда, че по подразбиране влизаш в init 2. Виж дали symlink-a за rc.local присъства и в /etc/rc2.d, за да продължим нататък. Грешки в /etc/inittab не се забелязват, само ми е чудно защо само реалната конзола tty1 ти се зарежда във всички init-и, а останалите се зареждат само в init-и 2 и 3?
Цитат
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

Това не е грешка, но помисли така ли искаш да бъде и, ако не, го нагласи както ти е нужно.


Титла: Rc.local в debian lenny
Публикувано от: winman в Apr 16, 2008, 02:00
Symlink-a за rc.local присъства и в /etc/rc2.d, /etc/rc3.d и т.н до /etc/rc5.d - @S99rc.local и сочи към ../init.d/rc.local.


Титла: Rc.local в debian lenny
Публикувано от: neter в Apr 16, 2008, 02:09
Между другото, нямам вземане-даване с въпросния tpb (доколкото виждам, става дума за ThinkPad Buttons), но народът го стартира с -d опция при зареждане на системата, за да застане като демон. Не съм наясно с разликата при него при изпълнение като клиент и като демон, но пробвай. Още нещо, във въпросната статия го зареждат със скрипт в /etc/X11/xinit, а не в rc.local. Поради липсата ми на опит с tpb, не мога да кажа и за това има ли значение. Това е статията, за която говоря, нищо че става дума за Fedora.

edit: Оп, тук си става дума за Debian и скриптът се намира в /etc/X11/Xsession.d/ (в дъното на статията).

edit1: Прегледай и /var/log/syslog за нещо по въпроса. Може tpb да се изпълнява, но да дава някаква грешка и да умира.





Титла: Rc.local в debian lenny
Публикувано от: lisik в Apr 16, 2008, 10:45
winman, не те подценявам, но да не би скрипт файла ти да не е изпълним. Може просто да си забравил :)





Титла: Rc.local в debian lenny
Публикувано от: winman в Apr 16, 2008, 14:03
Проблема се оказа комплексен. Освен, че rc.local не се изпълняваше, ами и tpb (ThinkPadButtons) не иска да работи. Тъй като винаги съм ползвал безпроблемно tpb, не обърнах внимание.

Наркос, благодаря! Благодарение на теб rc.local вече се изпълнява.

Neter, благодаря! В тъмна доба твоето предположение се оказа вярно и полезно. А и подробното ти обеснение със сигурност ще помогне на някой друг в бъдеще.

lisik, и на теб благодаря. Такива наивни грешки винаги се откриват най-трудно, та не е лошо да се напомнят. Въпреки, че в моя случай не беше така.

Затварям темата, rc.local проблема е решен. Остава да разбера защо tpb в Debian не работи.


Титла: Rc.local в debian lenny
Публикувано от: edmon в Apr 16, 2008, 17:02
така е написал един другар в нета:
http://modular.fas.harvard.edu/t42/

Thinkpad Buttons
I installed the tpb package:

   apt-get install tpb
   chmod a+rw /dev/nvram

To start it I use this script:

#!/bin/bash
exec tpb --osd=on --verbose --thinkpad="/usr/bin/konqueror" --wireless="/usr/bin/konsole -e /home/was/bin/hibernate" &

I have a script with those lines in my .kde/Autostart folder.





Титла: Rc.local в debian lenny
Публикувано от: tolostoi в Apr 16, 2008, 17:53
Все пак за протокола, откъде мислиш, че е проблема? На стабилният Дебиан си работи, имам тук нестабилен и при него работи rc.local, току що го пробвах понеже не ми се беше налагало да го ползвам. И на 2-те места си работи без да е правено каквото и да е. А при дебиан гледам че доста приложения си имат конфиг скрипт в /etc/default/ например
Примерен код
cat /etc/default/openvpn
# This is the configuration file for /etc/init.d/openvpn

#
# Start only these VPNs automatically via init script.
# Allowed values are "all", "none" or space separated list of
# names of the VPNs. If empty, "all" is assumed.
#
#AUTOSTART="all"
#AUTOSTART="none"
#AUTOSTART="home office"
#
# Refresh interval (in seconds) of default status files
# located in /var/run/openvpn.$NAME.status
# Defaults to 10, 0 disables status file generation
#
#STATUSREFRESH=10
#STATUSREFRESH=0

cat /etc/default/apache2
### htcacheclean settings ###

## run htcacheclean: yes, no, auto
## auto means run if /etc/apache2/mods-enabled/disk_cache.load exists
## default: auto
HTCACHECLEAN_RUN=auto

## run mode: cron, daemon
## run in daemon mode or as daily cron job
## default: daemon
HTCACHECLEAN_MODE=daemon

## cache size
HTCACHECLEAN_SIZE=300M

## interval: if in daemon mode, clean cache every x minutes
HTCACHECLEAN_DAEMON_INTERVAL=120

## path to cache
## must be the same as in CacheRoot directive
HTCACHECLEAN_PATH=/var/cache/apache2/mod_disk_cache

## additional options:
## -n : be nice
## -t : remove empty directories
HTCACHECLEAN_OPTIONS="-n"
и т.н. Първо там проверих дали не пише нещо, но нямаше  :(


Титла: Rc.local в debian lenny
Публикувано от: winman в Apr 16, 2008, 18:13
tolostoi

Ако питаш мен, на много места в нета прочетох, че трябва да активирам изпълнението на rc.local Не знаех как, но благодарение на Наркос, научих. Защо преди това не е работило, не знам. Всъщност вече знам, но тогава и като гледах, не виждах. :) Все пак Дебиан ми е нова ОС и още се уча.

edmon,

Това съм го чел. Обаче проблема е друг. TPB при инсталация си инсталира всякакви скриптове и конфигурационни файлове. Винаги и навсякъде е работило от раз (понеже дефолт конфигурацията е това, което ползвам). Тук има проблем. Може би по-късно, или утре, ще пусна точно какво се инсталира и как. Има някакъв бъг, но не е свързан с хардуера ми, понеже същата версия на tpb работи на същата машина под Mandriva. Ще те помоля да хвърляш по едно око на темата. Може и да видиш пробл;ема, когато пусна подробностите.