diff --git a/0001-add-basic-riscv64-support.patch b/0001-add-basic-riscv64-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..30990cb565b9b2d773deb817f9e2c1bfbffba540 --- /dev/null +++ b/0001-add-basic-riscv64-support.patch @@ -0,0 +1,87 @@ +From e6930abda5451362c3c7779af961d8521399b735 Mon Sep 17 00:00:00 2001 +From: jchzhou +Date: Mon, 27 May 2024 15:47:32 +0800 +Subject: [PATCH] add basic riscv64 support + +--- + bin/create-image | 5 +++++ + hooks/finalise.d/50-bootloader | 29 +++++++++++++++++++++++++++++ + hooks/root.d/01-create-root | 2 ++ + 3 files changed, 36 insertions(+) + +diff --git a/bin/create-image b/bin/create-image +index 7ba30c0..b610dd8 100755 +--- a/bin/create-image ++++ b/bin/create-image +@@ -157,6 +157,11 @@ elif [ $ARCH == "loongarch64" ]; then + + /usr/sbin/parted system.img -- mkpart primary fat16 0% 5% + /usr/sbin/parted system.img -- mkpart primary ext4 5% 100% ++ ++elif [ $ARCH == "riscv64" ]; then ++ ++ /usr/sbin/parted system.img -- mkpart primary fat16 0% 5% ++ /usr/sbin/parted system.img -- mkpart primary ext4 5% 100% + fi + + export DEVICE=`losetup -f` +diff --git a/hooks/finalise.d/50-bootloader b/hooks/finalise.d/50-bootloader +index b0f81f5..b24b6a4 100755 +--- a/hooks/finalise.d/50-bootloader ++++ b/hooks/finalise.d/50-bootloader +@@ -100,6 +100,32 @@ function install_grub2_loongarch64 () + sed -i "s#root=.*.img #${sed_str}#g" $GRUB_CFG + } + ++function install_grub2_riscv64 () ++{ ++ cp -r /usr/lib/grub/riscv64-efi /boot/efi/EFI/openEuler/ ++ eval "grub2-mkimage -d /usr/lib/grub/riscv64-efi -O riscv64-efi --output=/boot/efi/EFI/openEuler/grubriscv64.efi '--prefix=(,msdos1)/efi/EFI/openEuler' fat part_gpt part_msdos linux" ++ ++ mkdir -p /boot/EFI/BOOT/ ++ cp -f /boot/efi/EFI/openEuler/grubriscv64.efi /boot/EFI/BOOT/BOOTRISCV64.EFI ++ ++ echo 'GRUB_TIMEOUT=5' >> /etc/default/grub ++ echo 'GRUB_DEFAULT=saved' >> /etc/default/grub ++ echo 'GRUB_DISABLE_SUBMENU=true' >> /etc/default/grub ++ echo 'GRUB_TERMINAL_OUTPUT="console"' >> /etc/default/grub ++ echo 'GRUB_CMDLINE_LINUX="console=ttyS0 highres=off earlycon no4lvl systemd.default_timeout_start_sec=600 rootfstype=ext4 nomodeset quiet net.ifnames=0 biosdevname=0 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M reserve_kbox_mem=16M crash_kexec_post_notifiers panic=3 no-steal-time use-sched-idle-time"' >> /etc/default/grub ++ echo 'GRUB_DISABLE_RECOVERY="true"' >>/etc/default/grub ++ ++ echo "cat <> /etc/grub.d/00_header ++ echo "set superusers=\"root\"" >> /etc/grub.d/00_header ++ echo "password_pbkdf2 root grub.pbkdf2.sha512.10000.5A45748D892672FDA02DD3B6F7AE390AC6E6D532A600D4AC477D25C7D087644697D8A0894DFED9D86DC2A27F4E01D925C46417A225FC099C12DBD3D7D49A7425.2BD2F5BF4907DCC389CC5D165DB85CC3E2C94C8F9A30B01DACAA9CD552B731BA1DD3B7CC2C765704D55B8CD962D2AEF19A753CBE9B8464E2B1EB39A3BB4EAB08" >> /etc/grub.d/00_header ++ ++ echo "EOF" >> /etc/grub.d/00_header ++ GRUB_CFG=/boot/efi/EFI/openEuler/grub.cfg ++ grub2-mkconfig -o $GRUB_CFG ++ sed_str="root=UUID=${ROOT_FS_UUID} " ++ sed -i "s#root=.*.img #${sed_str}#g" $GRUB_CFG ++} ++ + if [ -f /boot/grub2/device.map ]; then + cat << EOF | tee /boot/grub2/device.map > /dev/null + (hd0) /dev/xvda +@@ -119,3 +145,6 @@ if [ $ARCH == "loongarch64" ]; then + install_grub2_loongarch64 + fi + ++if [ $ARCH == "riscv64" ]; then ++ install_grub2_riscv64 ++fi +diff --git a/hooks/root.d/01-create-root b/hooks/root.d/01-create-root +index 96a0cec..0a38a2e 100755 +--- a/hooks/root.d/01-create-root ++++ b/hooks/root.d/01-create-root +@@ -104,6 +104,8 @@ elif [ $ARCH == "aarch64" ]; then + sudo -E chroot $TARGET_ROOT yum -y install grub2-efi-aa64-modules + elif [ $ARCH == "loongarch64" ]; then + sudo -E chroot $TARGET_ROOT yum -y install grub2-efi-loongarch64-modules ++elif [ $ARCH == "riscv64" ]; then ++ sudo -E chroot $TARGET_ROOT yum -y install grub2-efi-riscv64 grub2-efi-riscv64-modules + fi + sudo -E chroot $TARGET_ROOT yum -y install grub2-efi grub2-tools kernel + +-- +2.45.1 + diff --git a/CreateImage.spec b/CreateImage.spec index 7715d257e6b502b8a330bf451676457df5302f41..d158441f9ac16f5055a6c2591f727a78a36729ce 100755 --- a/CreateImage.spec +++ b/CreateImage.spec @@ -1,6 +1,6 @@ Name: CreateImage Version: 1.0.0 -Release: 6 +Release: 7 Summary: The tool to create Machine Image Group: System Environment/Base License: Mulan PSL v2 @@ -9,6 +9,8 @@ Patch0001: 0001-fix-uname-r-error.patch Patch0002: 0001-Add-loongarch64-support-for-CreateImage.patch Patch0003: add-some-packages-in-rpmlist.patch Patch0004: fix-make-image-in-docker.patch +Patch0005: 0001-add-basic-riscv64-support.patch + BuildArch: noarch Requires: qemu-img bc @@ -21,6 +23,7 @@ The tool to create Machine Image. %patch0002 -p1 %patch0003 -p1 %patch0004 -p1 +%patch0005 -p1 %define env_kernel_version %(eval rpm -qi kernel-headers | grep Version | awk '{print $NF}') %define enable_nomodeset %(eval echo %{env_kernel_version} 6.1.0 | awk '{if($1 >= $2) print 1;else print 0;}') @@ -45,6 +48,11 @@ cp -a lib hooks config %{buildroot}/usr/share/CreateImage /usr/share/CreateImage %changelog +* Mon May 27 2024 jchzhou - 1.0.0-7 +- ID:NA +- SUG:NA +- DESC: Add basic support for riscv64 + * Mon Apr 29 2024 wangchong - 1.0.0-6 - ID:NA - SUG:NA