Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 325693 - Service `checkfs' needs non existant service `checkroot'
Summary: Service `checkfs' needs non existant service `checkroot'
Status: RESOLVED WORKSFORME
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] baselayout (show other bugs)
Hardware: All Linux
: High normal
Assignee: OpenRC Team
URL:
Whiteboard:
Keywords:
Depends on: 325691
Blocks:
  Show dependency tree
 
Reported: 2010-06-26 11:49 UTC by DEMAINE Benoît-Pierre, aka DoubleHP
Modified: 2010-10-30 17:04 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
/tmp/emerge--info (emerge--info,15.72 KB, text/plain)
2010-06-26 11:51 UTC, DEMAINE Benoît-Pierre, aka DoubleHP
Details

Note You need to log in before you can comment on or make changes to this bug.
Description DEMAINE Benoît-Pierre, aka DoubleHP 2010-06-26 11:49:58 UTC
This may be a baselout2, openrc, or portage 2.2 bug.

I have this message at boot time; it does not appear in /var/log/rc.log, but right now, I have it in an email sent by cron (I REALLY wonder how cron could need checkfs ... never mind).

Here is compleet cron mail:

########################################################################

Sat Jun 26 12:20:01 CEST 2010
 
        *** Do we have latest kernel ?
 
Yes, Ok.
 
        *** Arch_to_local
 
Not doing cron because date($((${D}%3))= 2 .
 
        *** End.
 
/lib64/rc/sh/rc-functions.sh: line 90: shell_var: command not found
Service `checkfs' needs non existant service `checkroot'

 * start-stop-daemon: /usr/sbin/munin-node is already running

##################################################################

Here is my /etc/cron.daily/local.cron

#!/bin/sh

/bin/date
/bin/echo " "
/bin/echo "        *** Do we have latest kernel ?"
/bin/echo " "

#/bin/mount /boot/

/bin/ls /boot/ \
        | /bin/grep `ls -l /usr/src/ | /bin/grep "linux ->" | /usr/bin/cut -d '>' -f2 | /bin/sed 's/ linux-//'` \
        | /bin/grep -e "kernel" -e "vmlinuz" >/dev/null \
        && /bin/echo "Yes, Ok." \
        || /bin/echo -e '\n*****\n*****\n* NO : A new kernel is available; please compile it !\n*****\n*****\n*****\n*****'

#/bin/umount /boot/

/bin/echo " "
/bin/echo "        *** Arch_to_local"
/bin/echo " "

D=$(/bin/date +%-d)
if [ "$((${D}%3))" == "1" ]
then
        /opt/doublehp/sbin/Arch_to_local
else
        echo "Not doing cron because date(\$((\${D}%3))= $((${D}%3)) ."
fi

/bin/echo " "
/bin/echo "        *** End."
/bin/echo " "

... so, all I know is that the problem is not really in my cron.local ... and I wonder why cron.daily want's to restart munin. Any way, munin is a system service for me (required by /etc/runlevels/default/ ), and it had failed to start officially . See bug 325691 .

Whatever cron is related to munin OR NOT, i have this checkfs/checkroot message at boot time, just before mountall.

This may explain a bit:
uranus ~ # ls /etc/cron.daily/
local.cron  logrotate.cron  makewhatis  slocate
uranus ~ #

maybe logrotate tries to restart munin after rotation ?
Comment 1 DEMAINE Benoît-Pierre, aka DoubleHP 2010-06-26 11:51:17 UTC
Created attachment 236633 [details]
/tmp/emerge--info
Comment 2 DEMAINE Benoît-Pierre, aka DoubleHP 2010-06-26 12:51:19 UTC
may be related with bug 325691 ?
Comment 3 Jeroen Roovers (RETIRED) gentoo-dev 2010-07-19 19:15:34 UTC
Looks like something's wrong with some file in /etc/init.d. Could you grep that for "checkfs" as well as "checkroot"?
Comment 4 DEMAINE Benoît-Pierre, aka DoubleHP 2010-07-19 19:48:08 UTC
dhp@uranus ~ $ grep checkfs /etc/init.d/*
/etc/init.d/device-mapper:              before checkfs fsck
/etc/init.d/dmcrypt:    before checkfs fsck
/etc/init.d/lvm:                before checkfs fsck
/etc/init.d/mdraid:             before checkfs fsck
/etc/init.d/udev:               before checkfs fsck
dhp@uranus ~ $ grep checkroot /etc/init.d/*
/etc/init.d/checkfs:    need checkroot modules
/etc/init.d/crypto-loop:                need checkroot
/etc/init.d/lvm:                # dependency-cycles with checkroot (before *)
/etc/init.d/mdraid:             # dependency-cycles with checkroot (before *)
dhp@uranus ~ $
Comment 5 William Hubbs gentoo-dev 2010-07-20 19:52:16 UTC
Demaine,

according to your emerge --info, you are running baselayout-2 and openrc.  checkfs is not part of openrc, so I'm not sure why it is on your system.  Can you please post the output of the following commands:

ls -l /etc/init.d/checkfs
equery b /etc/init.d/checkfs

Thanks,

William
Comment 6 DEMAINE Benoît-Pierre, aka DoubleHP 2010-07-20 21:10:40 UTC
dhp@uranus ~ $ ls -l /etc/init.d/checkfs
-rwxr-xr-x 1 root root 1515 Jun 25 22:56 /etc/init.d/checkfs
dhp@uranus ~ $ equery b /etc/init.d/checkfs
[ Searching for file(s) /etc/init.d/checkfs in *... ]
dhp@uranus ~ $
Comment 7 DEMAINE Benoît-Pierre, aka DoubleHP 2010-07-20 21:13:03 UTC
dhp@uranus ~ $ ls -l /etc/init.d/fsck
-rwxr-xr-x 1 root root 2637 Jul 10 19:28 /etc/init.d/fsck
dhp@uranus ~ $ equery b /etc/init.d/fsck
[ Searching for file(s) /etc/init.d/fsck in *... ]
sys-apps/openrc-0.6.1-r1 (/etc/init.d/fsck)
dhp@uranus ~ $

So, the question is rather: why do some init scripts depend on fsck ? maybe i should just rebuild the complaining services, and hope their new init scripts will use dep fsck instead of checkfs ?

dhp@uranus ~ $ grep checkfs /etc/init.d/*
/etc/init.d/device-mapper:              before checkfs fsck
/etc/init.d/dmcrypt:    before checkfs fsck
/etc/init.d/lvm:                before checkfs fsck
/etc/init.d/mdraid:             before checkfs fsck
/etc/init.d/udev:               before checkfs fsck
dhp@uranus ~ $

Comment 8 William Hubbs gentoo-dev 2010-08-04 19:31:40 UTC
Demaine,

sorry I took so long to get back to you on this.

I checked my system, and checkfs and checkroot are definitely not part
of openrc.
You should instead have root and fsck.  

If you can do these commands and get no output:

equery b /etc/init.d/checkroot
equery b /etc/init.d/checkfs

you can remove these two scripts since you are running openrc.

Please report back whether you can remove these scripts, and if you can
do so and let us know if there is still an issue.

Comment 9 DEMAINE Benoît-Pierre, aka DoubleHP 2010-08-04 19:46:52 UTC
Several modules depend on chekfs:

dhp@uranus /etc/init.d $ grep -n checkfs *
device-mapper:10:               before checkfs fsck
dmcrypt:7:      before checkfs fsck
lvm:10:         before checkfs fsck
mdraid:10:              before checkfs fsck
udev:23:                before checkfs fsck
dhp@uranus /etc/init.d $

In particular, I need mdraid and udev (lvm is not started at boot time).

I have fixed the boot message with this modification in checkfs
depend() {
#       need checkroot modules
        need modules    # modified by Doublehp
}

so that deps for udev and mdraid are satisfied, but no more warning.

I still wonder how I came to this situation.

You ask me to remove them both; checkroot is not needed anymore for me. But checkfs is still needed. It is run at boot time, and performs sanity checks. It's a dep of udev.

If i remove it, udev deps won't be satisfied, i will have a warning, and, sanity checks won't be performed anymore.

Or i need to manualy edit many other scripts. Do i need to replace all checkfs deps by fsck ?

Does my broken chekroot explain why I have this strange configuration ?
dhp@uranus /etc/init.d $ df -h
Filesystem            Size  Used Avail Use% Mounted on
rootfs                 28G   13G   15G  47% /
/dev/root              28G   13G   15G  47% /
[we don't mind]
dhp@uranus /etc/init.d $
while  i pass to kernel root=/dev/md5 and fstab contains
LABEL=Gentoo / ext4 noatime 0 1
?

There have been some broken migration script somewhere.
Comment 10 DEMAINE Benoît-Pierre, aka DoubleHP 2010-08-04 19:47:21 UTC
forgot to paste answer:

uranus ~ # equery b /etc/init.d/checkroot
[ Searching for file(s) /etc/init.d/checkroot in *... ]

uranus ~ #
uranus ~ # equery b /etc/init.d/checkfs
[ Searching for file(s) /etc/init.d/checkfs in *... ]
uranus ~ #
Comment 11 Jory A. Pratt gentoo-dev 2010-10-24 05:12:48 UTC
Are you still having issues with this, if so please ensure you post all relevant info such as udev version mdraid info, these will be key in resolving your problem.
Comment 12 DEMAINE Benoît-Pierre, aka DoubleHP 2010-10-29 13:38:12 UTC
Even after reverting to old scripts, can't repro.
Comment 13 DEMAINE Benoît-Pierre, aka DoubleHP 2010-10-29 21:20:24 UTC
Ha ha !!! Nothing at boot time, but, things in cron !!! 

Seems like some cron sent me an email:

Service `checkfs' needs non existant service `checkroot'

No clue why, or how. Probably logrotate that needed to restart some service after log rotation ?

uranus init.d # /etc/init.d/munin-node restart
 * Caching service dependencies ...
Service `checkfs' needs non existant service `checkroot'   [ ok ]
 * Stopping munin-node ...                                 [ ok ]
 * Starting munin-node ...                                 [ ok ]
uranus init.d #


At the moment:
uranus init.d # head checkfs
#!/sbin/runscript
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

depend() {
        need checkroot modules
#       need modules    # modified by Doublehp
}

The first one is the original Gentoo line. The second one is the one I had for a few months to avoid having messages around. Now we have a proof the bug is still standing, I will reactivate the later one.
Comment 14 William Hubbs gentoo-dev 2010-10-30 17:04:13 UTC
Hi Demaine,

According to what you posted in comment #10, checkroot and checkfs are not owned by any package, so I don't know why they are still on your system at all.  They should have both been removed when you upgraded from baselayout-1 to openrc.

In comment #4, all of the dependencies on checkfs look like this:

before checkfs fsck

Since checkfs and fsck are both mentioned either of them will satisfy this.

The code in crypto-loop looks like this:

if [ -x /etc/init.d/root ]; then
    need root
else
    need checkroot
fi

So, again, crypto-loop checks for both.

You should be fine removing checkfs and checkroot.

William