Quiero crear una imagen ISO x86 de 32 bits desde buildroot que pueda mostrar caracteres Unicode. ¿Cómo puedo hacer eso?
- En
make menuconfig
, he configuradoBR2_ENABLE_LOCALE_WHITELIST="C en_US en_US.UTF-8"
- En
make busybox-menuconfig
, he configuradoCONFIG_UNICODE_SUPPORT=y
,CONFIG_UNICODE_USING_LOCALE=y
,CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y
,CONFIG_UNICODE_COMBINING_WCHARS=y
,CONFIG_UNICODE_WIDE_WCHARS=y
,CONFIG_UNICODE_BIDI_SUPPORT=y
,CONFIG_UNICODE_NEUTRAL_TABLE=y
,CONFIG_UNICODE_PRESERVE_BROKEN=y
- En la máquina compiladora (basada en Debian), instalé el
locales
paquete y ejecutésed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen; locale-gen
Sin embargo, cuando construyo la imagen, el texto Unicode guardado en archivos de texto o escrito en la terminal aparece confuso.
Una forma de probar es ejecutando echo -e '\xe2\x82\xac'
en el shell. Esto debería imprimir el símbolo del euro, lo cual hace en el terminal de mi Mac. Sin embargo, en la imagen iso resultante, veo:
unfortunate # echo -e '\xe2\x82\xac'
â¬
Contexto más completo
- Mi proyecto principal está aquí.https://github.com/mrled/unfortunate/(tenga en cuenta los submódulos)
- El archivo defconfig que estoy usando está enhttps://github.com/mrled/unfortunate-browser-vm/blob/03dfb210d57a0e665da5cee108c2d9c052d66f5b/buildroot-v86/configs/v86_defconfig
- La configuración de Busybox que estoy usando está enhttps://github.com/mrled/unfortunate-browser-vm/blob/03dfb210d57a0e665da5cee108c2d9c052d66f5b/buildroot-v86/board/v86/busybox.config
- La configuración del kernel que estoy usando está enhttps://github.com/mrled/unfortunate-browser-vm/blob/03dfb210d57a0e665da5cee108c2d9c052d66f5b/buildroot-v86/board/v86/linux.config
- En realidad, este proyecto está diseñado para ejecutarse en el emulador x86 v86 en el navegador (¡del lado del cliente!), por lo que puedes probar mi
echo
comando tú mismo enhttps://unfortunate.micahrl.com. (El inicio de la máquina virtual puede tardar entre 15 y 30 segundos).
Respuesta1
En Debian, hay algún unicode_start
shellscript que configura el sistema para UTF-8. Los principales comandos que debes ejecutar en tu shell son:
printf '\033%%G'
stty iutf8
Los encontré en el muy interesante hilo de StackExchange:¿Cómo puedo habilitar la compatibilidad con UTF-8 en la consola de Linux?
También tengo dificultades para tener una configuración Unicode decente en mi sistema buildroot, y esos comandos me ayudaron un poco, pero todavía tengo problemas con shellscript codificado en UTF-8 que se niega a ejecutarse correctamente en mi sistema de destino.
Espero que ayude ! Saludos, hugo