mbox

[bug#35394,0/3] Bootloader localization

Message ID 20190423151702.05258473@gmail.com
Headers show

Message

Miguel Arruga Vivas April 23, 2019, 1:17 p.m. UTC
Hello Guix!

As a Grub translator, I've been hacking a little bit in order to
provide locale information to Grub. I use Guix in a daily basis, as my
main computer operating system, and I this is a key step in order to
provide a better experience to the all kind of users, who may do not
know other languages than their native one.

My current idea, implemented in the following patches, is something
along these lines:
  1. Store locale information into boot-parameters file. This patch
  contains a quite silly test that requires wiser review.
  2. Provide this information to the bootloader at the configuration
  time. This, ideally, should provided at installation time too, but
  I'm stuck seeing my first messages in english when grub asks for the
  whole-disk encryption passphrase as I don't know how to create a
  working core.img yet.
  3. Add a snippet to the generated grub.cfg file with the language
  information. Some configurations, as /boot in a separate partition,
  does not work with this patch, but take it as a proof of concept.

Lacking points:
  1. No support for other bootloaders yet. I don't know any of them too
  much, but I'm unaware of their localization support.
  2. Grub installation process is not transactional enough. I have some
  ideas for that, to be discussed in another thread, although one key
  point is tightly related with this topic: /boot/grub/locale
  generation. Having this folder as a derivation would make explicit
  the dependency, but I have to work more on this and I'm open to any
  ideas.

WDYT?

Best regards,
Miguel

Comments

Miguel Arruga Vivas April 26, 2019, 10:59 a.m. UTC | #1
Hi everybody!

I've been working on these patches and I've been able to generate a
derivation with the format expected by Grub during bootloading, use it
in the grub.cfg file. I removed the test for the folder inside the
configuration file and added a check for the "locale" output during
the file generation. Maybe it is not quite elegant, but I'm open to
ideas. Now there are 4 patches instead of 3.

What do you think?

Best regards,
Miguel

PS: I CC'ed the mailing list too looking for other ideas.

El Tue, 23 Apr 2019 15:17:02 +0200
Miguel <rosen644835@gmail.com> escribió:
> Hello Guix!
> 
> As a Grub translator, I've been hacking a little bit in order to
> provide locale information to Grub. I use Guix in a daily basis, as my
> main computer operating system, and I this is a key step in order to
> provide a better experience to the all kind of users, who may do not
> know other languages than their native one.
> 
> My current idea, implemented in the following patches, is something
> along these lines:
>   1. Store locale information into boot-parameters file. This patch
>   contains a quite silly test that requires wiser review.
>   2. Provide this information to the bootloader at the configuration
>   time. This, ideally, should provided at installation time too, but
>   I'm stuck seeing my first messages in english when grub asks for the
>   whole-disk encryption passphrase as I don't know how to create a
>   working core.img yet.
>   3. Add a snippet to the generated grub.cfg file with the language
>   information. Some configurations, as /boot in a separate partition,
>   does not work with this patch, but take it as a proof of concept.
> 
> Lacking points:
>   1. No support for other bootloaders yet. I don't know any of them
> too much, but I'm unaware of their localization support.
>   2. Grub installation process is not transactional enough. I have
> some ideas for that, to be discussed in another thread, although one
> key point is tightly related with this topic: /boot/grub/locale
>   generation. Having this folder as a derivation would make explicit
>   the dependency, but I have to work more on this and I'm open to any
>   ideas.
> 
> WDYT?
> 
> Best regards,
> Miguel
Ludovic Courtès April 29, 2019, 7:56 a.m. UTC | #2
Hi Miguel,

Miguel <rosen644835@gmail.com> skribis:

> As a Grub translator, I've been hacking a little bit in order to
> provide locale information to Grub. I use Guix in a daily basis, as my
> main computer operating system, and I this is a key step in order to
> provide a better experience to the all kind of users, who may do not
> know other languages than their native one.

Thanks a lot for this work.  FWIW, I’m holding off review and
integration after 1.0, but I’m happy if someone else reviews :-), and
I’ll be really happy to see it in master once 1.0 is out.

Ludo’.
Miguel Arruga Vivas Oct. 21, 2019, 10:40 a.m. UTC | #3
Hi Ludo’,

El Mon, 29 Apr 2019 09:56:25 +0200
Ludovic Courtès <ludo@gnu.org> escribió:
> Hi Miguel,
> 
> Thanks a lot for this work.

I've been quite silent about this because I wanted to solve the issue
with .mo files in a better way, but my current understanding is that
the best way to go with that is to make grub installation
(store-)reproducible and removing /boot altogether, so I'll open
a different thread on the mailing list about that.  For the moment,
the patches following this mail rely on the installation
of /boot/grub/locale, usually generated by grub-install.  The generated
grub.cfg scriptlet enables the use case for /boot in a different
partition found in many other distributions (which breaks the boot
when /gnu/store is encrypted in a different partition, I'm going to fill
a bug for that too).

I've tested them on the following machine configurations, on top of
commit 5f760515c8:
	- grub-efi on x86_64-gnu-linux:
		* Encrypted partition for the whole disk.
		* Separate "/boot" (ext4) and "/" (ext4 and btrfs)
		  partitions.
	- grub-pc on x86_64-gnu-linux:
		* Same as grub-efi, plus
		* Encrypted and different "/boot" and "/" partitions,
		  typing manually in the console
		  "cryptomount (hdX,msdosX)" with the "/" partition to
		  allow grub loading the kernel image.


> FWIW, I’m holding off review and integration after 1.0, but I’m happy
> if someone else reviews :-),

I'm CCing the list to bring some attention onto it, I think it's
on-topic enough to worth a try.  The hardest part for review is the new
test case, because I wanted to be 100% sure I didn't break anything.
As you can see, the tested code didn't need almost any change, although
I've made some changes on the test case from the last set of patches.

> and I’ll be really happy to see it in master once 1.0 is out.

I wish we'll see it in master soon.

Best regards,
Miguel