1.\" Copyright (c) 2013 Marcel Moolenaar 2.\" Copyright (c) 2013 Craig Rodrigues 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 15.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24.\" SUCH DAMAGE. 25.\" 26.\" $FreeBSD$ 27.\" 28.\" 29.Dd October 17, 2013 30.Dt MOUNT.CONF 5 31.Os 32.Sh NAME 33.Nm mount.conf 34.Nd root file system mount configuration file 35.Sh SYNOPSIS 36.Pa /.mount.conf 37.Sh DESCRIPTION 38During the bootup process, the 39.Fx 40kernel will try to mount the root file system 41using the logic in the 42.Fn vfs_mountroot 43function in 44.Pa src/sys/kern/vfs_mountroot.c . 45The root mount logic can be described as follows: 46.Bl -enum 47.It 48The kernel will synthesize in memory a config file 49with default directives for mounting 50the root file system. 51The logic for this is in 52.Fn vfs_mountroot_conf0 . 53.It 54The kernel will first mount 55.Xr devfs 5 56as the root file system. 57.It 58Next, the kernel will parse the in-memory config file created in step 1 59and try to mount the actual root file system. 60See 61.Sx FILE FORMAT 62for the format of the config file. 63.It 64When the actual root file system is mounted, 65.Xr devfs 5 66will be re-mounted on the 67.Pa /dev 68directory. 69.It 70If a 71.Pa /.mount.conf 72file does not exist in the root file system which was 73just mounted, the root mount logic stops here. 74.It 75If a 76.Pa /.mount.conf 77file exists in the root file system which was just mounted, 78this file will be parsed, and the kernel will use this new config 79file to try to re-mount the root file system. 80See 81.Sx FILE FORMAT 82for the format of the config file. 83.It 84If the new root file system has a 85.Pa /.mount 86directory, the old root file system will be re-mounted 87on 88.Pa /.mount . 89.It 90The root mount logic will go back to step 4. 91.El 92.Pp 93The root mount logic is recursive, and step 8 will 94be repeated as long as each new root file system 95which is mounted has a 96.Pa /.mount.conf 97file. 98.Sh FILE FORMAT 99The kernel parses each line in 100.Pa .mount.conf 101and then tries to perform the action specified on that line as soon as it is parsed. 102.Bl -tag -width "XXXXXXXXXX" 103.It Ic # 104A line beginning with a # is a comment and is ignored. 105.It Ic {FS}:{MOUNTPOINT} {OPTIONS} 106The kernel will try to mount this in an 107operation equivalent to: 108.Bd -literal -offset indent 109mount -t {FS} -o {OPTIONS} {MOUNTPOINT} / 110.Ed 111.Pp 112If this is successfully mounted, 113further lines in 114.Pa .mount.conf 115are ignored. 116If all lines in 117.Pa .mount.conf 118have been processed and no root file system has been successfully 119mounted, then the action specified by 120.Ic .onfail 121is performed. 122.It Ic .ask 123When the kernel processes this line, a 124.Li mountroot> 125command-line prompt is displayed. 126At this prompt, the operator can enter the 127the root mount. 128.It Ic .md Ar file 129Create a memory backed 130.Xr md 4 131virtual disk, using 132.Ar file 133as the backing store. 134.It Ic .onfail Ar [panic|reboot|retry|continue] 135If after parsing all the lines in 136.Pa .mount.conf 137the kernel is unable to mount a root file system, 138the 139.Ic .onfail 140directive tells the kernel what action to perform. 141.It Ic .timeout Ar N 142Before trying to mount a root file system, 143if the root mount device does not exist, wait at most 144.Ar N 145seconds for the device to appear before trying to mount it. 146If 147.Ic .timeout 148is not specified, the default timeout is 3 seconds. 149.El 150.Sh EXAMPLES 151The following example 152.Pa .mount.conf 153will direct the kernel to try mounting the root file system 154first as an ISO CD9660 file system on 155.Pa /dev/cd0 , 156then if that does not work, as an ISO CD9660 file system on 157.Pa /dev/cd1 , 158and then if that does not work, as a UFS file system on 159.Pa /dev/ada0s1a . 160If that does not work, a 161.Li mountroot> 162command-line prompt will be displayed where the operator 163can manually enter the root file system to mount. 164Finally if that does not work, the kernel will panic. 165.Bd -literal -offset indent 166.Li .onfail panic 167.Li .timeout 3 168cd9660:/dev/cd0 ro 169.Li .timeout 0 170cd9660:/dev/cd1 ro 171.Li .timeout 3 172ufs:/dev/ada0s1a 173.Li .ask 174.Ed 175.Pp 176The following example 177.Pa .mount.conf 178will direct the kernel to create a 179.Xr md 4 180memory disk attached to the file 181.Pa /data/OS-1.0.iso 182and then mount the ISO CD9660 file system 183on the md device which was just created. 184The last line is a comment which is ignored. 185.Bd -literal -offset indent 186.Li .timeout 3 187.Li .md /data/OS-1.0.iso 188.Li cd9600:/dev/md# ro 189.Li # Can also use cd9660:/dev/md0 ro 190.Ed 191.Pp 192The following example 193.Pa .mount.conf 194will direct the kernel to create a 195.Xr md 4 196memory disk attached to the file 197.Pa /data/base.ufs.uzip 198and then mount the UFS file system 199on the md uzip device which was just created 200by the 201.Xr geom_uzip 4 202driver. 203.Bd -literal -offset indent 204.Li .md /data/base.ufs.uzip 205.Li ufs:/dev/md#.uzip ro 206.Li # Can also use ufs:/dev/md0.uzip ro 207.Ed 208.Pp 209The following example 210.Pa .mount.conf 211will direct the kernel to do a unionfs 212mount on a directory 213.Pa /jail/freebsd-8-stable 214which has a 215.Xr chroot 2 216environment. 217.Bd -literal -offset indent 218.Li .timeout 3 219.Li unionfs:/jail/freebsd-8-stable 220.Ed 221.Sh NOTES 222For each root file system which is mounted, a 223.Pa /dev 224directory 225.Em must 226exist so that the root mount logic can properly re-mount 227.Xr devfs 5 . 228If this directory does not exist, the system 229may hang during the bootup process. 230.Sh SEE ALSO 231.Xr nmount 2 , 232.Xr md 4 , 233.Xr boot.config 5 , 234.Xr fstab 5 , 235.Xr boot 8 , 236.Xr loader 8 , 237.Xr mount 8 238.Sh HISTORY 239The 240.Nm 241file first appeared in 242.Fx 9.0 . 243.Sh AUTHORS 244.An -nosplit 245The root mount logic in the 246.Fx 247kernel which parses 248.Pa /.mount.conf 249was written by 250.An Marcel Moolenaar Aq Mt marcel@FreeBSD.org . 251This man page was written by 252.An Craig Rodrigues Aq Mt rodrigc@FreeBSD.org . 253