From ad3b544dfacb7ef9bfcf15de455784b1177224ea Mon Sep 17 00:00:00 2001 From: Eugene Zamriy Date: Thu, 27 Jul 2023 00:09:49 +0300 Subject: [PATCH] Translates installation image bootloader to Russian Also adds a font with cp866 encoding support. --- .lorax-templates-rhel.metadata | 1 + .../0001-Remove-RHEL-specific-packages.patch | 9 +- ...Disable-oscap-anaconda-addon-install.patch | 6 +- ...allation-image-bootloader-to-Russian.patch | 248 ++++++++++++++++++ SPECS/lorax-templates-rhel.spec | 13 +- 5 files changed, 269 insertions(+), 8 deletions(-) create mode 100644 SOURCES/0003-Translate-installation-image-bootloader-to-Russian.patch diff --git a/.lorax-templates-rhel.metadata b/.lorax-templates-rhel.metadata index 1e460f7..638a234 100644 --- a/.lorax-templates-rhel.metadata +++ b/.lorax-templates-rhel.metadata @@ -1 +1,2 @@ b570dd409ac7d937f64784c2acaa838fde18d9ff SOURCES/lorax-templates-rhel-9.0-37.tar.gz +c72e58401cbac2fee8ca654043bdf1bdf8f40021 SOURCES/cp866-8x16.psf diff --git a/SOURCES/0001-Remove-RHEL-specific-packages.patch b/SOURCES/0001-Remove-RHEL-specific-packages.patch index 37ba558..2d8944a 100644 --- a/SOURCES/0001-Remove-RHEL-specific-packages.patch +++ b/SOURCES/0001-Remove-RHEL-specific-packages.patch @@ -1,8 +1,11 @@ -From 2c401f191bdba15ad46c34e245378dddd76e872e Mon Sep 17 00:00:00 2001 +From dd7b1dd0d76705edd95a1268ecd41b7fdbe2a38a Mon Sep 17 00:00:00 2001 From: Eugene Zamriy Date: Thu, 6 Apr 2023 23:34:20 +0300 -Subject: [PATCH] Remove RHEL specific packages +Subject: [PATCH 1/3] Remove RHEL specific packages +--- + 80-rhel/runtime-install.tmpl | 2 -- + 1 file changed, 2 deletions(-) diff --git a/80-rhel/runtime-install.tmpl b/80-rhel/runtime-install.tmpl index ac3fe06..1189a49 100644 @@ -25,5 +28,5 @@ index ac3fe06..1189a49 100644 ## extra tools not required by anaconda -- -2.39.2 +2.40.1 diff --git a/SOURCES/0002-Disable-oscap-anaconda-addon-install.patch b/SOURCES/0002-Disable-oscap-anaconda-addon-install.patch index 7cce56a..01cbd65 100644 --- a/SOURCES/0002-Disable-oscap-anaconda-addon-install.patch +++ b/SOURCES/0002-Disable-oscap-anaconda-addon-install.patch @@ -1,7 +1,7 @@ -From be582be6919ba0e49447f466f868d671ad1ea1dd Mon Sep 17 00:00:00 2001 +From 8dc671f22d6ace3263426d1c9066a61856e27961 Mon Sep 17 00:00:00 2001 From: Eugene Zamriy Date: Sun, 16 Apr 2023 23:17:19 +0300 -Subject: [PATCH 2/2] Disable oscap-anaconda-addon install +Subject: [PATCH 2/3] Disable oscap-anaconda-addon install --- 80-rhel/runtime-install.tmpl | 3 ++- @@ -22,5 +22,5 @@ index 1189a49..cd6feea 100644 ## FIXME Pull in device-mapper-multipath ## This *should* be pulled in by libblockdev-plugins-all and libblockdev-mpath but it is not -- -2.39.2 +2.40.1 diff --git a/SOURCES/0003-Translate-installation-image-bootloader-to-Russian.patch b/SOURCES/0003-Translate-installation-image-bootloader-to-Russian.patch new file mode 100644 index 0000000..5262b31 --- /dev/null +++ b/SOURCES/0003-Translate-installation-image-bootloader-to-Russian.patch @@ -0,0 +1,248 @@ +From 8836e2a52e01cbc24c990ba79418fb297165466e Mon Sep 17 00:00:00 2001 +From: Eugene Zamriy +Date: Wed, 26 Jul 2023 23:51:00 +0300 +Subject: [PATCH 3/3] Translate installation image bootloader to Russian + +--- + 80-rhel/config_files/x86/grub2-efi.cfg | 15 ++++++---- + 80-rhel/config_files/x86/isolinux.cfg | 41 +++++++++++++++----------- + 80-rhel/efi.tmpl | 11 +++++++ + 80-rhel/x86.tmpl | 19 +++++++++++- + 4 files changed, 62 insertions(+), 24 deletions(-) + +diff --git a/80-rhel/config_files/x86/grub2-efi.cfg b/80-rhel/config_files/x86/grub2-efi.cfg +index 5fc47de..dfd827f 100644 +--- a/80-rhel/config_files/x86/grub2-efi.cfg ++++ b/80-rhel/config_files/x86/grub2-efi.cfg +@@ -9,7 +9,12 @@ function load_video { + } + + load_video ++insmod gfxterm ++set gfxmode=auto + set gfxpayload=keep ++set lang=ru_RU ++terminal_output gfxterm ++loadfont unicode + insmod gzio + insmod part_gpt + insmod ext2 +@@ -20,20 +25,20 @@ set timeout=60 + search --no-floppy --set=root -l '@ISOLABEL@' + + ### BEGIN /etc/grub.d/10_linux ### +-menuentry 'Install @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os { ++menuentry 'Установить @PRODUCT@ @VERSION@@FLAVOR@' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ quiet + initrdefi @INITRDPATH@ + } +-menuentry 'Test this media & install @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os { ++menuentry 'Проверить установочный носитель и установить @PRODUCT@ @VERSION@@FLAVOR@' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ rd.live.check quiet + initrdefi @INITRDPATH@ + } +-submenu 'Troubleshooting -->' { +- menuentry 'Install @PRODUCT@ @VERSION@ in text mode' --class fedora --class gnu-linux --class gnu --class os { ++submenu 'Устранение неполадок -->' { ++ menuentry 'Установить @PRODUCT@ @VERSION@@FLAVOR@ используя текстовый установщик' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ inst.text quiet + initrdefi @INITRDPATH@ + } +- menuentry 'Rescue a @PRODUCT@ system' --class fedora --class gnu-linux --class gnu --class os { ++ menuentry 'Восстановление установленной системы @PRODUCT@' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ inst.rescue quiet + initrdefi @INITRDPATH@ + } +diff --git a/80-rhel/config_files/x86/isolinux.cfg b/80-rhel/config_files/x86/isolinux.cfg +index 01bf0cd..0cad3c2 100644 +--- a/80-rhel/config_files/x86/isolinux.cfg ++++ b/80-rhel/config_files/x86/isolinux.cfg +@@ -1,6 +1,8 @@ + default vesamenu.c32 + timeout 600 + ++font cp866-8x16.psf ++ + display boot.msg + + # Clear the screen when exiting the menu, instead of leaving the menu displayed. +@@ -8,7 +10,7 @@ display boot.msg + # the menu itself for as long as the screen remains in graphics mode. + menu clear + menu background splash.png +-menu title @PRODUCT@ @VERSION@ ++menu title @PRODUCT@ @VERSION@@FLAVOR@ + menu vshift 8 + menu rows 18 + menu margin 8 +@@ -53,18 +55,18 @@ menu color cmdline 0 #ffffffff #00000000 none + + # Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message. + +-menu tabmsg Press Tab for full configuration options on menu items. ++menu tabmsg Нажмите [Tab] для просмотра конфигурации выбранного пункта меню. + + menu separator # insert an empty line + menu separator # insert an empty line + + label linux +- menu label ^Install @PRODUCT@ @VERSION@ ++ menu label ^1. Установить @PRODUCT@ @VERSION@@FLAVOR@ + kernel vmlinuz + append initrd=initrd.img @ROOT@ quiet + + label check +- menu label Test this ^media & install @PRODUCT@ @VERSION@ ++ menu label ^2. Проверить установочный носитель и установить @PRODUCT@ @VERSION@@FLAVOR@ + menu default + kernel vmlinuz + append initrd=initrd.img @ROOT@ rd.live.check quiet +@@ -72,49 +74,52 @@ label check + menu separator # insert an empty line + + # utilities submenu +-menu begin ^Troubleshooting +- menu title Troubleshooting ++menu begin Устранение неполадок ++ menu title Устранение неполадок ++ menu label ^3. Устранение неполадок + + label text + menu indent count 5 +- menu label Install @PRODUCT@ @VERSION@ using ^text mode ++ menu label ^1. Установить @PRODUCT@ @VERSION@@FLAVOR@ используя текстовый установщик + text help +- Try this option out if you're having trouble installing +- @PRODUCT@ @VERSION@. ++ Попробуйте этот режим если у вас возникают проблемы с ++ установкой @PRODUCT@ @VERSION@@FLAVOR@. + endtext + kernel vmlinuz + append initrd=initrd.img @ROOT@ inst.text quiet + + label rescue + menu indent count 5 +- menu label ^Rescue a @PRODUCT@ system ++ menu label ^2. Восстановление установленной системы @PRODUCT@ + text help +- If the system will not boot, this lets you access files +- and edit config files to try to get it booting again. ++ Если система не загружается, данный режим позволит вам ++ получить доступ к файловой системе и отредактировать ++ конфигурационные файлы чтобы восстановить функцию ++ загрузки системы. + endtext + kernel vmlinuz + append initrd=initrd.img @ROOT@ inst.rescue quiet + + label memtest +- menu label Run a ^memory test ++ menu label ^3. Запустить тест оперативной памяти + text help +- If your system is having issues, a problem with your +- system's memory may be the cause. Use this utility to +- see if the memory is working correctly. ++ Проблемы со стабильностью операционной системы могут ++ быть вызваны неисправностью оперативной памяти. Эта ++ утилита позволяет проверить корректность работы ОЗУ. + endtext + kernel memtest + + menu separator # insert an empty line + + label local +- menu label Boot from ^local drive ++ menu label ^4. Загрузка с локального диска + localboot 0xffff + + menu separator # insert an empty line + menu separator # insert an empty line + + label returntomain +- menu label Return to ^main menu ++ menu label ^0. Вернуться в главное меню + menu exit + + menu end +diff --git a/80-rhel/efi.tmpl b/80-rhel/efi.tmpl +index bb1aa4f..9a32a61 100644 +--- a/80-rhel/efi.tmpl ++++ b/80-rhel/efi.tmpl +@@ -7,6 +7,7 @@ APPLE_EFI_DISKNAME=inroot+"/usr/share/pixmaps/bootloader/fedora-media.vol" + + mkdir ${EFIBOOTDIR} + mkdir ${EFIBOOTDIR}/fonts/ ++mkdir ${EFIBOOTDIR}/locale/ + %if efiarch64: + install boot/efi/EFI/*/shim${efiarch64|lower}.efi ${EFIBOOTDIR}/BOOT${efiarch64}.EFI + install boot/efi/EFI/*/mm${efiarch64|lower}.efi ${EFIBOOTDIR}/ +@@ -18,6 +19,7 @@ install boot/efi/EFI/*/mm${efiarch32|lower}.efi ${EFIBOOTDIR}/ + install boot/efi/EFI/*/gcd${efiarch32|lower}.efi ${EFIBOOTDIR}/grub${efiarch32|lower}.efi + %endif + install boot/grub2/fonts/unicode.pf2 ${EFIBOOTDIR}/fonts/ ++install /usr/share/locale/ru/LC_MESSAGES/grub.mo ${EFIBOOTDIR}/locale/ru.mo + + ## actually make the EFI images + ${make_efiboot("images/efiboot.img")} +@@ -39,7 +41,16 @@ ${make_efiboot("images/efiboot.img")} + copy ${KERNELDIR}/initrd.img ${EFIBOOTDIR} + %endif + install ${configdir}/grub2-efi.cfg ${eficonf} ++ %if product.variant == 'Server': ++ replace @FLAVOR@ ' Сервер' ${eficonf} ++ %else: ++ replace @FLAVOR@ '' ${eficonf} ++ %endif ++ %if product.name == 'MSVSphere': ++ replace @PRODUCT@ 'МСВСфера' ${eficonf} ++ %else: + replace @PRODUCT@ '${product.name}' ${eficonf} ++ %endif + replace @VERSION@ ${product.version} ${eficonf} + replace @KERNELNAME@ vmlinuz ${eficonf} + replace @KERNELPATH@ /${kdir}/vmlinuz ${eficonf} +diff --git a/80-rhel/x86.tmpl b/80-rhel/x86.tmpl +index 3d9d0a4..a254999 100644 +--- a/80-rhel/x86.tmpl ++++ b/80-rhel/x86.tmpl +@@ -23,6 +23,12 @@ if os.stat(joinpaths(inroot, runtime_img)).st_size >= 4*1024**3: + isoargs = "-iso-level 3" + else: + isoargs = "" ++ ++# define an MSVSphere-specific image flavor constant ++if product.variant == 'Server': ++ FLAVOR=' Сервер' ++else: ++ FLAVOR='' + %> + + mkdir images +@@ -41,12 +47,23 @@ install ${configdir}/boot.msg ${BOOTDIR} + install ${configdir}/grub.conf ${BOOTDIR} + install usr/share/anaconda/boot/syslinux-splash.png ${BOOTDIR}/splash.png + install boot/memtest* ${BOOTDIR}/memtest ++## add a console font with Russian (cp866) encoding support ++install ${configdir}/cp866-8x16.psf ${BOOTDIR} + + ## configure bootloader + replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg +-replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg ++%if product.name == 'MSVSphere': ++replace @PRODUCT@ 'МСВСфера' ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg ++%else: ++replace @PRODUCT@ '${product.name}' ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg ++%endif ++replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ++replace @FLAVOR@ '${FLAVOR}' ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg + replace @ROOT@ 'inst.stage2=hd:LABEL=${isolabel|udev}' ${BOOTDIR}/isolinux.cfg + ++## convert BIOS bootloader configs to cp866 encoding ++iconv 'cp866' ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg ++ + ## install kernels + mkdir ${KERNELDIR} + %for kernel in kernels: +-- +2.40.1 + diff --git a/SPECS/lorax-templates-rhel.spec b/SPECS/lorax-templates-rhel.spec index c06ca75..db01381 100644 --- a/SPECS/lorax-templates-rhel.spec +++ b/SPECS/lorax-templates-rhel.spec @@ -1,19 +1,22 @@ Name: lorax-templates-msvsphere Version: 9.0 -Release: 37%{?dist} +Release: 37%{?dist}.1 Summary: MSVSphere 9 build templates for lorax and livemedia-creator License: GPLv2+ URL: https://github.com/weldr/lorax BuildArch: noarch Source0: lorax-templates-rhel-9.0-37.tar.gz +Source1: cp866-8x16.psf # MSVSphere patches Patch1001: 0001-Remove-RHEL-specific-packages.patch Patch1002: 0002-Disable-oscap-anaconda-addon-install.patch +Patch1003: 0003-Translate-installation-image-bootloader-to-Russian.patch # Required for the template branding support -Requires: lorax >= 34.9.1 +# Required for Russian localization +Requires: lorax >= 34.9.23-1.el9.inferit.1 # Where are these supposed to end up? %define templatedir %{_datadir}/lorax/templates.d/70-msvsphere @@ -26,6 +29,7 @@ placed in %{templatedir} %setup -n lorax-templates-rhel-%{version} %patch1001 -p1 %patch1002 -p1 +%patch1003 -p1 %build # nothing to build @@ -34,12 +38,17 @@ placed in %{templatedir} rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/%{templatedir} cp -a 80-rhel/* $RPM_BUILD_ROOT/%{templatedir} +install -m 0644 %{SOURCE1} $RPM_BUILD_ROOT/%{templatedir}/config_files/x86/ %files %dir %{templatedir} %{templatedir}/* %changelog +* Wed Jul 26 2023 Eugene Zamriy - 9.0-37.1 +- Translated BIOS and EFI installation image bootloaders to Russian +- Added bootloader font with cp866 encoding support + * Sat Jul 01 2023 Eugene Zamriy - 9.0-37 - Package renamed to lorax-templates-msvsphere - Removed RHEL-specific packages from templates