Próbuję skonfigurować natywną maszynę wirtualną Debian X32. Zauważ, że X32 różni się od X86 i X64. Aby uzyskać szczegółowe informacje, zobacz Różnica między architekturami x86, x32 i x64? na przepełnienie stosu. Niektóre inne dystrybucje, takie jak Red Hat, oferują wersję X32 dla serwerów.
Debian nie zapewnia ISO X32. Mam zainstalowany Debian 8.2 amd64, a jądro uruchamia się w konfiguracji 32-bitowej:
$ 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
Debianowe X32-portowe wiki mówi mi, że następnym krokiem jest skonfigurowanie chroota QEMU. Chcę uniknąć chroota QEMU i przekształcić go w natywną instalację X32.
Pytanie : Jak zmienić tę instalację w natywną instalację X32?
Chociaż uruchamiam jądro skonfigurowane dla X32, narzędzia użytkownika nie są skonfigurowane w ten sposób. Na przykład kompilator jest prawdopodobnie dla mnie najważniejszy, ale nie jest skonfigurowany dla 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
Nie widzę ILP32
lub __ILP32__
, co oznacza, że nie jestem w trybie X32. Zmiana -march=native
na -mx32
nie robi różnicy.
Oto maszyna:
$ 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
Tu jest mój sources.list
. Ale nie jest oczywiste, co powinienem umożliwić, aby uzyskać pliki binarne X32 zamiast plików binarnych 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
Następujące prace:
$ sudo dpkg --add-architecture x32
Ale psuje 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.
Jeśli to ma znaczenie, I SSH do pudełka. Nie dbam o menedżerów okien i inne programy GUI, które nie zostały przeniesione. Zasadniczo potrzebuję jądra, instalacji podstawowej i narzędzi do budowania w trybie X32, aby móc przetestować swoje oprogramowanie pod X32.
źródło
syscall.x32=y
. Znalazłem obszar użytkownika, który powoduje ból, jak kompilator.