Mounting root file system via SMB (cifs.ko)
===========================================

Written 2019 by Paulo Alcantara <palcantara@suse.de>
Written 2019 by Aurelien Aptel <aaptel@suse.com>

The CONFIG_CIFS_ROOT option enables experimental root file system
support over the SMB protocol via cifs.ko.

It introduces a new kernel command-line option called 'cifsroot='
which will tell the kernel to mount the root file system over the
network by utilizing SMB or CIFS protocol.

In order to mount, the network stack will also need to be set up by
using 'ip=' config option. For more details, see
Documentation/filesystems/nfs/nfsroot.txt.

A CIFS root mount currently requires the use of SMB1+UNIX Extensions
which is only supported by the Samba server. SMB1 is the older
deprecated version of the protocol but it has been extended to support
POSIX features (See [1]). The equivalent extensions for the newer
recommended version of the protocol (SMB3) have not been fully
implemented yet which means SMB3 doesn't support some required POSIX
file system objects (e.g. block devices, pipes, sockets).

As a result, a CIFS root will default to SMB1 for now but the version
to use can nonetheless be changed via the 'vers=' mount option.  This
default will change once the SMB3 POSIX extensions are fully
implemented.

Server configuration
====================

To enable SMB1+UNIX extensions you will need to set these global
settings in Samba smb.conf:

    [global]
    server min protocol = NT1
    unix extension = yes        # default

Kernel command line
===================

root=/dev/cifs

This is just a virtual device that basically tells the kernel to mount
the root file system via SMB protocol.

cifsroot=//<server-ip>/<share>[,options]

Enables the kernel to mount the root file system via SMB that are
located in the <server-ip> and <share> specified in this option.

The default mount options are set in fs/cifs/cifsroot.c.

server-ip
	IPv4 address of the server.

share
	Path to SMB share (rootfs).

options
	Optional mount options. For more information, see mount.cifs(8).

Examples
========

Export root file system as a Samba share in smb.conf file.

...
[linux]
	path = /path/to/rootfs
	read only = no
	guest ok = yes
	force user = root
	force group = root
	browseable = yes
	writeable = yes
	admin users = root
	public = yes
	create mask = 0777
	directory mask = 0777
...

Restart smb service.

# systemctl restart smb

Test it under QEMU on a kernel built with CONFIG_CIFS_ROOT and
CONFIG_IP_PNP options enabled.

# qemu-system-x86_64 -enable-kvm -cpu host -m 1024 \
  -kernel /path/to/linux/arch/x86/boot/bzImage -nographic \
  -append "root=/dev/cifs rw ip=dhcp cifsroot=//10.0.2.2/linux,username=foo,password=bar console=ttyS0 3"


1: https://wiki.samba.org/index.php/UNIX_Extensions
