L’installazione di OS/2 a 16 bit in una macchina virtuale varia da “difficile” a “impossibile”, a seconda della versione di OS/2 e del software di virtualizzazione utilizzato. In VirtualBox 4.0.8, le cose si sono allontanate dall’“impossibile” e si sono avvicinate al semplicemente “difficile”. La versione 4.0.8 ha risolto i problemi con l’emulazione floppy che rendevano difficile l’installazione, ma rimangono ancora molti ostacoli. La maggior parte di questi hanno poco a che fare con la virtualizzazione e sono semplicemente una conseguenza dell’età di OS/2: i PC della fine degli anni ’80 non erano proprio come i PC di oggi.
Quando si crea una VM per OS/2 1.x, il tipo di sistema operativo scelto non ha molta importanza. Le impostazioni predefinite generalmente non sono adatte. Le seguenti impostazioni devono o dovrebbero essere modificate:
- Il disco rigido deve essere inferiore a 512 MB. Sono utilizzabili dimensioni di 500 MB o meno (e 500 MB sono ancora enormi per OS/2 a 16 bit). Le dimensioni maggiori di circa 504 MB richiedono la conversione della geometria, che OS/2 1.x non supporta.
- È necessario aggiungere un’unità floppy alla VM, ovviamente, poiché i supporti di installazione sono floppy.
- Il CD-ROM emulato dovrebbe essere rimosso. Non esistono driver CD-ROM ATAPI per OS/2 a 16 bit e alcune versioni di OS/2 impiegano notevolmente più tempo per l’avvio quando è presente un CD-ROM.
- La dimensione della memoria assegnata alla VM generalmente non ha importanza. Il minimo (4 MB) è sufficiente e OS/2 a 16 bit non può utilizzare più di 16 MB di RAM.
Qualsiasi modalità di virtualizzazione dovrebbe funzionare: software, VT-x o AMD-V.
In generale, la difficoltà di installazione di OS/2 aumenta con la diminuzione del numero di versione di OS/2: le versioni precedenti sono più esigenti. Cominciamo dalle versioni più facili da installare e torniamo indietro nel tempo.
OS/2 1.30.1 o successivo, IBM o Microsoft
Il paragrafo seguente si applica solo a OS/2 1.30.1 e OS/2 1.30.2, non alla versione originale di OS/2 1.3. Si noti che IBM spesso non etichetta le versioni in modo molto chiaro e tutte le versioni 1.30.x visualizzano “Versione 1.30” nella schermata iniziale. Un modo rapido per distinguere la versione originale è in base alla data del copyright: la versione originale 1.3 mostra il copyright 1990, mentre le versioni aggiornate mostrano 1991.

L’installazione è semplice purché vengano rispettate le precauzioni di cui sopra. Per MS OS/2 è possibile utilizzare il dischetto di installazione A o B. Per la partizione di sistema è possibile scegliere HPFS o FAT. Si consiglia di accettare le impostazioni predefinite nel programma di installazione per gli utenti che non hanno esperienza con OS/2 1.x, tranne per il fatto che il tipo di mouse deve essere impostato manualmente su PS/2. Dopo aver inserito i floppy richiesti nel programma di installazione, la configurazione iniziale viene eseguita e OS/2 si avvia senza problemi dal disco rigido virtuale. Facile!
IBM OS/2 1.3
Installare la versione iniziale di OS/2 1.3 è molto più difficile perché questa e la maggior parte delle versioni precedenti si bloccano su macchine più veloci di una 386:

Per evitare di confondere questo problema con altri potenziali problemi, verificare che si tratti effettivamente di TRAP 0000 (non di un altro numero di trap), CX=0000 e AX=86A0. Il contenuto della maggior parte degli altri registri varia a seconda della configurazione del sistema host e della versione di OS/2 in uso.
Il driver della tastiera OS/2 contiene il codice di calibrazione del timer che utilizza un semplice loop software. Sulle macchine “veloci”, il numero massimo di iterazioni viene raggiunto prima che il timer scatti anche solo una volta; si noti che a causa di questa dipendenza, il sistema operativo non sempre si blocca e, soprattutto sui sistemi host più lenti che utilizzano la virtualizzazione del software, il blocco potrebbe non verificarsi ogni volta.
Il crash è una divisione per zero (trap 0) su un’istruzione DIV CX in cui il registro CX contiene zero. Il modo per aggirare questo problema è applicare una patch a OS/2 ed eliminare il loop danneggiato. La sequenza del codice originale è simile alla seguente:

Questo ovviamente divenne un problema già nel 1991, perché OS/2 1.30.1 contiene un codice leggermente diverso:

In altre parole, se CX è zero, viene forzato a un valore diverso da zero per evitare la trappola della divisione per zero.
A quanto pare, la sequenza di istruzioni MOV/MOV/MUL/DIV è piuttosto unica e si verifica solo nei driver BASEDD0x.SYS. Per evitare il crash è sufficiente rimuovere l’istruzione DIV, sostituendola con NOP.
È disponibile un semplice script Python per svolgere il lavoro duro. Lo script può essere eseguito su singoli file (come BASEDD01.SYS) o su immagini floppy. È quindi adatto per applicare patch ai floppy di avvio fisico così come alle immagini dei dischetti. Lo script crea backup dei file modificati, ma deve essere utilizzato con attenzione.

OS/2 1.2, Microsoft o IBM
OS/2 1.2 richiede l’applicazione di patch: vedere sopra. L’installazione non è sostanzialmente diversa da OS/2 1.3.

Microsoft OS/2 1.1
MS OS/2 1.1 richiede l’applicazione di patch. Nelle versioni precedenti a OS/2 1.2, non esisteva alcun driver BASEDD0x.SYS unito ma piuttosto diversi driver separati. Il driver che necessita di patch in OS/2 1.1 e 1.0 per evitare trappole di divisione per zero è KBD01.SYS.

Il programma di installazione era diverso e HPFS non era un’opzione. Tieni presente che alcune versioni di OS/2 1.1 potrebbero essere ancora instabili su CPU host veloci.
Microsoft OS/2 1.0
MS OS/2 1.0 richiede l’applicazione di patch per evitare trappole della divisione per zero, vedere sopra. Inoltre, OS/2 1.0 si arresta in modo anomalo o si blocca se la VM ha più di 16 MB di RAM. Le dimensioni della RAM pari o inferiori a 8 MB sono sicure e più che sufficienti.
FDISK deve essere eseguito dal programma di installazione per creare una partizione per OS/2. Tieni presente che questa partizione non può essere maggiore di 32 MB, ma FDISK può creare automaticamente una partizione primaria della dimensione massima consentita. Il programma di installazione deve anche formattare la partizione.

MS OS/2 1.0 non supportava i mouse PS/2. OS/2 può essere installato senza supporto per il mouse (con una perdita di funzionalità appena percettibile), oppure è possibile copiare manualmente un driver per mouse PS/2 da una versione successiva di OS/2.
IBM OS/2 1.0 e 1.1
Le versioni di IBM OS/2 precedenti alla 1.2 utilizzano un metodo in stile 286 per passare dalla modalità protetta a quella reale, almeno sui sistemi compatibili con PC/AT. Questo metodo prevede il ripristino della CPU e non è supportato da VirtualBox (o dalla maggior parte degli altri prodotti di virtualizzazione). Queste versioni attualmente non possono essere installate in una VM. Le versioni Microsoft di OS/2 1.0 e 1.2 utilizzavano un metodo specifico per 386 più veloce quando veniva rilevata una CPU 386 o successiva. I rilasci di IBM probabilmente non utilizzavano questo metodo perché all’epoca i sistemi 386 di IBM erano tutti basati sull’architettura PS/2.