diff --git a/bin/create-image b/bin/create-image index 7ba30c0093be0fd912700a11fd86269de236e30e..b610dd837e6665bf6a04581be84247b81c9da62f 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 b0f81f55f017675fdbd325ef7a3fcabf07f6dda0..b24b6a4180bcad2cd4babeceecefec40951a06fb 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 96a0cecdf0d8e2d82b19dac06d324499a5386277..0a38a2ebc4b5d51bf6391fecf3f4213052b3118f 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