Project

General

Profile

Ambiente Isolato per wine a 32 bit » History » Revision 35

Revision 34 (Fluidone Morinmoto, 12/06/2025 03:14 PM) → Revision 35/38 (Fluidone Morinmoto, 12/06/2025 03:19 PM)

h1. Ambiente Isolato per wine a 32 bit 


 Puoi isolare l'Aurora Toolset in un ambiente separato, in cui libgd3:i386 sia installata senza interferire con il sistema principale. 

 Installa schroot 

 <pre> 
 $ sudo apt install schroot debootstrap 
 </pre> 

 Configura un ambiente chroot a 32-bit: 

 h2. Debian 

 Installa pacchetti base base: 

 <pre> 
 $ sudo apt install bash-completion vim wget curl 
 </pre> 


 <pre> 
 $ sudo debootstrap --arch=i386 bullseye /srv/chroot/nwn32 http://deb.debian.org/debian 
 </pre> 

 Modifica il file /etc/schroot/schroot.conf e aggiungi: 

 <pre> 
 [nwn32] 
 description=Debian 32-bit environment for Neverwinter Nights Toolset 
 directory=/srv/chroot/nwn32 
 root-users=tuo-utente 
 type=directory 
 users=tuo-utente 
 </pre> 

 Avvia schroot come utente root e installa sudo: 

 <pre> 
 $ sudo schroot -c nwn32 -u root 
 (nwn32)$ apt update 
 (nwn32)$ apt install sudo 
 (nwn32)$ usermod -aG sudo tuo-utente 
 (nwn32)$ exit 
 </pre> 

 Adesso entra nell'ambiente nwn32 e installa wine32 ed eventuali pacchetti necessari: 

 <pre> 
 $ schroot -c nwn32 
 (nwn32)$ sudo dpkg --add-architecture i386 
 (nwn32)$ sudo apt install wget gnupg2 libgd3:i386 libwine:i386 wine32 mesa-utils 
 </pre> 

 Librerie necessarie: 

 Core OpenGL / Mesa 

 <pre> 
 (nwn32)$ sudo apt install libgl1-mesa-glx:i386 libgl1-mesa-dri:i386 libglu1-mesa:i386 libglapi-mesa:i386 libxatracker2:i386 libdrm2:i386 
 </pre> 

 X11 e estensioni 

 <pre> 
 (nwn32)$ sudo apt install libx11-6:i386 libxext6:i386 libxrandr2:i386 libxi6:i386 libxrender1:i386 libxfixes3:i386 libxdamage1:i386 libxcomposite1:i386 libxcursor1:i386 libxinerama1:i386 libxss1:i386 libxtst6:i386 
 </pre> 

 Font / Rendering 

 <pre> 
 (nwn32)$ sudo apt install libfreetype6:i386 libfontconfig1:i386 libpng16-16:i386 libsm6:i386 libice6:i386 
 </pre> 

 Audio / OpenAL 
 <pre> 
 (nwn32)$ sudo apt install libopenal1:i386 libasound2:i386 libasound2-plugins:i386 
 </pre> 

 Extra per Wine / compatibilità 
 <pre> 
 (nwn32)$ sudo apt install libc6:i386    libgcc-s1:i386 libstdc++6:i386 libtinfo6:i386 libncurses6:i386 
 </pre> 

 Driver video 32-bit (se NVIDIA/AMD proprietari) 

 <pre> 
 (nwn32)$ sudo apt install libnvidia-glx:i386 libnvidia-glvkspirv:i386 
 </pre> 

 Esportare il display per avviare finestre dentro l'ambiente: 

 <pre> 
 (nwn32)$ export DISPLAY=:0 
 </pre> 

 h4. winetricks extra sources 

 Aggiungere a /etc/apt/sources.list: 

 <pre> 
 deb http://deb.debian.org/debian bullseye main contrib non-free 
 deb http://deb.debian.org/debian bullseye-updates main contrib non-free 
 deb http://security.debian.org/debian-security bullseye-security main contrib non-free 
 </pre> 

 poi: 

 <pre> 
 (nwn32)$ sudo apt update 
 (nwn32)$ sudo apt install winetricks 
 </pre> 

 h4. Librerie NVidia in posizioni non standard 


 Dentro schroot installa le librerie corrispondenti alla versione del driver host: 

 <pre> 
 (nwn32)$ sudo dpgk --add-architecture i386 
 (nwn32)$ sudo apt update 
 (nwn32)$ sudo apt install nvidia-driver-libs:i386 
 </pre> 

 Nel sistema host verifica dove si trovano le librerie: 

 <pre> 
 $ cd /usr/lib 
 $ find . -name "libGLX_nvidia.so.0" 
 </pre> 

 Individua nell'output le librerie i386 e poi monta la directory delle librerie dal sistema host nel sistema schroot: 

 <pre> 
 $ sudo mount --bind /usr/lib/i386-linux-gnu/ /srv/chroot/nwn32/usr/lib/i386-linux-gnu/nvidia/current/ 
 </pre> 

 Verifica dove si trovano le tue librerie @.so@ nvidia e adatta i link simbolici di conseguenza. Per me su Lubuntu 24.04 sono in /usr/lib/i386-linux-gnu/nvidia/current/, ma in debian dentro il schroot il sistema se le aspetta in /usr/lib32/nvidia 

 <pre> 
 (nwn32)$ sudo mkdir -p /usr/lib32 
 (nwn32)$ cd /usr/lib32 
 (nwn32)$ sudo mkdir -p nvidia 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libGLX_nvidia.so.0 nvidia/libGLX.so.0 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libEGL_nvidia.so.0 nvidia/libEGL.so.1 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libGLESv2_nvidia.so.2 nvidia/libGLESv2.so.2 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libGLESv1_CM_nvidia.so.1 nvidia/libGLESv1_CM.so.1 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libcuda.so.1 nvidia/libcuda.so.1 
 </pre> 

 Poi impostare LD_LIBRARY_PATH: 

 <pre> 
 (nwn32)$ export LD_LIBRARY_PATH=/usr/lib32/nvidia:$LD_LIBRARY_PATH 
 (nwn32)$ WINEPREFIX="$HOME/.wine32/" WINEARCH=win32    wine nwtoolset.exe 

 </pre> 

 h4. Montare un percorso esterno  

 Modifica il file @/etc/schroot/default/fstab@ : 

 <pre> 
 /media/tuo-utente/VOLUME_ESTERNO/Giochi/Neverwinter/Neverwinter_Enhanced_Installed /srv/chroot/nwn32/mnt/nwn_game none rw,bind 0 0 
 </pre> 

 Crea il punto di mount nel sistema host: 

 <pre> 
 $ sudo mkdir -p /srv/chroot/nwn32/mnt/nwn_game 
 </pre> 

 h3. Installare i font 

 <pre> 
 $ sudo apt install ttf-mscorefonts-installer 
 $ cp /usr/share/fonts/truetype/msttcorefonts/* /home/user/.wine_prefix_dir/drive_c/windows/Fonts 
 </pre> 

 Installare font aggiuntivi 

 <pre> 
 $ winetricks corefonts 
 $ winetricks tahoma 
 $ winetricks allfonts 
 </pre> 

 h2. Ubuntu 20.04 

 Installa una versione @minimal@ di ubuntu, quindi poi vanno aggiunti i repository manualmente: 

 <pre> 
 $ sudo debootstrap --arch=i386 --variant=minbase focal /srv/chroot/nwn32 http://archive.ubuntu.com/ubuntu/ 
 </pre> 

 Installa pacchetti base base: 

 <pre> 
 $ sudo apt install bash-completion vim wget curl 
 </pre> 

 Aggiungi i repository manualmente nel file @/etc/apt/sources.list@: 

 <pre> 
 deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse 
 deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse 
 deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse 
 </pre> 
 Modifica il file /etc/schroot/schroot.conf e aggiungi: 

 <pre> 
 [nwn32] 
 description=Debian 32-bit environment for Neverwinter Nights Toolset 
 directory=/srv/chroot/nwn32 
 root-users=tuo-utente 
 type=directory 
 users=tuo-utente 
 </pre> 

 Avvia schroot come utente root e installa sudo: 

 <pre> 
 $ sudo schroot -c nwn32 -u root 
 (nwn32)$ apt update 
 (nwn32)$ apt install sudo 
 (nwn32)$ usermod -aG sudo tuo-utente 
 (nwn32)$ exit 
 </pre> 

 Adesso entra nell'ambiente nwn32 aggiungi architettura i386, installa software-properties-common e aggiungi i repository universe e multiverse: 

 <pre> 
 $ schroot -c nwn32 
 (nwn32)$ sudo dpkg --add-architecture i386 
 (nwn32)$ sudo apt install software-properties-common 
 (nwn32)$ sudo add-apt-repository universe 
 (nwn32)$ sudo add-apt-repository multiverse 
 </pre> 

 e installa wine32, winetricks ed eventuali pacchetti necessari: 

 <pre> 
 (nwn32)$ sudo apt install wget gnupg libgd3:i386 libwine:i386 wine32 winetricks winbind 
 </pre> 

 Librerie necessarie: 

 Core OpenGL / Mesa 

 <pre> 
 (nwn32)$ sudo apt install libgl1-mesa-glx:i386 libgl1-mesa-dri:i386 libglu1-mesa:i386 libglapi-mesa:i386 libxatracker2:i386 libdrm2:i386 
 </pre> 

 X11 e estensioni 

 <pre> 
 (nwn32)$ sudo apt install libx11-6:i386 libxext6:i386 libxrandr2:i386 libxi6:i386 libxrender1:i386 libxfixes3:i386 libxdamage1:i386 libxcomposite1:i386 libxcursor1:i386 libxinerama1:i386 libxss1:i386 libxtst6:i386 
 </pre> 

 Font / Rendering 

 <pre> 
 (nwn32)$ sudo apt install libfreetype6:i386 libfontconfig1:i386 libpng16-16:i386 libsm6:i386 libice6:i386 
 </pre> 

 Audio / OpenAL 
 <pre> 
 (nwn32)$ sudo apt install libopenal1:i386 libasound2:i386 libasound2-plugins:i386 
 </pre> 

 Extra per Wine / compatibilità 
 <pre> 
 (nwn32)$ sudo apt install libc6:i386 libgcc-s1:i386 libstdc++6:i386 libtinfo6:i386 libncurses6:i386 
 </pre> 

 Driver Audio 
 <pre> 
 (nwn32)$ sudo apt-get install pulseaudio pulseaudio-utils libpulse0:i386 
 </pre> 

 Driver video 32-bit (se NVIDIA/AMD proprietari) 

 <pre> 
 (nwn32)$ sudo apt install libnvidia-glx:i386 libnvidia-glvkspirv:i386 
 </pre> 

 Installa le librerie corrispondenti alla versione del driver host: 

 <pre> 
 (nwn32)$ sudo dpkg --add-architecture i386 
 (nwn32)$ sudo add-apt-repository ppa:graphics-drivers/ppa 
 (nwn32)$ sudo apt update 
 (nwn32)$ sudo apt install nvidia-driver-470 
 </pre> 

 Oppure se non puoi aggiungere il repository in quel modo, crea il file @/etc/apt/sources.list.d/nvidia.list@ con : 

 <pre> 
 deb http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu focal main 
 </pre> 

 Scarica e aggiungi la chiave: 

 <pre> 
 (nwn32)$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FCAE110B1118213C 

 # $ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub 
 # $ sudo apt-key add 7fa2af80.pub 
 </pre> 

 <pre> 
 (nwn32)$ sudo apt-get install libnvidia-gl-470 
 </pre> 


 Esportare il display per avviare finestre dentro l'ambiente: 

 <pre> 
 (nwn32)$ export DISPLAY=:0 
 </pre> 

 h3. Init di un ambiente wine per nwntoolset 

 Crea un file init-wine-env.sh per esportare le variabili d'ambiente nel schroot ed evitare di esportarle tutte le volte: 

 <pre> 
 #! /bin/bash 

 export DISPLAY=:0 
 export WINEPREFIX="$HOME/.wine32" 
 </pre> 

 attiva l'esportazione delle variabili: 

 <pre> 
 (nwn32)$ . init-wine-env.sh 
 </pre> 

 Crea l'ambiente nel prefix specificato nella variabile WINEPREFIX che se esportata non serve specificare: 

 <pre> 
 (nwn32)$ WINEPREFIX="$HOME/.wine32" winecfg 
 </pre> 

 Installare cabextract necessario per winetricks per installare i font, ma visto che non è disponibile nella versione 32 bit, va aggiunta l'architettura amd64 

 <pre> 
 (nwn32)$ sudo dpkg --add-architecture amd64 
 (nwn32)$ sudo apt update 
 (nwn32)$ sudo apt install cabextract 
 (nwn32)$ WINEPREFIX="$HOME/.wine32/" winetricks corefonts dotnet462 
 </pre> 

 Opzionale installa le librerie legacy che possono causare warning: 

 <pre> 
 (nwn32)$ winetricks mdac28 mfc42 vb6run 
 </pre> 


 Installa tutte le librerie .NET, i corefonts, i font tahoma e allfonts 

 <pre> 
 (nwn32)$ WINEPREFIX="$HOME/.wine32" winetricks corefonts dotnet462 tahoma allfonts 
 </pre> 

 Opzionale installa le librerie legacy che possono causare warning: 

 <pre> 
 (nwn32)$ winetricks mdac28 mfc42 vb6run 
 </pre> 

 h4. Librerie NVidia in posizioni non standard 

 Nel sistema host verifica dove si trovano le librerie: 

 <pre> 
 $ cd /usr/lib 
 $ find . -name "libGLX_nvidia.so.0" 
 </pre> 

 Individua nell'output le librerie i386 e poi monta la directory delle librerie dal sistema host nel sistema schroot: 

 <pre> 
 $ sudo mount --bind /usr/lib/i386-linux-gnu/ /srv/chroot/nwn32/usr/lib/i386-linux-gnu/nvidia/current/ 
 </pre> 

 Verifica dove si trovano le tue librerie @.so@ nvidia e adatta i link simbolici di conseguenza. Per me su Lubuntu 24.04 sono in /usr/lib/i386-linux-gnu/nvidia/current/, ma in debian dentro il schroot il sistema se le aspetta in /usr/lib32/nvidia 

 <pre> 
 (nwn32)$ sudo mkdir -p /usr/lib32 
 (nwn32)$ cd /usr/lib32 
 (nwn32)$ sudo mkdir -p nvidia 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libGLX_nvidia.so.0 nvidia/libGLX.so.0 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libEGL_nvidia.so.0 nvidia/libEGL.so.1 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libGLESv2_nvidia.so.2 nvidia/libGLESv2.so.2 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libGLESv1_CM_nvidia.so.1 nvidia/libGLESv1_CM.so.1 
 (nwn32)$ sudo ln -sf /usr/lib/i386-linux-gnu/nvidia/current/libcuda.so.1 nvidia/libcuda.so.1 
 </pre> 

 Poi impostare LD_LIBRARY_PATH: 

 <pre> 
 (nwn32)$ export LD_LIBRARY_PATH=/usr/lib32/nvidia:$LD_LIBRARY_PATH 
 (nwn32)$ WINEPREFIX="$HOME/.wine32" WINEARCH=win32 LIBGL_ALWAYS_SOFTWARE=1 wine ~/Giochi/Neverwinter/game/bin/win32/nwtoolset.exe  
 </pre> 

 h4. Montare un percorso esterno  

 Modifica il file @/etc/schroot/default/fstab@ : 

 <pre> 
 /media/tuo-utente/VOLUME_ESTERNO/Giochi/Neverwinter/Neverwinter_Enhanced_Installed /srv/chroot/nwn32/mnt/nwn_game none rw,bind 0 0 
 </pre> 

 Crea il punto di mount nel sistema host: 

 <pre> 
 $ sudo mkdir -p /srv/chroot/nwn32/mnt/nwn_game 
 </pre> 

 h3. Installare i font 

 Installare cabextract necessario per winetricks per installare i font, ma visto che non è disponibile nella versione 32 bit, va aggiunta l'architettura amd64 
 <pre> 
 (nwn32)$ sudo dpkg --add-architecture amd64 
 (nwn32)$ sudo apt update 
 (nwn32)$ sudo apt install cabextract 
 (nwn32)$ WINEPREFIX="$HOME/.wine32/" winetricks corefonts dotnet462 
 </pre> 

 Installare font aggiuntivi 

 <pre> 
 (nwn32)$ WINEPREFIX="$HOME/.wine32/" winetricks corefonts 
 (nwn32)$ WINEPREFIX="$HOME/.wine32/" winetricks tahoma 
 (nwn32)$ WINEPREFIX="$HOME/.wine32/" winetricks allfonts 
 </pre> 

 se alcuni font non dovessero essere disponibili in wine, installarli nella macchina host e copiarli nella cartella Fonts del drive C: di wine 

 <pre> 
 $ sudo apt install ttf-mscorefonts-installer 
 $ cp /usr/share/fonts/truetype/msttcorefonts/* /home/user/.wine_prefix_dir/drive_c/windows/Fonts 
 </pre> 

 h4. Aumentare dimensione dei font e correggere MS Sans Serif mappato male 

 Controlla che in ~/.wine32/drive_c/windows/Fonts ci siano i font. Altrimenti copiali dal sistema host: 

 <pre> 
 cp /usr/share/fonts/truetype/msttcorefonts/*.ttf ~/.wine32/drive_c/windows/Fonts 
 </pre> 

 Apri regedit 

 <pre> 
 (nwn32)$ regedit 
 </pre> 

 e valorizza le sostituzioni nel percorso: 

 <pre> 
 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes 
 </pre> 

 per i valori 

 <pre> 
 "MS Shell Dlg"="Tahoma Bold" 
 "MS Shell Dlg 2"="Tahoma Bold" 
 </pre> 

 Questo rende più leggibili la maggior parte dei font dell'interfaccia, ma il font dei "Dialog" delle proprietà rimangono molto sottili. 

 Sapendo che Aurora Toolset è scritto in Delphi e aprendolo con ResourceHacker (http://www.angusj.com/resourcehacker/) si nota che i componenti vengono creati dinamicamente e utilizzano font "MS Sans Serif". 

 Crea un sostituto di "MS Sans Serif" con un font riconoscibile (Tipo Courier New): 

 <pre> 
 "MS Sans Serif"="Courier New"  
 </pre> 

 Se il font è ancora troppo sottile, bisogna ingannare il sistema per fargli usare la versione bold di courier al posto della versione plain. 
 Copia il font in versione bold al posto della versione plain (magari fatti prima un backup): 

 <pre> 
 (nwn32)$ cd ~/.wine32/drive_c/windows/Fonts 
 (nwn32)$ mv cour.ttf cour.ttf.bak 
 (nwn32)$ cp courbd.ttf cour.ttf 
 </pre> 

 Per rendere effettive le modifiche avviare winecfg.