RootFS over NFS
boot-log.txt
server side:
/etc/exports (duh)
/etc/dhcpd.conf (duh)
rsync -av freedom-u-sdk/work/buildroot_initramfs_sysroot/ /envy/dj/sifive/rootfs/
kernel:
root=/dev/nfs nfsroot=172.31.3.1:/envy/dj/sifive/rootfs,nfsvers=3,tcp ip=dhcp nfsrootdebug earlyprintk
freedom-u-sdk changes
diff --git a/Makefile b/Makefile
index 7f528cb..b38e207 100644
--- a/Makefile
+++ b/Makefile
@@ -123,11 +123,15 @@ endif
$(vmlinux): $(linux_srcdir) $(linux_wrkdir)/.config $(buildroot_initramfs_sysroot_stamp)
$(MAKE) -C $< O=$(linux_wrkdir) \
- CONFIG_INITRAMFS_SOURCE="$(confdir)/initramfs.txt $(buildroot_initramfs_sysroot)" \
- CONFIG_INITRAMFS_ROOT_UID=$(shell id -u) \
- CONFIG_INITRAMFS_ROOT_GID=$(shell id -g) \
ARCH=riscv \
vmlinux
+#$(vmlinux): $(linux_srcdir) $(linux_wrkdir)/.config $(buildroot_initramfs_sysroot_stamp)
+ #$(MAKE) -C $< O=$(linux_wrkdir) \
+ #CONFIG_INITRAMFS_SOURCE="$(confdir)/initramfs.txt $(buildroot_initramfs_sysroot)" \
+ #CONFIG_INITRAMFS_ROOT_UID=$(shell id -u) \
+ #CONFIG_INITRAMFS_ROOT_GID=$(shell id -g) \
+ #ARCH=riscv \
+ #vmlinux
$(vmlinux_stripped): $(vmlinux)
$(target)-strip -o $@ $<
diff --git a/conf/linux_defconfig b/conf/linux_defconfig
index 7e703d5..99193bf 100644
--- a/conf/linux_defconfig
+++ b/conf/linux_defconfig
@@ -53,6 +53,8 @@ CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_STORAGE=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_AX8817X=y
CONFIG_VIRTIO_MMIO=y
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_EXT3_FS=y
@@ -61,9 +63,17 @@ CONFIG_TMPFS=y
# CONFIG_MISC_FILESYSTEMS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE="earlyprintk"
+CONFIG_CMDLINE="root=/dev/nfs nfsroot=172.31.3.1:/envy/dj/sifive/rootfs,nfsvers=3,tcp ip=dhcp nfsrootdebug earlyprintk"
+CONFIG_CMDLINE_OVERRIDE=n
CONFIG_PRINTK_TIME=y
CONFIG_STRIP_ASM_SYMS=y
CONFIG_DEBUG_SECTION_MISMATCH=y
CONFIG_STACKTRACE=y
# CONFIG_CRYPTO_HW is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V2=n
+CONFIG_NFS_V3=y
+CONFIG_IP_PNP=y
+CONFIG_ROOT_NFS=y
+CONFIG_IP_PNP_DHCP=y
kernel changes
diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
index 53d06e08160d..8bb33074006d 100644
--- a/arch/riscv/kernel/setup.c
+++ b/arch/riscv/kernel/setup.c
@@ -214,6 +214,10 @@ static void __init setup_bootmem(void)
}
}
+#ifdef CONFIG_CMDLINE_BOOL
+static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE;
+#endif
+
void __init setup_arch(char **cmdline_p)
{
#if defined(CONFIG_EARLY_PRINTK)
@@ -222,6 +226,10 @@ void __init setup_arch(char **cmdline_p)
register_console(early_console);
}
#endif
+#ifdef CONFIG_CMDLINE_BOOL
+ strlcpy(boot_command_line, default_command_line, COMMAND_LINE_SIZE);
+#endif
+
*cmdline_p = boot_command_line;
parse_early_param();