diff --git a/.gitignore b/.gitignore index e9ee3def..45e87cc0 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ files/initrd/opt/rr/lang/*.mo tests /extractor /br -/rdxz_tmp \ No newline at end of file +/rdxz_tmp +Changelog* \ No newline at end of file diff --git a/files/initrd/opt/rr/lang/en_US.po b/files/initrd/opt/rr/lang/en_US.po index 730b31a5..e2b8b908 100644 --- a/files/initrd/opt/rr/lang/en_US.po +++ b/files/initrd/opt/rr/lang/en_US.po @@ -1,15 +1,15 @@ # English translations for RR package. # Copyright (C) 2023 THE RR'S COPYRIGHT HOLDER # This file is distributed under the same license as the RR package. -# ing , 2023. +# Ing , 2023. # msgid "" msgstr "" "Project-Id-Version: RR\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-01-12 11:12+0800\n" -"PO-Revision-Date: 2024-01-13 23:17+0800\n" -"Last-Translator: ing \n" +"PO-Revision-Date: 2024-01-19 14:25+0800\n" +"Last-Translator: Ing \n" "Language-Team: English (United States) \n" "Language: en_US\n" "MIME-Version: 1.0\n" diff --git a/files/initrd/opt/rr/lang/ko_KR.po b/files/initrd/opt/rr/lang/ko_KR.po index 629b7350..dff95f21 100644 --- a/files/initrd/opt/rr/lang/ko_KR.po +++ b/files/initrd/opt/rr/lang/ko_KR.po @@ -1,15 +1,15 @@ # Korean translations for RR package. # Copyright (C) 2023 THE RR'S COPYRIGHT HOLDER # This file is distributed under the same license as the RR package. -# EXP, 2023. +# EXP , 2023. # msgid "" msgstr "" "Project-Id-Version: RR\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-01-18 13:16+0800\n" -"PO-Revision-Date: 2024-01-18 13:27+0800\n" -"Last-Translator: EXP \n" +"PO-Revision-Date: 2024-01-19 14:25+0800\n" +"Last-Translator: EXP \n" "Language-Team: 한국인 (대한민국) \n" "Language: ko_KR\n" "MIME-Version: 1.0\n" diff --git a/files/initrd/opt/rr/lang/ru_RU.po b/files/initrd/opt/rr/lang/ru_RU.po index 88cb8605..23f8cfd4 100644 --- a/files/initrd/opt/rr/lang/ru_RU.po +++ b/files/initrd/opt/rr/lang/ru_RU.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: RR\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-01-18 13:16+0800\n" -"PO-Revision-Date: 2024-01-18 13:26+0800\n" +"PO-Revision-Date: 2024-01-19 14:25+0800\n" "Last-Translator: Alex TG @xpenology_russian\n" "Language-Team: Русский перевод TG @xpenology_russian\n" "Language: ru_RU\n" diff --git a/files/initrd/opt/rr/lang/zh_CN.po b/files/initrd/opt/rr/lang/zh_CN.po index e5316122..2ec5b102 100644 --- a/files/initrd/opt/rr/lang/zh_CN.po +++ b/files/initrd/opt/rr/lang/zh_CN.po @@ -1,15 +1,15 @@ # Chinese translations for RR package. # Copyright (C) 2023 THE RR'S COPYRIGHT HOLDER # This file is distributed under the same license as the RR package. -# ing , 2023. +# Ing , 2023. # msgid "" msgstr "" "Project-Id-Version: RR\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-01-18 13:16+0800\n" -"PO-Revision-Date: 2024-01-18 13:20+0800\n" -"Last-Translator: ing \n" +"PO-Revision-Date: 2024-01-19 14:25+0800\n" +"Last-Translator: Ing \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" diff --git a/files/initrd/opt/rr/lang/zh_HK.po b/files/initrd/opt/rr/lang/zh_HK.po index 2084247c..8fb4f021 100644 --- a/files/initrd/opt/rr/lang/zh_HK.po +++ b/files/initrd/opt/rr/lang/zh_HK.po @@ -1,15 +1,15 @@ # Chinese translations for RR package. # Copyright (C) 2023 THE RR'S COPYRIGHT HOLDER # This file is distributed under the same license as the RR package. -# ing , 2023. +# Ing , 2023. # msgid "" msgstr "" "Project-Id-Version: RR\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-01-18 13:16+0800\n" -"PO-Revision-Date: 2024-01-18 13:23+0800\n" -"Last-Translator: ing \n" +"PO-Revision-Date: 2024-01-19 14:25+0800\n" +"Last-Translator: Ing \n" "Language-Team: Chinese (HongKong) \n" "Language: zh_HK\n" "MIME-Version: 1.0\n" diff --git a/files/initrd/opt/rr/lang/zh_TW.po b/files/initrd/opt/rr/lang/zh_TW.po index de0a440c..27cca80d 100644 --- a/files/initrd/opt/rr/lang/zh_TW.po +++ b/files/initrd/opt/rr/lang/zh_TW.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: RR\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-12-16 18:02+0800\n" -"PO-Revision-Date: 2024-01-18 21:40+0800\n" -"Last-Translator: March Fun \n" +"PO-Revision-Date: 2024-01-19 14:24+0800\n" +"Last-Translator: March Fun \n" "Language-Team: Chinese (Taiwan) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" diff --git a/files/initrd/opt/rr/menu.sh b/files/initrd/opt/rr/menu.sh index 4a75d932..272a0a8f 100755 --- a/files/initrd/opt/rr/menu.sh +++ b/files/initrd/opt/rr/menu.sh @@ -2087,9 +2087,15 @@ function boot() { ############################################################################### # Shows language to user choose one function languageMenu() { - ITEMS="$(ls ${WORK_PATH}/lang/*.mo 2>/dev/null | sort | sed -r 's/.*\/(.*)\.mo$/\1/')" + rm -f "${TMP_PATH}/menu" + while read L; do + A="$(echo "$(strings "${WORK_PATH}/lang/${L}.mo" 2>/dev/null | grep "Last-Translator" | sed "s/Last-Translator://")")" + echo "${L} \"${A:-"anonymous"}\"" >>"${TMP_PATH}/menu" + done < <(ls ${WORK_PATH}/lang/*.mo 2>/dev/null | sort | sed -r 's/.*\/(.*)\.mo$/\1/') + DIALOG \ - --default-item "${LAYOUT}" --no-items --menu "$(TEXT "Choose a language")" 0 0 0 ${ITEMS} 2>${TMP_PATH}/resp + --default-item "${LAYOUT}" --menu "$(TEXT "Choose a language")" 0 0 0 --file "${TMP_PATH}/menu" \ + 2>${TMP_PATH}/resp [ $? -ne 0 ] && return resp=$(cat ${TMP_PATH}/resp 2>/dev/null) [ -z "${resp}" ] && return diff --git a/scripts/vm.sh b/scripts/vm.sh new file mode 100644 index 00000000..12aaa46f --- /dev/null +++ b/scripts/vm.sh @@ -0,0 +1,211 @@ + +filename=$(basename "${1}") + +OVFNAME=${filename%.*} +BLDISKNAME="${OVFNAME}-disk1.vmdk" +SDDISKNAME="${OVFNAME}-disk2.vmdk" + +# Convert raw image to VMDK +qemu-img convert -O vmdk -o 'adapter_type=lsilogic,subformat=streamOptimized,compat6' "${1}" "${BLDISKNAME}" +#qemu-img create -f vmdk "${SDDISKNAME}" "32G" + +BLSIZE=$(du -b "${BLDISKNAME}" | cut -f 1) +SDSIZE=$(du -b "${SDDISKNAME}" | cut -f 1) +BLVIRTUALSIZE=$(qemu-img info "${BLDISKNAME}" --output json | jq -r '."virtual-size"') +SDVIRTUALSIZE=$(qemu-img info "${SDDISKNAME}" --output json | jq -r '."virtual-size"') + +# Create VM configuration +cat << _EOF_ > "${OVFNAME}.ovf" + + + + + + + + Virtual disk information + + + + + The list of logical networks + + The bridged network + + + + A virtual machine + ${OVFNAME} + + The kind of installed guest operating system + + + Virtual hardware requirements + + Virtual Hardware Family + 0 + ${OVFNAME} + vmx-21 + + + hertz * 10^6 + Number of Virtual CPUs + 2 virtual CPU(s) + 1 + 3 + 2 + 2 + + + byte * 2^20 + Memory Size + 4096MB of memory + 2 + 4 + 4096 + 1 + + + 0 + SATA Controller + sataController0 + 3 + vmware.sata.ahci + 20 + 1 + + + 0 + USB Controller (XHCI) + usb3 + 4 + vmware.usb.xhci + 23 + 1 + + + 0 + USB Controller (EHCI) + usb + 5 + vmware.usb.ehci + 23 + + 1 + + + true + serial0 + 6 + 21 + + + 1 + + + 1 + true + bridged + VmxNet3 ethernet adapter on "bridged" + ethernet0 + 7 + VmxNet3 + 10 + + 1 + + + false + sound + 8 + vmware.soundcard.ensoniq1371 + 1 + 1 + + + false + video + 9 + 24 + + 1 + + + false + vmci + 10 + vmware.vmci + 1 + 1 + + + 0 + disk0 + ovf:/disk/vmdisk1 + 11 + 3 + 17 + 1 + + + 1 + disk1 + ovf:/disk/vmdisk2 + 12 + 3 + 17 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A human-readable annotation + Redpill Recovery + + + +_EOF_ + +# Create manifest file for automatic integrity check +cat << _EOF_ > "${OVFNAME}.mf" +SHA256(${OVFNAME}.ovf)= $(sha256sum "${OVFNAME}.ovf" | mawk '{print $1}') +SHA256(${BLDISKNAME})= $(sha256sum "${BLDISKNAME}" | mawk '{print $1}') +SHA256(${SDDISKNAME})= $(sha256sum "${SDDISKNAME}" | mawk '{print $1}') +_EOF_ + +# Pack everything as OVA appliance for ESXi import +rm -f "${OVFNAME}.ova" +tar -cf "${OVFNAME}.ova" ${OVFNAME}.ovf ${BLDISKNAME} ${SDDISKNAME} ${OVFNAME}.mf +rm -f ${OVFNAME}.ovf ${BLDISKNAME} ${SDDISKNAME} ${OVFNAME}.mf +#gzip "${OVFNAME}.ova" +