diff --git a/Makefile b/Makefile index a8f3f5d..406c847 100644 --- a/Makefile +++ b/Makefile @@ -13,11 +13,12 @@ toolchain_wrkdir := $(wrkdir)/riscv-gnu-toolchain toolchain_dest := $(CURDIR)/toolchain buildroot_srcdir := $(srcdir)/buildroot -buildroot_wrkdir := $(wrkdir)/buildroot -buildroot_tar := $(buildroot_wrkdir)/images/rootfs.tar +buildroot_initramfs_wrkdir := $(wrkdir)/buildroot_initramfs +buildroot_initramfs_tar := $(buildroot_initramfs_wrkdir)/images/rootfs.tar +buildroot_initramfs_config := $(confdir)/buildroot_initramfs_config -sysroot_stamp := $(wrkdir)/.sysroot -sysroot := $(wrkdir)/sysroot +buildroot_initramfs_sysroot_stamp := $(wrkdir)/.buildroot_initramfs_sysroot +buildroot_initramfs_sysroot := $(wrkdir)/buildroot_initramfs_sysroot linux_srcdir := $(srcdir)/linux linux_wrkdir := $(wrkdir)/linux @@ -66,17 +67,22 @@ $(toolchain_dest)/bin/$(target)-gcc: $(toolchain_srcdir) $(MAKE) -C $(toolchain_wrkdir) sed 's/^#define LINUX_VERSION_CODE.*/#define LINUX_VERSION_CODE 263682/' -i $(toolchain_dest)/sysroot/usr/include/linux/version.h -$(buildroot_tar): $(buildroot_srcdir) $(RISCV)/bin/$(target)-gcc - $(MAKE) -C $< RISCV=$(RISCV) PATH=$(PATH) O=$(buildroot_wrkdir) riscv64_defconfig - $(MAKE) -C $< RISCV=$(RISCV) PATH=$(PATH) O=$(buildroot_wrkdir) +$(buildroot_initramfs_wrkdir)/.config: $(buildroot_srcdir) + rm -rf $(dir $@) + mkdir -p $(dir $@) + cp $(buildroot_initramfs_config) $@ + $(MAKE) -C $< RISCV=$(RISCV) PATH=$(PATH) O=$(buildroot_initramfs_wrkdir) olddefconfig -.PHONY: buildroot-menuconfig -buildroot-menuconfig: $(buildroot_srcdir) - $(MAKE) -C $< O=$(buildroot_wrkdir) menuconfig +$(buildroot_initramfs_tar): $(buildroot_srcdir) $(buildroot_initramfs_wrkdir)/.config $(RISCV)/bin/$(target)-gcc $(buildroot_initramfs_config) + $(MAKE) -C $< RISCV=$(RISCV) PATH=$(PATH) O=$(buildroot_initramfs_wrkdir) -$(sysroot_stamp): $(buildroot_tar) - mkdir -p $(sysroot) - tar -xpf $< -C $(sysroot) --exclude ./dev --exclude ./usr/share/locale +.PHONY: buildroot_initramfs-menuconfig +buildroot_initramfs-menuconfig: $(buildroot_srcdir) + $(MAKE) -C $< O=$(buildroot_initramfs_wrkdir) menuconfig + +$(buildroot_initramfs_sysroot_stamp): $(buildroot_initramfs_tar) + mkdir -p $(buildroot_initramfs_sysroot) + tar -xpf $< -C $(buildroot_initramfs_sysroot) --exclude ./dev --exclude ./usr/share/locale touch $@ $(linux_wrkdir)/.config: $(linux_defconfig) $(linux_srcdir) @@ -95,9 +101,9 @@ ifeq ($(ISA),$(filter rv32%,$(ISA))) $(MAKE) -C $(linux_srcdir) O=$(linux_wrkdir) ARCH=riscv olddefconfig endif -$(vmlinux): $(linux_srcdir) $(linux_wrkdir)/.config $(sysroot_stamp) +$(vmlinux): $(linux_srcdir) $(linux_wrkdir)/.config $(buildroot_initramfs_sysroot_stamp) $(MAKE) -C $< O=$(linux_wrkdir) \ - CONFIG_INITRAMFS_SOURCE="$(confdir)/initramfs.txt $(sysroot)" \ + 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 \ @@ -162,8 +168,8 @@ $(rootfs): truncate --size=1G $@ mkfs.ext4 $@ -.PHONY: sysroot vmlinux bbl -sysroot: $(sysroot) +.PHONY: buildroot_initramfs_sysroot vmlinux bbl +buildroot_initramfs_sysroot: $(buildroot_initramfs_sysroot) vmlinux: $(vmlinux) bbl: $(bbl) diff --git a/conf/buildroot_initramfs_config b/conf/buildroot_initramfs_config new file mode 100644 index 0000000..bf2a6d3 --- /dev/null +++ b/conf/buildroot_initramfs_config @@ -0,0 +1,19 @@ +BR2_riscv64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_PATH="$(RISCV)" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(ARCH)-unknown-linux-gnu" +BR2_TOOLCHAIN_EXTERNAL_GCC_7=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +# BR2_TOOLCHAIN_EXTERNAL_INET_RPC is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_2r1=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_DROPBEAR_CLIENT=y +BR2_PACKAGE_DROPBEAR_SMALL=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_TARGET_GENERIC_ROOT_PASSWD="sifive" +BR2_SYSTEM_DHCP="eth0" +BR2_PACKAGE_PCIUTILS=y