Natywna maszyna wirtualna Debian X32?

0

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ę ILP32lub __ILP32__, co oznacza, że ​​nie jestem w trybie X32. Zmiana -march=nativena -mx32nie 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.

jww
źródło
1
en.wikipedia.org/wiki/X32_ABI pozostawiając ten link tutaj, ponieważ się pomyliłem. bugs.debian.org/cgi-bin/… wydaje się sugerować, że niektóre rzeczy potrzebne do bezpośredniego uruchomienia x32 mogą nie być jeszcze obsługiwane, np. bootloader.
Journeyman Geek
Dzięki Czeladnikowi. „X32 może nie być jeszcze obsługiwany, jak bootloader ...” - OK, dziękuję. Nie jestem pewien, czy jest to problem w praktyce, ponieważ możemy uruchomić jądro syscall.x32=y. Znalazłem obszar użytkownika, który powoduje ból, jak kompilator.
jww