Skip to content

Commit

Permalink
feat(rootfs): support windows rootfs (#68)
Browse files Browse the repository at this point in the history
This PR is not complete, it simply copies the configuration of applehv-rootfs. The main focus is to improve the build script for Windows.

Signed-off-by: Kevin Cui <[email protected]>
  • Loading branch information
BlackHole1 authored May 11, 2024
1 parent 43c0666 commit 850f83d
Show file tree
Hide file tree
Showing 5 changed files with 385 additions and 12 deletions.
2 changes: 2 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

- [ ] applehv-rootfs-amd64
- [ ] applehv-rootfs-arm64
- [ ] wsl-rootfs-amd64
- [ ] wsl-rootfs-arm64
- [ ] initrd-amd64
- [ ] initrd-arm64
- [ ] kernel-amd64
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Test

on:
pull_request:
pull_request_target:
branches:
- main
types:
Expand Down
59 changes: 48 additions & 11 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ ROOTDIR := $(realpath .)
##@ Build commands
##@

.PHONY: build-applehv-rootfs-% build-kernel-% build-initrd-% build-amd64 build-arm64 build
.PHONY: build-wsl-rootfs-% build-applehv-rootfs-% build-kernel-% build-initrd-% build-amd64 build-arm64 build

build-wsl-rootfs-amd64 build-wsl-rootfs-arm64: build-wsl-rootfs-%: ##@ Build wsl rootfs with specified architecture
$(eval _ARCH := $(firstword $(subst -, ,$*)))
$(MAKE) -C buildroot O=$(ROOTDIR)/out/wsl_rootfs/$(_ARCH) all

build-applehv-rootfs-amd64 build-applehv-rootfs-arm64: build-applehv-rootfs-%: ##@ Build applehv rootfs with specified architecture
$(eval _ARCH := $(firstword $(subst -, ,$*)))
Expand All @@ -26,13 +30,15 @@ build-initrd-amd64 build-initrd-arm64: build-initrd-%: ##@ Build initrd with spe

build-amd64: ##@ Build all amd64
$(MAKE) build-kernel-amd64
$(MAKE) build-applehv-rootfs-amd64
$(MAKE) build-initrd-amd64
$(MAKE) build-applehv-rootfs-amd64
$(MAKE) build-wsl-rootfs-amd64

build-arm64: ##@ Build all arm64
$(MAKE) build-kernel-arm64
$(MAKE) build-applehv-rootfs-arm64
$(MAKE) build-initrd-arm64
$(MAKE) build-applehv-rootfs-arm64
$(MAKE) build-wsl-rootfs-arm64

build: ##@ Build all arch linux kernel and rootfs and initrd
$(MAKE) build-amd64
Expand All @@ -42,7 +48,11 @@ build: ##@ Build all arch linux kernel and rootfs and initrd
##@ Config commands
##@

.PHONY: nconfig-applehv-rootfs-% nconfig-initrd-% nconfig-kernel-%
.PHONY: nconfig-wsl-rootfs-% nconfig-applehv-rootfs-% nconfig-initrd-% nconfig-kernel-%

nconfig-wsl-rootfs-amd64 nconfig-wsl-rootfs-arm64: nconfig-wsl-rootfs-%: ##@ Use nconfig configure wsl rootfs with specified
$(eval _ARCH := $(firstword $(subst -, ,$*)))
$(MAKE) -C buildroot O=$(ROOTDIR)/out/wsl_rootfs/$(_ARCH) nconfig

nconfig-applehv-rootfs-amd64 nconfig-applehv-rootfs-arm64: nconfig-applehv-rootfs-%: ##@ Use nconfig configure applehv rootfs with specified
$(eval _ARCH := $(firstword $(subst -, ,$*)))
Expand All @@ -60,7 +70,11 @@ nconfig-kernel-amd64 nconfig-kernel-arm64: nconfig-kernel-%: ##@ Use nconfig con
$(MAKE) -C kernel O=$(ROOTDIR)/out/kernel/amd64 nconfig; \
fi;

.PHONY: defconfig-applehv-rootfs-% defconfig-initrd-% defconfig-kernel-%
.PHONY: defconfig-wsl-rootfs-% defconfig-applehv-rootfs-% defconfig-initrd-% defconfig-kernel-%

defconfig-wsl-rootfs-amd64 defconfig-wsl-rootfs-arm64: defconfig-wsl-rootfs-%: ##@ Use defconfig configure wsl rootfs
$(eval _ARCH := $(firstword $(subst -, ,$*)))
$(MAKE) -C buildroot O=$(ROOTDIR)/out/wsl_rootfs/$(_ARCH) BR2_EXTERNAL=$(ROOTDIR)/buildroot_external wsl_rootfs_$(_ARCH)_defconfig

defconfig-applehv-rootfs-amd64 defconfig-applehv-rootfs-arm64: defconfig-applehv-rootfs-%: ##@ Use defconfig configure applehv rootfs with specified
$(eval _ARCH := $(firstword $(subst -, ,$*)))
Expand All @@ -82,7 +96,11 @@ defconfig-kernel-amd64 defconfig-kernel-arm64: defconfig-kernel-%: ##@ Use defco
$(MAKE) -C kernel O=$(ROOTDIR)/out/kernel/$(_ARCH) kernel_$(_ARCH)_defconfig; \
fi;

.PHONY: savedefconfig-applehv-rootfs-% savedefconfig-initrd-% savedefconfig-kernel-%
.PHONY: savedefconfig-wsl-rootfs-% savedefconfig-applehv-rootfs-% savedefconfig-initrd-% savedefconfig-kernel-%

savedefconfig-wsl-rootfs-amd64 savedefconfig-wsl-rootfs-arm64: savedefconfig-wsl-rootfs-%: ##@ Use savedefconfig configure wsl rootfs with specified
$(eval _ARCH := $(firstword $(subst -, ,$*)))
$(MAKE) -C buildroot O=$(ROOTDIR)/out/wsl_rootfs/$(_ARCH) BR2_EXTERNAL=$(ROOTDIR)/buildroot_external savedefconfig

savedefconfig-applehv-rootfs-amd64 savedefconfig-applehv-rootfs-arm64: savedefconfig-applehv-rootfs-%: ##@ Use savedefconfig configure applehv rootfs with specified
$(eval _ARCH := $(firstword $(subst -, ,$*)))
Expand All @@ -105,7 +123,16 @@ savedefconfig-kernel-amd64 savedefconfig-kernel-arm64: savedefconfig-kernel-%: #
##@ Custom commands
##@

.PHONY: applehv-rootfs-% initrd-% kernel-%
.PHONY: wsl-rootfs-% applehv-rootfs-% initrd-% kernel-%

wsl-rootfs-amd64 wsl-rootfs-arm64: wsl-rootfs-%: ##@ Execute custom command in wsl wsl rootfs with specified architecture
$(eval _ARCH := $(firstword $*))
@if [ "$(CMD)" != "" ]; then \
$(MAKE) -C buildroot O=$(ROOTDIR)/out/wsl_rootfs/$(_ARCH) $(CMD); \
else \
printf "Please specify a CMD param\n" \
exit 1; \
fi;

applehv-rootfs-amd64 applehv-rootfs-arm64: applehv-rootfs-%: ##@ Execute custom command in applehv rootfs with specified architecture
$(eval _ARCH := $(firstword $*))
Expand Down Expand Up @@ -138,7 +165,11 @@ kernel-amd64 kernel-arm64: kernel-%: ##@ Execute custom command in kernel with s
##@ Clean build files commands
##@

.PHONY: clean-applehv-rootfs-% clean-initrd-% clean-kernel-% clean-amd64 clean-arm64 clean
.PHONY: clean-wsl-rootfs-% clean-applehv-rootfs-% clean-initrd-% clean-kernel-% clean-amd64 clean-arm64 clean

clean-wsl-rootfs-amd64 clean-wsl-rootfs-arm64: clean-wsl-rootfs-%: ##@ Clean wsl rootfs build files with specified
$(eval _ARCH := $(firstword $(subst -, ,$*)))
$(MAKE) -C buildroot O=$(ROOTDIR)/out/wsl_rootfs/$(_ARCH) clean

clean-applehv-rootfs-amd64 clean-applehv-rootfs-arm64: clean-applehv-rootfs-%: ##@ Clean applehv rootfs build files with specified architecture
$(eval _ARCH := $(firstword $(subst -, ,$*)))
Expand All @@ -154,13 +185,15 @@ clean-kernel-amd64 clean-kernel-arm64: clean-kernel-%: ##@ Clean linux kernel bu

clean-amd64: ##@ Clean all amd64 build files
$(MAKE) clean-kernel-amd64
$(MAKE) clean-applehv-rootfs-amd64
$(MAKE) clean-initrd-amd64
$(MAKE) clean-applehv-rootfs-amd64
$(MAKE) clean-wsl-rootfs-amd64

clean-arm64: ##@ Clean all arm64 build files
$(MAKE) clean-kernel-arm64
$(MAKE) clean-applehv-rootfs-arm64
$(MAKE) clean-initrd-arm64
$(MAKE) clean-applehv-rootfs-arm64
$(MAKE) clean-wsl-rootfs-arm64

clean: ##@ Clean all build files
$(MAKE) clean-amd64
Expand All @@ -170,7 +203,11 @@ clean: ##@ Clean all build files
##@ Misc commands
##@

.PHONY: print-outpath-initrd-% print-outpath-kernel-% print-outpath-applehv-rootfs-% help
.PHONY:print-outpath-wsl-rootfs-% print-outpath-initrd-% print-outpath-kernel-% print-outpath-applehv-rootfs-% help

print-outpath-wsl-rootfs-amd64 print-outpath-wsl-rootfs-arm64: print-outpath-wsl-rootfs-%: ##@ Print out path of specified architecture
$(eval _ARCH := $(firstword $(subst -, ,$*)))
@echo -n $(ROOTDIR)/out/wsl_rootfs/$(_ARCH)/images/rootfs.ext4

print-outpath-initrd-amd64 print-outpath-initrd-arm64: print-outpath-initrd-%: ##@ Print out path of specified architecture
$(eval _ARCH := $(firstword $(subst -, ,$*)))
Expand Down
167 changes: 167 additions & 0 deletions buildroot_external/configs/wsl_rootfs_amd64_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
BR2_x86_64=y
BR2_KERNEL_HEADERS_6_1=y
BR2_PACKAGE_GLIBC_UTILS=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_CCACHE=y
BR2_ENABLE_LTO=y
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_OVM_PATH)/patches"
BR2_SSP_NONE=y
BR2_TARGET_GENERIC_HOSTNAME="tiny"
BR2_TARGET_GENERIC_ISSUE="Welcome to Pod"
BR2_TARGET_GENERIC_PASSWD_SHA512=y
BR2_INIT_SYSTEMD=y
BR2_TARGET_GENERIC_ROOT_PASSWD="1"
BR2_SYSTEM_BIN_SH_BASH=y
BR2_SYSTEM_ENABLE_NLS=y
BR2_TARGET_LOCALTIME="PRC"
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_OVM_PATH)/board/ovm/chrony/rootfs-overlay/ $(BR2_EXTERNAL_OVM_PATH)/board/ovm/ssh/rootfs-overlay/ $(BR2_EXTERNAL_OVM_PATH)/board/ovm/ready/rootfs-overlay/ $(BR2_EXTERNAL_OVM_PATH)/board/ovm/net/rootfs-overlay/ $(BR2_EXTERNAL_OVM_PATH)/board/ovm/systemd/rootfs-overlay/ $(BR2_EXTERNAL_OVM_PATH)/board/ovm/vsock-guest-exec/rootfs-overlay/"
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_BUSYBOX_WATCHDOG=y
BR2_PACKAGE_GZIP=y
BR2_PACKAGE_LSOF=y
BR2_PACKAGE_FINDUTILS=y
BR2_PACKAGE_GREP=y
BR2_PACKAGE_SED=y
BR2_PACKAGE_AUTOFS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_FUSE2FS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_E2TOOLS=y
BR2_PACKAGE_FUSE_OVERLAYFS=y
BR2_PACKAGE_NTFS_3G=y
BR2_PACKAGE_NTFS_3G_NTFSPROGS=y
BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_SQUASHFS_LZ4=y
BR2_PACKAGE_SQUASHFS_LZMA=y
BR2_PACKAGE_SQUASHFS_LZO=y
BR2_PACKAGE_SQUASHFS_XZ=y
BR2_PACKAGE_SQUASHFS_ZSTD=y
BR2_PACKAGE_XFSPROGS=y
BR2_PACKAGE_ACPID=y
BR2_PACKAGE_HWDATA_IAB_OUI_TXT=y
BR2_PACKAGE_HWLOC=y
BR2_PACKAGE_LSHW=y
BR2_PACKAGE_LSSCSI=y
BR2_PACKAGE_MDADM=y
BR2_PACKAGE_MDEVD=y
BR2_PACKAGE_NVME=y
BR2_PACKAGE_PARTED=y
BR2_PACKAGE_PCIUTILS=y
BR2_PACKAGE_RTC_TOOLS=y
BR2_PACKAGE_SYSSTAT=y
BR2_PACKAGE_LIBZIP=y
BR2_PACKAGE_LZ4_PROGS=y
BR2_PACKAGE_SNAPPY=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBNSS=y
BR2_PACKAGE_LIBSODIUM=y
BR2_PACKAGE_LIBSSH2=y
BR2_PACKAGE_LIBSSH2_OPENSSL=y
BR2_PACKAGE_LIBXCRYPT=y
BR2_PACKAGE_NETTLE=y
# BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL is not set
# BR2_PACKAGE_LIBOPENSSL_UNSECURE is not set
BR2_PACKAGE_LIBNFS=y
BR2_PACKAGE_LIBSYSFS=y
BR2_PACKAGE_LOCKDEV=y
BR2_PACKAGE_LIBUSB=y
BR2_PACKAGE_LIBCURL=y
BR2_PACKAGE_LIBCURL_CURL=y
BR2_PACKAGE_SLIRP4NETNS=y
BR2_PACKAGE_JEMALLOC=y
BR2_PACKAGE_LIBATOMIC_OPS=y
BR2_PACKAGE_LIBBSD=y
BR2_PACKAGE_LIBCAP_TOOLS=y
BR2_PACKAGE_LIBCGROUP=y
BR2_PACKAGE_LIBCGROUP_TOOLS=y
BR2_PACKAGE_LIBEVENT=y
BR2_PACKAGE_LIBSIGSEGV=y
BR2_PACKAGE_LIBEDIT=y
BR2_PACKAGE_NCURSES_WCHAR=y
BR2_PACKAGE_NCURSES_TARGET_PROGS=y
BR2_PACKAGE_PCRE=y
BR2_PACKAGE_PCRE_UTF=y
BR2_PACKAGE_PCRE2_JIT=y
BR2_PACKAGE_READLINE_BRACKETED_PASTE=y
BR2_PACKAGE_TERMCOLOR=y
BR2_PACKAGE_CHRONY=y
BR2_PACKAGE_ETHTOOL=y
BR2_PACKAGE_IFPLUGD=y
BR2_PACKAGE_IFUPDOWN=y
BR2_PACKAGE_IPROUTE2=y
BR2_PACKAGE_IPUTILS=y
BR2_PACKAGE_NET_TOOLS=y
BR2_PACKAGE_OPENSSH=y
BR2_PACKAGE_SOCAT=y
BR2_PACKAGE_SPICE_PROTOCOL=y
BR2_PACKAGE_BASH_COMPLETION=y
BR2_PACKAGE_FILE=y
BR2_PACKAGE_GNUPG2_GPGV=y
BR2_PACKAGE_INOTIFY_TOOLS=y
BR2_PACKAGE_LOCKFILE_PROGS=y
BR2_PACKAGE_LOGROTATE=y
BR2_PACKAGE_WHICH=y
BR2_PACKAGE_ACL=y
BR2_PACKAGE_COREUTILS=y
BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_PSMISC=y
BR2_PACKAGE_START_STOP_DAEMON=y
BR2_PACKAGE_SYSTEMD_BINFMT=y
BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y
BR2_PACKAGE_SYSTEMD_HIBERNATE=y
BR2_PACKAGE_SYSTEMD_LOGIND=y
# BR2_PACKAGE_SYSTEMD_NETWORKD is not set
BR2_PACKAGE_SYSTEMD_OOMD=y
BR2_PACKAGE_SYSTEMD_RANDOMSEED=y
# BR2_PACKAGE_SYSTEMD_RESOLVED is not set
BR2_PACKAGE_SYSTEMD_SYSUSERS=y
BR2_PACKAGE_SYSTEMD_USERDB=y
BR2_PACKAGE_TAR=y
BR2_PACKAGE_UTIL_LINUX_BINARIES=y
BR2_PACKAGE_UTIL_LINUX_FALLOCATE=y
BR2_PACKAGE_UTIL_LINUX_HARDLINK=y
BR2_PACKAGE_UTIL_LINUX_HWCLOCK=y
BR2_PACKAGE_UTIL_LINUX_KILL=y
BR2_PACKAGE_UTIL_LINUX_LAST=y
BR2_PACKAGE_UTIL_LINUX_LOGGER=y
BR2_PACKAGE_UTIL_LINUX_LOSETUP=y
BR2_PACKAGE_UTIL_LINUX_LSFD=y
BR2_PACKAGE_UTIL_LINUX_LSLOGINS=y
BR2_PACKAGE_UTIL_LINUX_LSMEM=y
BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT=y
BR2_PACKAGE_UTIL_LINUX_NEWGRP=y
BR2_PACKAGE_UTIL_LINUX_NOLOGIN=y
BR2_PACKAGE_UTIL_LINUX_PARTX=y
BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT=y
BR2_PACKAGE_UTIL_LINUX_RENAME=y
BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS=y
BR2_PACKAGE_UTIL_LINUX_SETPRIV=y
BR2_PACKAGE_UTIL_LINUX_UUIDD=y
BR2_PACKAGE_UTIL_LINUX_WRITE=y
BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y
BR2_PACKAGE_LESS=y
BR2_PACKAGE_NANO=y
BR2_TARGET_ROOTFS_EROFS=y
BR2_TARGET_ROOTFS_EROFS_LZ4HC=y
BR2_TARGET_ROOTFS_EROFS_PCLUSTERSIZE=40960
BR2_PACKAGE_HOST_E2TOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_PWGEN=y
BR2_PACKAGE_PODMAN=y
BR2_PACKAGE_PODMAN_DRIVER_BTRFS=y
BR2_PACKAGE_PODMAN_DRIVER_DEVICEMAPPER=y
BR2_PACKAGE_PODMAN_DRIVER_VFS=y
BR2_PACKAGE_GVFORWARDER=y
BR2_PACKAGE_VSOCK_GUEST_EXEC=y
Loading

0 comments on commit 850f83d

Please sign in to comment.