![¿Máquina virtual nativa Debian X32?](https://rvso.com/image/1482497/%C2%BFM%C3%A1quina%20virtual%20nativa%20Debian%20X32%3F.png)
Estoy intentando configurar una máquina virtual Debian X32 nativa. Tenga en cuenta que X32 es diferente de X86 y X64. Para más detalles, consulte¿Diferencia entre arquitecturas x86, x32 y x64?en desbordamiento de pila. Algunas otras distribuciones, como Red Hat, ofrecen una compilación X32 para servidores.
Debian no proporciona una ISO X32. Tengo instalado Debian 8.2 AMD64 y el kernel se inicia en la configuración de 32 bits:
$ dmesg | grep -i x32
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64 root=UUID=69773d98-b9fa-4695-8392-92759d8e6094 ro syscall.x32=y syscall.x32=y quiet
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64 root=UUID=69773d98-b9fa-4695-8392-92759d8e6094 ro syscall.x32=y syscall.x32=y quiet
[ 0.316500] Enabled x32 syscalls
DebianWiki del puerto X32me dice que el siguiente paso es configurar un chroot QEMU. Quiero evitar el chroot de QEMU y convertirlo en una instalación X32 nativa.
Pregunta: ¿Cómo convierto esta instalación en una instalación X32 nativa?
Aunque estoy arrancando el kernel configurado para X32, las herramientas del área de usuario estánnoconfigurado de esa manera. Por ejemplo, el compilador es probablemente el más importante para mí, pero no está configurado para X32:
$ g++ -march=native -dM -E - </dev/null | egrep "(x86_64|amd64|ilp)"
#define __x86_64 1
#define __amd64 1
#define __x86_64__ 1
#define __amd64__ 1
No veo ILP32
o __ILP32__
, lo que significa que no estoy en modo X32. Cambiar -march=native
a -mx32
no hace ninguna diferencia.
Aquí está la máquina:
$ uname -a
Linux debian8-x32q 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux
Aquí está misources.list
. Pero no es obvio qué debo habilitar para obtener los binarios X32 en lugar de los binarios X64:
deb http://ftp.us.debian.org/debian/ jessie main
deb-src http://ftp.us.debian.org/debian/ jessie main
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main
# jessie-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ jessie-updates main
deb-src http://ftp.us.debian.org/debian/ jessie-updates main
Las siguientes obras:
$ sudo dpkg --add-architecture x32
Pero rompe APT:
$ sudo apt-get update
Ign http://ftp.us.debian.org jessie InRelease
Hit http://ftp.us.debian.org jessie-updates InRelease
Hit http://ftp.us.debian.org jessie Release.gpg
Hit http://ftp.us.debian.org jessie Release
Hit http://security.debian.org jessie/updates InRelease
Hit http://ftp.us.debian.org jessie-updates/main Sources
Get:1 http://ftp.us.debian.org jessie-updates/main amd64 Packages/DiffIndex [367 B]
Get:2 http://ftp.us.debian.org jessie/main Sources [7,058 kB]
Hit http://security.debian.org jessie/updates/main Sources
Hit http://security.debian.org jessie/updates/main amd64 Packages
Hit http://ftp.us.debian.org jessie/main amd64 Packages
Fetched 7,058 kB in 3s (2,066 kB/s)
W: Failed to fetch http://security.debian.org/dists/jessie/updates/InRelease Unable to find expected entry 'main/binary-x32/Packages' in Release file (Wrong sources.list entry or malformed file)
W: Failed to fetch http://ftp.us.debian.org/debian/dists/jessie-updates/InRelease Unable to find expected entry 'main/binary-x32/Packages' in Release file (Wrong sources.list entry or malformed file)
W: Failed to fetch http://ftp.us.debian.org/debian/dists/jessie/Release Unable to find expected entry 'main/binary-x32/Packages' in Release file (Wrong sources.list entry or malformed file)
E: Some index files failed to download. They have been ignored, or old ones used instead.
Si es importante, entro por SSH en la caja. No me importan los administradores de ventanas y otros programas GUI que no hayan sido portados. Básicamente necesito que el kernel, la instalación base y las herramientas de compilación estén en modo X32 para poder probar mi software en X32.