Date: Sat, 23 Aug 2008 16:38:13 -0400 From: "Aryeh Friedman" <aryeh.friedman@gmail.com> To: gary.jennejohn@freenet.de Cc: freebsd-hackers@freebsd.org Subject: Re: What is difference between /etc/rc called programs and ones called after login prompt shows up Message-ID: <bef9a7920808231338s79c78f14w1b8b65f31ffc6d33@mail.gmail.com> In-Reply-To: <20080823153354.2ed632d4@peedub.jennejohn.org> References: <bef9a7920808230334p4b509e18t1b8a84e9eb7c98b5@mail.gmail.com> <20080823153354.2ed632d4@peedub.jennejohn.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Aug 23, 2008 at 8:27 AM, Garrett Cooper <yanefbsd@gmail.com> wrote: > On Sat, Aug 23, 2008 at 3:34 AM, Aryeh Friedman > <aryeh.friedman@gmail.com> wrote: >> What is difference between /etc/rc.d called programs and ones called >> after login prompt shows up? >> >> The reason for asking is sysutils/fusefs-kmod gives an error if any >> mounts are attempted in /etc/rc but if the exactly the same command is >> issued by a user's .login/.xsession/etc. it works without problem >> (assuming proper permissions of course). >> >> a) Can anyone think of a reason why this would happen (the maintainer >> is non-responive) >> b) Is it possible to force something to run after /etc/rc exits but >> before init calls getty? > > a) Bad credentials? Dependencies not started (yet)? > b) You can enforce ordering, if that's what you want. See: > http://www.freebsd.org/doc/en/articles/rc-scripting/ a) I use a custom /etc/rc thus I can place the mount command anywhere I want. No matter where I place I get the same error it is *ONLY* after /etc/rc terminates.... I am b) I load fuse.ko in /boot/loader.con (copied it from /usr/local/modules to /boot/modules) here is dmesg proof it is loaded: > dmesg|grep fuse fuse4bsd: version 0.3.9-pre1, FUSE ABI 7.8 fuse4bsd: compiled against kernel config /usr/obj/usr/src/sys/MONSTER c) See a additionally to prove all the above here is my /etc/rc (the last 2 lines where added just to prove the point): #!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin swapon -a fsck -p mount -rw / mount -a hostname flosoft.no-ip.biz ifconfig re0 192.168.2.2 ifconfig lo0 127.0.0.1 route add default 192.168.2.1 named cupsd noip2 ntpdate pool.ntp.org sendmail -bd -q1m apachectl start moused -t auto -p /dev/ums0 vidcontrol -m on mount /mnt/win_c mount /mnt/win_d Here is /etc/fstab (set up as recommended in the docs for sysutils/fusefs-ntfs [which I am the co-maintainer of]): # Device Mountpoint FStype Options Dump Pass# /dev/ad8s2b none swap sw 0 0 /dev/ad8s2a / ufs rw 1 1 /dev/ad8s2e /tmp ufs rw 2 2 /dev/ad8s2f /usr ufs rw 2 2 /dev/ad8s2d /var ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 proc /proc procfs rw 0 0 linproc /compat/linux/proc linprocfs rw 0 0 /dev/ad8s1 /mnt/win_c ntfs-3g rw,late 0 0 /dev/da0s1 /mnt/win_d ntfs-3g rw,late 0 0 The patch to mount recommended in the fusefs-ntfs docs has been applied. In order to show that the mount commands work post call to getty but not before: When the above /etc/rc is run: swapon: adding /dev/ad8s2b as swap device /dev/ad8s2a: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/ad8s2a: clean, 164555 free (3603 frags, 20119 blocks, 1.4% fragmentation) /dev/ad8s2e: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/ad8s2e: clean, 253254 free (54 frags, 31650 blocks, 0.0% fragmentation) /dev/ad8s2f: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/ad8s2f: clean, 210848941 free (53253 frags, 26349461 blocks, 0.0% fragmenta tion) /dev/ad8s2d: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/ad8s2d: clean, 1970559 free (551 frags, 246251 blocks, 0.0% fragmentation) re0: link state changed to DOWN add net default: gateway 192.168.2.1 re0: link state changed to UP 23 Aug 09:02:00 ntpdate[48]: step time server 216.184.20.83 offset 0.794898 sec pid 54 (limits), uid 0: exited on signal 11 (core dumped) [Sat Aug 23 09:02:01 2008] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter fuse: failed to exec mount program: No such file or directory fuse: failed to mount file system: Unknown error: 0 fuse: failed to exec mount program: No such file or directory fuse: failed to mount file system: Unknown error: 0 FreeBSD/i386 (flosoft.no-ip.biz) (ttyv0) login: Here is the .login for root and the .xsession for my main user account (I use xdm): > more ~root/.login # $FreeBSD: src/etc/root/dot.login,v 1.22 2000/07/15 03:25:14 rwatson Exp $ # # .login - csh login script, read by login shell, after `.cshrc' at login. # # see also csh(1), environ(7). # # Uncomment to display a random cookie each login: # [ -x /usr/games/fortune ] && /usr/games/fortune -s echo Mounting C: mount /mnt/win_c echo Mounting D: mount /mnt/win_d > more ~aryeh/.xsession sudo mount /mnt/win_c& sudo mount /mnt/win_d& mixer 100 mixer pcm 100 xfce4-session Sudo is configured to allow 'aryeh' to no password access. And finally proof that the two methods do in fact work: > df -k Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/ad8s2a 507630 178520 288500 38% / devfs 1 1 0 100% /dev /dev/ad8s2e 507630 1124 465896 0% /tmp /dev/ad8s2f 443581998 21884342 386211098 5% /usr /dev/ad8s2d 4040654 99570 3617832 3% /var procfs 4 4 0 100% /proc linprocfs 4 4 0 100% /usr/compat/linux/proc /dev/fuse0 20972824 20196712 776112 96% /mnt/win_c /dev/fuse1 244196348 2463792 241732556 1% /mnt/win_d Thus it is clear that the *ONLY* difference between the /etc/rc calls and the post getty calls is when they are made. Thus the orginal question (i.e. I have verified this happens on any fusefs-* file system). I have attempted to call stuff via alternate methods like such as calling the mount_* directly and using equiv programs that have different names for each fusefs-* and did so with and without having the enteries in /etc/fstab > > -Garrett >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bef9a7920808231338s79c78f14w1b8b65f31ffc6d33>