From ddd67de5fff56d17fcec21ce95bf028131350886 Mon Sep 17 00:00:00 2001 From: Zach Dykstra Date: Tue, 12 Sep 2023 21:18:39 -0500 Subject: [PATCH] zfsbootmenu: make zbm.autosize a system hook Vendor a subset of Terminus console fonts and add a basic installation routine to Dracut/mkinitcpio modules. --- LICENSE.fonts | 94 ++++++++++++++++++ docs/man/zfsbootmenu.7.rst | 4 + dracut/module-setup.sh | 4 + etc/zfsbootmenu/release.conf.d/common.conf | 2 - initcpio/install/zfsbootmenu | 4 + releng/docker/image-build.sh | 2 +- testing/run.sh | 7 -- zfsbootmenu/fonts/ter-v12n.psf | Bin 0 -> 7933 bytes zfsbootmenu/fonts/ter-v14b.psf | Bin 0 -> 9450 bytes zfsbootmenu/fonts/ter-v20b.psf | Bin 0 -> 22269 bytes zfsbootmenu/fonts/ter-v24b.psf | Bin 0 -> 26365 bytes zfsbootmenu/fonts/ter-v28b.psf | Bin 0 -> 30461 bytes zfsbootmenu/fonts/ter-v32b.psf | Bin 0 -> 34557 bytes .../early-setup.d/20-console-autosize.sh | 36 +++++++ zfsbootmenu/install-helpers.sh | 10 ++ 15 files changed, 153 insertions(+), 10 deletions(-) create mode 100644 LICENSE.fonts create mode 100644 zfsbootmenu/fonts/ter-v12n.psf create mode 100644 zfsbootmenu/fonts/ter-v14b.psf create mode 100644 zfsbootmenu/fonts/ter-v20b.psf create mode 100644 zfsbootmenu/fonts/ter-v24b.psf create mode 100644 zfsbootmenu/fonts/ter-v28b.psf create mode 100644 zfsbootmenu/fonts/ter-v32b.psf create mode 100755 zfsbootmenu/hooks/early-setup.d/20-console-autosize.sh diff --git a/LICENSE.fonts b/LICENSE.fonts new file mode 100644 index 000000000..516837218 --- /dev/null +++ b/LICENSE.fonts @@ -0,0 +1,94 @@ +Copyright (C) 2020 Dimitar Toshkov Zhekov, +with Reserved Font Name "Terminus Font". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/man/zfsbootmenu.7.rst b/docs/man/zfsbootmenu.7.rst index 8365d0959..6cb6c47e2 100644 --- a/docs/man/zfsbootmenu.7.rst +++ b/docs/man/zfsbootmenu.7.rst @@ -139,6 +139,10 @@ These options are set on the kernel command line when booting the initramfs or U **NOTE**: The *hooklist* argument **MUST NOT** contain spaces and **MUST NOT** be enclosed in quotes. +**zbm.autosize** + + Enable automatic font resizing of the kernel console to normalize the apparent resolution for both low resolution and high resolution displays. This option is enabled by default. + Deprecated Parameters --------------------- diff --git a/dracut/module-setup.sh b/dracut/module-setup.sh index bcc9b5f39..b986bdb9b 100644 --- a/dracut/module-setup.sh +++ b/dracut/module-setup.sh @@ -179,4 +179,8 @@ install() { create_zbm_conf create_zbm_profiles create_zbm_traceconf + + if command -v setfont >/dev/null 2>&1; then + install_zbm_fonts && dracut_install setfont + fi } diff --git a/etc/zfsbootmenu/release.conf.d/common.conf b/etc/zfsbootmenu/release.conf.d/common.conf index dadb44f1f..56f85fb9c 100644 --- a/etc/zfsbootmenu/release.conf.d/common.conf +++ b/etc/zfsbootmenu/release.conf.d/common.conf @@ -1,5 +1,3 @@ -zfsbootmenu_early_setup+=" /zbm/contrib/20-console-autosize.sh " - # zbm-kcl install_optional_items+=" /zbm/bin/zbm-kcl " diff --git a/initcpio/install/zfsbootmenu b/initcpio/install/zfsbootmenu index b0cb927bc..2a77b49d8 100644 --- a/initcpio/install/zfsbootmenu +++ b/initcpio/install/zfsbootmenu @@ -198,6 +198,10 @@ build() { create_zbm_traceconf create_zbm_entrypoint + if command -v setfont >/dev/null 2>&1; then + install_zbm_fonts && add_binary setfont + fi + add_runscript } diff --git a/releng/docker/image-build.sh b/releng/docker/image-build.sh index 6c20057aa..ff28ebe89 100755 --- a/releng/docker/image-build.sh +++ b/releng/docker/image-build.sh @@ -180,7 +180,7 @@ buildah run "${host_mounts[@]}" "${container}" \ buildah run "${host_mounts[@]}" "${container}" \ xbps-install -y "${kern_series[@]}" "${kern_headers[@]}" \ - zstd gummiboot-efistub curl yq-go bash kbd terminus-font \ + zstd gummiboot-efistub curl yq-go bash kbd \ dracut mkinitcpio dracut-network gptfdisk iproute2 iputils parted \ curl dosfstools e2fsprogs efibootmgr cryptsetup openssh util-linux kpartx diff --git a/testing/run.sh b/testing/run.sh index e592eae25..d269d1c78 100755 --- a/testing/run.sh +++ b/testing/run.sh @@ -238,13 +238,6 @@ fi if [ -n "${DISPLAY_TYPE}" ]; then # Use the indicated graphical display DISPLAY_ARGS=( "-display" "${DISPLAY_TYPE}" ) - - # Add release hooks, supported only under Dracut - if ((DRACUT)); then - cat <<-EOF >> "${TESTDIR}/dracut.conf.d/testing.conf" - zfsbootmenu_early_setup+=" $( realpath -e ../contrib )/20-console-autosize.sh " - EOF - fi else # Suppress graphical display (implies serial mode) DISPLAY_ARGS=( "-nographic" ) diff --git a/zfsbootmenu/fonts/ter-v12n.psf b/zfsbootmenu/fonts/ter-v12n.psf new file mode 100644 index 0000000000000000000000000000000000000000..c22912b94cbd41a9c2c3f12cf8685d049a86be59 GIT binary patch literal 7933 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 v=-kKGpS{G_pNrhOqf3 zOVKKuvRIKtRs{-0M~hR`F~o%!Y>ZVjZrH{xMjdDTec!$Jy*J?T(%qKAYsCJaqQ zK3qENomW*>PH%8M*zPK#=pmu#A)#n9q2iJOlRQbld)dA6ptrRP~c(5Lg6YLSe@wi(-0$F{k;v|6jrNy#A47IiGf z1dC!-HcjfxLA9xUw|(eJ;!SmEu~9T8N~PS&$$EWqB_(Mx*-ARhY6{cxG#jQhF;AOHxh8AlQy5m-YfE#!sCm`+ZP_45 z%UH67f;5A#N2g||y+3m!c8VGk*aF5=u$~Z=4+2**=Le(RVXkbt&ntx(VU#piaHYfq5V;k*+mm9$a5K~G$Cy=LE98+beuF= z^)qsjB_$h_6lx7uk6HN0a^a%!V&@mfL=+*_sNNK<=xn7q4c(g9@-ATP+uv^&vtHNP z5{nZvGZTcRl$5SD>7=f&ZEcQAQ)=VS^z78AQ|dD@X@7S7Qd3&-wyAP}vNq|$+N#xZ zw0zA`2D2_~&mwChK~a*apUF9c&nN3QFxwi@fE z^Xt!M8+LH6aaS_H8nvlDBaCwDD4jzPm~Pq)0w%2`Wd)sgZ86GfN!o2l*o}|79_%=^ zO*s@%>@S zx%E?iKO7$EVvA^%6GDyM!`kg!P(b zIZGpYdr9n4Ztmi2JmKcVY$y$A(jL5!{^-F= zRCIgMHq&AIp5?X>y}dA_di^$=7z!Ke_}3clH7gElmFp*u3gDQJ1yTG6Vzim zde1bfYj$y|)N0w996hCN+sw9Yk}26ywA_J33E84(Nm{YCMT=}btLElnMJ-oRpV|8o z_0++(Sp3=kQ2k|%WbHpjm`v8{N9KFCfBndk%FoZ%TeQg9teTrkmh^dSdX2U#&CW`u zDi;wQ9hwcmM}aq0oBq~pZDBV{;*DC*-jr=UcT1ik=ym?+ioQI0BIy32HsVt*RgsN| zZ`%vdIUO}IScy#TG%UxqJmQ%rI7QE483cTJ^S|&wT@v z?#gQM4^Tt?d!n;NT1(0)GbN`?Me7lT`&)dQ+_|?*qxTnV#p)vFPrt+TG+hi=%@~ zSEZS}d*jjQCdXUVZbQo!Dv^vQ+H9h|jrrDUTy_IDBUE*Sx6aPJo9MSE!~}OhE&(em zSMgaSHlsy(^@_2_^I~Xv#i|79N<1NZI(c{dyJ=ZQ<2O23KrbCQU|d+TgNpk$;c;I8SyiR3Ea| zTvYtGSm#pxrG^0)+>r!kM>QYj#D;4>rN)%C*@I)NfVk5a# zvLe3esCIsGHoDBmJCU8D&Vl_ip(t(Lt-Yh%uR5+3N{SzyavP&n&WY+lsi#T(VwJei z)sy*-k8AHdvC5a+qJB~jYCZAcw5w-*=xxksIGzzsoOK?gG)}BI5As#QdcG)kjX1Jh zn}qgUyeHepzRlTeWKW8UTM;GiQT#g!-(~D2SM~wRizaZJrJ>q5NSZ6 zAd18T(UQdnHs*htA|myHXjN=A?l(@p$xCu8Eh>8dHo1Cs)T-FmC+FrS+1s@ih0#b+ zFTKPUWWFk2a*4BvMv9WD>bn%Rsah3dVV9_KT0~6M;Aa!MI@9LZ_ydT_Q1TFzSk z$^P}q)bxSGD!eL1?Zp;;-7sN}HuLToKP1OidP^$y^@NSvOCs^6BvQNjAN|_0>9Cvo zSR!$gN~Zren5dkNu~^sr!985Mv>2HanPO22`FoBXl~Xv|73AddS)Tasrq(E5Q#r*& zjL276`_z5r?9Z!KF|EYRB(z;AJ*ecQiX%jRy>n4V_{df;&qt(6Ran>+dV7PwHzd+3 zT6Y_vvpFeBc2kYWva|7%F&d@UvBZgBAIJ!7Jr~JQJ=MOR9jCP=?se`&l{u&_I$`zB zhevn`aE97YbSC||y+8-Jd9(a^`GGn4KN_oE_=TuBZb1L4JzuMB6lMCC^6obZOZ!Ev zUAuN{X6E6wtJjM9_wwbZ$zPkI8(9KVs*n6z&Fy&nZRU%qe$=VvPF&Dxokoe% z;S94K>P+*c)F6MC^W-cz8_qHJq!#n+T(d6qAb-y@YiZ|vEN_Q*zy)w26yPG0rOd_T zE-`;e9YOw5@|T&nkSmgVCtPm22U@LnnX`Cyh52jh9R6O(^OAX<+`GwL1@AH6Obw$~ zn8W#eFHf$9Ys_-g`^dc?R+?uR%LmAfm}7YUL30$J*P=fJW%w{u;7+&;z69&w9=I3o zgZtq@coZIkubU0D`Z&3#;Az+Z&%ig}n^1*s!M9-}JZpYLzuzHOGe04>iQIF>kozvV z@4@#?2dYl)2QUiHoBLApcs6Ewh|M4J%F?sw)?a=$0{2l%5o4fQg)Kf&E_)4+zs%xv-MfoJ*q z_~JDKPx1H0fk)*N?pXXEUcoiw9;S40NsZiP#C|okjFt?l1bMiWr?2O42v@)(lz#}m zYI-s|X0T=6z~@Djx&iAxup9KjfslqC=!Bi|OfS3;-$n zzOWx;VSgBcgCN)ORO%2$d@%V#;84iJVK5BK;BYtsj)bG&XgCIrh2!9OH~~(Cli*}H z1x|(2;B+_x&V=P~7Mu;|z`1Z9oDUbkg;0Qt;9|H0E``hBa(EY90awCR@E%wJ?}e-3 z8h9VPA4WRvCvrbX?ppW|l;OirfseszSOd31*ojAB0W5?AU@4pl=flP;M=efo`vr~EwvprHj#S{z6;-j@52vZ6gnAK3cBDmumijn z((pRyhWW4~ydHWXgk4}EEb6+0R(2(~8!Um{VGr07_JX}(A9yqD3;V(TZ~!cY17Qdb zf*c$She93>gCpT+I2MkB(FwTi{l>4Q_`!;7+&;?uPr|et4+sF}(0Fxkup3yv<*M2jFX_ z1IrWSo`m)AG;y;5o`G6tC)Q1!X+9@913q8m>1LShOrd^GF3jLzl4x@Pt9)~C3Nmvh0!P79&^=Tsg#jbPd=U3>L;CEerqvzj~+X~xY n2L24s^mF@wCG?Vod*A`+#j}GD41R{13+THa_Jj;$7=Zr*^zMwB literal 0 HcmV?d00001 diff --git a/zfsbootmenu/fonts/ter-v20b.psf b/zfsbootmenu/fonts/ter-v20b.psf new file mode 100644 index 0000000000000000000000000000000000000000..72d2b1d1e185e02004721be4a68651a25dc7d362 GIT binary patch literal 22269 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 literal 0 HcmV?d00001 diff --git a/zfsbootmenu/fonts/ter-v32b.psf b/zfsbootmenu/fonts/ter-v32b.psf new file mode 100644 index 0000000000000000000000000000000000000000..455875b45598da78833ad5b0d3d6e2b220e2b98e GIT binary patch literal 34557 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/dev/null 2>&1 + + # 110 columns is the current minimum to show both the sort key and a note on the snapshot screen + if [ "${COLUMNS}" -ge 110 ]; then + zdebug "set font to ${font}, screen is ${COLUMNS}x${LINES}" + break + fi + done +fi diff --git a/zfsbootmenu/install-helpers.sh b/zfsbootmenu/install-helpers.sh index c045dc785..c23534b68 100644 --- a/zfsbootmenu/install-helpers.sh +++ b/zfsbootmenu/install-helpers.sh @@ -245,6 +245,16 @@ install_zbm_docs() { return $ret } +install_zbm_fonts() { + + [ -d "${zfsbootmenu_module_root}/fonts" ] || return 1 + + # Install into a non-standard path so that the Dracut i18n module doesn't stomp over our custom fonts + + for font in "${zfsbootmenu_module_root}/fonts"/*.psf; do + [ -f "${font}" ] && zbm_install_file "${font}" "/usr/share/zfsbootmenu/fonts/${font##*/}" + done +} populate_hook_dir() { local hfile ret hlev