Bug 710388

Summary: cannot create /root on separate volume
Product: Red Hat Enterprise Linux 6 Reporter: Tomasz Kepczynski <tomasz.kepczynski>
Component: anacondaAssignee: Anaconda Maintenance Team <anaconda-maint-list>
Status: CLOSED WONTFIX QA Contact: Release Test Team <release-test-team>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.1   
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-06-09 20:26:29 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Tomasz Kepczynski 2011-06-03 09:44:49 UTC
Description of problem:
As in title really. I attempted to put /root on separate volume during install and both attempts (interactive install and kickstart) threw at me critical partitioning error: "This mount point is invalid. The /root directory must be on / filesystem.".
Well, this is my job to decide what goes where, don't make me redundant and I don't see any technical reason why this shouldn't be allowed.

Version-Release number of selected component (if applicable):
anaconda 13.21.117

How reproducible:
Always
 
Actual results:
anaconda does not allow putting /root on separate partition/volume

Expected results:
anaconda allows putting /root on separate partition/volume

Additional info:
Additionally I see two scenarios where separate /root volume is really beneficial:
1. read only / filesystem
2. test setup with many OSes where you want to share root home between them (and yes, I used to have setups with several Linux installations and keeping root in sync is a nightmare).
SLES has no problems putting /root on separate partition.

Comment 2 David Cantrell 2011-06-09 20:26:29 UTC
/root is the root user account's home directory on RHEL systems.  anaconda does not permit having /root on a filesystem other than /.  The same is true for /bin, /dev, /sbin, /etc, and /lib.

Comment 3 Tomasz Kepczynski 2011-06-10 07:52:45 UTC
Could you at least explain WHY? I do understand the reasoning for /bin, /sbin, /etc, and /lib, but I don't for /root.

BTW /dev IS on separate filesystem:
gklab-63-001:~> grep /dev /proc/mounts
udev /dev devtmpfs rw,seclabel,relatime,size=4021724k,nr_inodes=1005431,mode=755 0 0

Comment 4 David Cantrell 2011-06-13 21:44:47 UTC
Well, /dev is virtual.  But the /dev directory contains a handful of basic device nodes that can be used before udev starts up.

Before we started using /root for root's home directory, we used /.  So it followed that root's home directory would live on the root volume, despite being in a subdirectory.  It makes sense for the root user to be able to log in and have access to his or her home directory in instances of system problems.  Moving /root to a separate filesystem works against that safeguard.  So I guess I don't see the advantage.

"Because SuSE does it" is not a sufficient justification or use case.  Why are you wanting to put /root on its own filesystem?

Comment 5 Tomasz Kepczynski 2011-06-14 06:48:50 UTC
> It makes sense for the root user to be able to log in and have access to his or her home directory in instances of system problems. Moving /root to a separate filesystem works against that safeguard.  So I guess I don't see the advantage.

Ok, let's discuss this:
1. In case of problems with a system you are very likely to go into single user mode. Then you will be logged in / directory and not /root, so /root availability is not strictly speaking a requirement.
2. If /root is available, then it is mounted in single user mode (yes, I've just checked this).
3. Now, if system cannot mount /root at this stage there are two possibilities: a) it's on a network and I absolutely do not suggest putting /root there (anyway, I don't think partitioning screen in anaconda allows putting any directory on a network) b) volume with /root is so corrupted that if it was on / we would be in much bigger trouble.

So for me, the reasonable requirement is to put /root on local filesystem (this includes iSCSI, FC and FCoE targets if / is there), /root on the same filesystem as / is too strict.

Now I already explained why I want to separate this:
1. read only / filesystem.
2. I want to share /root between several OSes I have on the machine (multiboot).
3. You can extend the previous one to sharing /root with VMs (when used with appropriate filesystem like gfs2).
4. Additionally you don't pollute / with crap which tends to gather in home directories (and root will eat all free space, including the reserved space), and this itself can sometimes avoid boot-up/login problems.

Comment 6 David Cantrell 2011-07-05 20:24:22 UTC
In Fedora we follow the FHS unless there is agreement to do something different.  See:

http://fedoraproject.org/wiki/Packaging:Guidelines#Filesystem_Layout

Here's what the FHS has to say about /root:

http://www.pathname.com/fhs/pub/fhs-2.3.html#ROOTHOMEDIRECTORYFORTHEROOTUSER

And the footnote:

http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1037

The first sentence of the footnote is more or less my point:

"If the home directory of the root account is not stored on the root partition it will be necessary to make certain it will default to / if it can not be located."

If we change anaconda to allow /root on a separate filesystem, will Fedora still meet this FHS requirement?  I don't know, but I think I'm safe in saying "maybe".  I'm sure there is software in Fedora that assumes /root is on /, so for this change to really happen, the entire distribution needs to be audited to ensure it can handle /root on a separate filesystem.