Seguendo un suggerimento di Ponce di qualche anno fa (non ricordo il thread), avevo installato una Slackware 15.0 a 32 bit in macchina virtuale. Uso regolarmente questo sistema per testare i miei slackbuild su sistemi a 32 bit. Per comodità uso VirtualBox sulla current, dato che è il mio sistema predefinito, mentre i test sulla Slackware64 stable li faccio in un'altra macchina alla quale mi collego sempre con SecureShell e quindi facendo tutto da terminale.
Come al solito prima o poi saltano i problemini: oggi ho aggiornato il kernel alla versione 6.6.6 e dopo tanto tempo sono incappato in errori di compilazione dei moduli di VirtualBox.
Faccio presente che uso una vecchia versione di VirtualBox, la 6.1.32. Il motivo è che la versione funziona regolarmente con la Slack 32bit installata e ho sempre ritenuto preferibile non aggiornarla. Infatti, se provo a compilare una nuova versione (mi sembra che attualmente sia disponibile lo slackbuild per la 6.1.44) lo script si arresta impostando la variabile d'ambiente SOFTWARE_VIRTUALIZATION=yes.
Da quello che so (almeno così c'è scritto in README) questo settaggio è indispensabile per poter installare sistemi guest a 32 bit, ma è necessario che il compilatore supporti la compilazione a 32 bit e questo sembra sia possibile solo installando le multilib di AlienBob. Questo succede anche con la mia attuale versione, la 6.1.32.
A questo punto non riesco a spiegarmi l'arcano: non ricordo di aver mai installato le multilib nella mia Slackware64 e allora come è possibile che sia riuscito a compilare la 6.1.32 e farla funzionare con un guest a 32 bit? Purtroppo sono passati anni e non ricordo cosa avevo fatto, ma dubito di aver installato le multilib e poi rimosse, perché sono fortemente restio a installare pacchetti precompilati ad eccezione di quelli ufficiali rilasciati da Pat.
Ho anche provato a compilare la 6.1.44 senza impostare il flag SOFTWARE_VIRTUALIZATION ma il processo si arresta perché a quanto pare anche lo slackbuild di virtualbox deve essere riadattato per renderlo compatibile con il nuovo libxml2.
Alla fine, prima di tentare di risolvere il problema con xml, non sapendo se effettivamente mi serviva per risolvere il mio problema specifico, ho preferito cercare di risolvere il problema della compilazione dei moduli cercando la patchare la 6.1.32 e alla fine ci sono riuscito, anche se mi ci sono volute ore e pazienza.
Per ora il problema è risolto, ma prima o poi dovrò affrontare seriamente quello di un aggiornamento del pacchetto di VirtualBox, perciò chiedo: è proprio necessario installare le multilib di AlienBob o posso farne a meno? Non vorrei imbarcarmi in configurazioni che poi finirebbero per aggiungere problemi ai problemi per una macchina virtuale che uso solo per uno scopo limitato.
VirtualBox su Slackware64 con supporto a guest a 32-bit
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware64 usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware64 usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
-
- Linux 3.x
- Messaggi: 654
- Iscritto il: mer 16 lug 2014, 17:35
- Nome Cognome: Giancarlo Dessì
- Slackware: 64 current
- Kernel: 6.6.xx
- Desktop: KDE 5.27
- Località: Sardinia
- Contatta:
Re: VirtualBox su Slackware64 con supporto a guest a 32-bit
Per chi avesse un problema analogo al mio, ovvero far funzionare VirtualBox 6.1.32 sulla current aggiornata con i kernel della serie 6.6, queste sono le modifiche che ho apportato:
1) nello slackbuild ho aggiunto le seguenti righe:
Il codice della patch è il seguente:
La patch l'ho elaborata per tentativi apportando le modifiche estrapolate da un confronto con i codici dei sorgenti delle nuove versioni rilasciate di VirtualBox. Mi è andata bene perché alla fine non c'era molto da modificare, se non aggiungere i nuovi fix man mano che intercettavo gli errori.
1) nello slackbuild ho aggiunto le seguenti righe:
Codice: Seleziona tutto
sed -i ./vboxdrv/r0drv/linux/memobj-r0drv-linux.c -e "s/pte_offset_map/pte_offset_kernel/g"
patch -p1 < $CWD/linux-6.6.patch
Codice: Seleziona tutto
--- ./vboxdrv/r0drv/linux/memobj-r0drv-linux.c
+++ ./vboxdrv/r0drv/linux/memobj-r0drv-linux.c
@@ -1236,6 +1236,9 @@
fWrite, /* force write access. */
# endif
- &pMemLnx->apPages[0], /* Page array. */
- papVMAs); /* vmas */
+ &pMemLnx->apPages[0] /* Page array. */
+# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
+ , papVMAs /* vmas */
+# endif
+ );
/*
* Actually this should not happen at the moment as call this function
@@ -1258,6 +1258,8 @@
fWrite, /* force write access. */
# endif
- &pMemLnx->apPages[0], /* Page array. */
- papVMAs /* vmas */
+ &pMemLnx->apPages[0] /* Page array. */
+# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
+ , papVMAs /* vmas */
+# endif
# if GET_USER_PAGES_API >= KERNEL_VERSION(4, 10, 0)
, NULL /* locked */
@@ -1301,7 +1301,13 @@
while (rc-- > 0)
{
flush_dcache_page(pMemLnx->apPages[rc]);
+# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
+# if RTLNX_VER_MIN(6,3,0)
+ vm_flags_set(papVMAs[rc], VM_DONTCOPY | VM_LOCKED);
+# else
papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED;
+# endif
+# endif
}
LNX_MM_UP_READ(pTask->mm);
@@ -1771,7 +1771,10 @@
/* Thes flags help making 100% sure some bad stuff wont happen (swap, core, ++).
* See remap_pfn_range() in mm/memory.c */
-#if RTLNX_VER_MIN(3,7,0)
+
+#if RTLNX_VER_MIN(6,3,0)
+ vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
+#elif RTLNX_VER_MIN(3,7,0)
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
#else
vma->vm_flags |= VM_RESERVED;
#endif
--- ./vboxnetflt/linux/VBoxNetFlt-linux.c
+++ ./vboxnetflt/linux/VBoxNetFlt-linux.c
@@ -38,4 +38,7 @@
# include <linux/nsproxy.h>
#endif
+#if RTLNX_VER_MIN(6,4,10) || RTLNX_RHEL_MAJ_PREREQ(9,4)
+# include <net/gso.h>
+#endif
#include <linux/netdevice.h>
#if RTLNX_VER_MAX(2,6,29) || RTLNX_VER_MIN(5,11,0)
- targzeta
- Iper Master
- Messaggi: 6631
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: VirtualBox su Slackware64 con supporto a guest a 32-bit
Grande!
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama