Agathoklis D. Hatzimanikas a.hatzim at
Tue Jan 5 19:42:32 PST 2010

Hi Andy,

On Wed, Jan 06, at 12:12 Andrew Benton wrote:
> Hello,
> I've been using one of the newer file systems in the kernel, NILFS2, on 
> my Dell netbook. It has some features which work well on flash memory 
> but it also has some quirks which made it difficult to set up at first.
> When you mount a NILFS2 partition it starts a daemon (/sbin/nilfs-
> cleanerd) which deletes old files. The problem is that nilfs-cleanerd 
> looks in /proc/mounts to see which device node in /dev it should be 
> working on. If you cat /proc/mounts you'll see that / is listed as 
> /dev/root which doesn't exist on an LFS system so nilfs-cleanerd quits, 
> no garbage collection gets done and the partition fills up until you get 
> a "no space left on the device" error. The solution I devised is to 
> create a symlink /dev/root pointing at the root partition. This has to 
> be done before the filesystem is mounted. The kernel knows where the 
> root is because it was passed it as an argument by grub, it's available 
> in /proc/cmdline
> So I hacked at one of the bootscripts, /etc/rc.d/init.d/mountfs, and 
> added a line like this just before it mounts /
> ln -s $(awk '{ print $1; print $2; print $3; print $4; print $5 }' 
> /proc/cmdline | sed '/dev/!d;s at root=/dev/@@') /dev/root
> That works fine and causes no problems, even on systems which don't use 
> NILFS2, but it isn't pretty. Is there a simpler way to get awk to print 
> all the fields at one go? Or would some other tool (perl?) be more 
> appropriate? That's the main reason I wrote this email, for a bit of 
> scripting advice.

Using your pattern, maybe you can do something like, 

ln -sv $(sed 's at root=/dev/\([^ ]*\).*@\1@' /proc/cmdline) /dev/root

> Andy


More information about the lfs-dev mailing list