Note su Solaris 10

Informazioni generali

Questa sezione contiene informazioni di carattere generale, ad esempio riguardanti le modifiche al comportamento di Solaris 10.

Modifiche introdotte dalla singola specifica UNIX, versione 3

La singola specifica UNIX versione 3 (SUSv3) introduce aggiornamenti alle seguenti interfacce del sistema operativo POSIX:

Gli aggiornamenti comportano le seguenti modifiche:

Variabile ENV nella Korn shell

La variabile d'ambiente ENV non viene più espansa nelle Korn shell non interattive. Questa modifica riguarda sia /bin/ksh che /usr/xpg4/bin/sh.

Compilatori e applicazioni SUSv3

Le applicazioni conformi a SUSv3 e ad altri standard dovrebbero essere compilate usando macro di prova delle funzioni, compilatori e opzioni appropriati. Vedere la pagina man standards(5).

Comando file

Usato con l'opzione -m, il comando file esegue confronti sui file magic definiti dall'utente. Inoltre, nell'ambiente x86, il comando non converte più gli interi multibyte nell'ordine big-endian (SPARC) prima di confrontare i valori magic. Vedere le pagine man file(1) e magic(4).

Funzioni di stampa

snprintf() e vsnprintf() restituiscono ora il numero dei byte che verrebbero formattati con il valore di input n=0. Vedere le pagine man snprintf(3C) e vsnprintf(3C).

Editor di testo

L'editor verifica alcune condizioni aggiuntive prima di leggere i file .exrc in $HOME o nella directory attiva all'avvio. Vedere le pagine man ex(1) e vi(1).

64-bit SPARC: Funzioni relative a data e ora

Se l'input time_t è troppo grande per essere rappresentato in un costrutto tm, le seguenti funzioni restituiscono un puntatore nullo e impostano errno su EOVERFLOW:

Vedere le pagine man gmtime(3C), gmtime_r(3C), localtime(3C) e localtime_r(3C).

Barre iniziali

SUSv3 ammette l'uso di una barra (/) iniziale solo nei nomi dei percorsi che specificano una directory esistente o da creare.

Programmi in /usr/xpg6/bin e /usr/xpg4/bin

I programmi contenuti in /usr/xpg6/bin e /usr/xpg4/bin presentano comportamenti conformi a SUSv3 o a XPG4 in conflitto con il comportamento predefinito di Solaris. Per poter utilizzare l'ambiente dalla riga di comando in modo conforme a SUSv3 è necessario configurare correttamente la variabile PATH. Per maggiori informazioni, vedere la pagina man del programma specifico.

Supporto dei wrapper TCP abilitato in sendmail

Il programma sendmail è stato aggiunto all'elenco dei servizi che supportano i wrapper TCP. L'aggiunta di questa capacità al programma può far sì che sendmail rifiuti alcune connessioni nei sistemi Solaris 10 che in precedenza erano configurati con servizi molto restrittivi. Per abilitare l'uso dei wrapper TCP, usare il daemon sendmail. Per informazioni sulla configurazione dei wrapper TCP, vedere sendmail versione 8.12 utilizza i wrapper TCP del Nuove funzioni di Solaris 10. Per informazioni sulla configurazione dei wrapper TCP, vedere le pagine man tcpd(1M) e hosts_access(4) contenute in SUNWtcpd.

x86: Modifica dell'identificativo fdisk di Solaris

In Solaris 10, l'identificativo fdisk di Solaris è impostato su 0xbf per facilitare la configurazione degli ambienti multiboot che includono il sistema operativo Linux. Nelle precedenti versioni di Solaris, l'identificativo fdisk era impostato su 0x82, lo stesso valore usato per la partizione di swap Linux. Il cambiamento dell'identificativo permette di installare i sistemi operativi Solaris 10 e Linux senza bisogno di reinstallare Linux o di modificarne la partizione di swap.

Il sistema operativo Solaris continua a riconoscere e a supportare le partizioni fdisk di Solaris con identificativo 0x82. Il comando fdisk può essere utilizzato per commutare tra gli identificativi 0x82 e 0xbf. Se si sta utilizzando Solaris Live Upgrade e occorre utilizzare l'identificativo 0x82, il comando luactivate permette di cambiare l'identificativo 0xbf in 0x82.

Per maggiori informazioni, vedere la pagina man fdisk(1M).

x86: Limiti all'allocazione di memoria delle applicazioni sui sistemi x86

Le applicazioni Solaris allocano la memoria usando funzioni quali malloc() , brk() o mmap(). La quantità massima di memoria che un'applicazione può allocare è determinata dalle dimensioni dello spazio di indirizzamento virtuale. Il testo, lo stack, i dati e le librerie del programma contenuti nello spazio di indirizzamento virtuale possono ulteriormente ridurre la dimensione massima disponibile per l'allocazione della memoria.

Ambiente di elaborazione a 32 bit

In un ambiente a 32 bit, lo spazio di indirizzamento virtuale a 32 bit viene condiviso tra utente e kernel. Di conseguenza, la dimensione dello spazio di indirizzamento virtuale dell'utente è pari a 4 Gbyte meno la dimensione dello spazio di indirizzamento virtuale del kernel. La configurazione della dimensione dello spazio di indirizzamento virtuale del kernel dipende dalla dimensione della memoria fisica. Quanto più aumenta la dimensione della memoria fisica, tanto più diminuisce quella dello spazio di indirizzamento dell'utente. Su sistemi con 8 Gbyte di memoria, la dimensione dello spazio di indirizzamento dell'utente è di circa 3 Gbyte.

Se i limiti di spazio per l'allocazione della memoria sono insufficienti per un'applicazione, esistono due possibilità:

Ambiente di elaborazione a 64 bit

Nell'ambiente di elaborazione a 64 bit, lo spazio di indirizzamento virtuale per le applicazioni a 32 bit è interamente a disposizione dell'utente. Ciò significa che un'applicazione a 32 bit può allocare interamente i 4 Gbyte, a cui sarà da sottrarre solo lo spazio di indirizzamento dell'utente necessario per il testo, lo stack e le librerie.

Con alcuni vecchi processori AMD a 64 bit, il limite per l'allocazione della memoria può essere ulteriormente ridotto di 1 Gbyte. Per stabilire se questa limitazione riguarda il processore in uso, procedere come segue:

  1. Eseguire il comando pmap $$ da qualunque shell a 32 bit.

  2. Nella mappa dei processi, determinare se sono presenti indirizzi pari o superiori a 0xC0000000. In caso negativo, significa che Solaris ha limitato le applicazioni a 32 bit all'utilizzo dei 3 Gbyte inferiori dello spazio di indirizzamento virtuale totale (4 Gbyte).

Le applicazioni a 64 bit possono allocare 250 Tbyte di memoria, a seconda dello spazio già in uso.

x86: Supporto del bit no execute in Solaris

Sulle piattaforme x86, Solaris 10 supporta il bit no execute (NX) in modalità a 32 bit e a 64 bit. Il bit NX permette di implementare completamente le protezioni connesse al mancato utilizzo di PROT_EXEC in varie chiamate di sistema alla memoria, ad esempio nella funzione mmap(). In precedenza, PROT_EXEC era implicitamente impostato in tutta la memoria mappata. Il supporto del bit NX in Solaris migliora la protezione antivirus.

Sui sistemi hardware che supportano NX, Solaris utilizza automaticamente il bit NX ogni volta che non viene specificato PROT_EXEC. I segmenti degli stack, tuttavia, nell'impostazione predefinita utilizzano PROT_EXEC, non il bit NX. Per modificare l'impostazione predefinita per i segmenti degli stack, usare una delle procedure seguenti:

L'amministratore di sistema può disabilitare completamente l'utilizzo del bit NX con il comando eeprom, impostando enforce-prot-exec su “off”. Questa variabile viene offerta come soluzione transitoria per i sistemi con applicazioni legacy che non dispongono di PROT_EXEC.