Evitare auto-reboot di Vista

Da LugMan TNG.

Problema

Abbiamo un computer fiso sul quale è intallato Window Vista e sul quale è stato installato un vero sistema operativo, ossia Linux in particolare Ubuntu 9.04. Ubuntu non ha ovviamente problemi ne al boot ne in funzionamento, mentre, sempre al boot, quando si sceglie di eseguire Vista il sistema non solo non parte, ma fa riavviare l'intero sistema.

note:

  • Il bootloader installato di default è ovviamente GRUB
  • Questo problema è stato riscontrato solo su questo computer, mentre su altre configurazioni non vi sono stati mai problemi
  • Il partizioneamento del disco è stato fatto in Vista

Hardware

Cercando in internet sembra che altri (per la verità pochissimi) abbiano avuto la stessa esperienza. Viene quindi riportato di seguito il modello di computer, partizioni e note sul software installato.
Hardware: output di lspci

00:00.0 Host bridge: Intel Corporation 82975X Memory Controller Hub (rev c0)
00:01.0 PCI bridge: Intel Corporation 82975X PCI Express Root Port (rev c0)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 01)
00:1c.5 PCI bridge: Intel Corporation 82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 01)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GH (ICH7DH) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 IDE interface: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)
01:00.0 VGA compatible controller: nVidia Corporation NV43 [GeForce 6600 GT] (rev a2)
03:00.0 SATA controller: JMicron Technologies, Inc. JMB361 AHCI/IDE (rev 02)
03:00.1 IDE interface: JMicron Technologies, Inc. JMB361 AHCI/IDE (rev 02)
04:00.0 Ethernet controller: Intel Corporation 82573L Gigabit Ethernet Controller
05:00.0 Communication controller: Conexant Systems, Inc. HSF 56k Data/Fax Modem (rev 01)
05:03.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306 Fire II IEEE 1394 OHCI Link Layer Controller (rev c0)

La scheda madre è una MSI 975X Platinum

Partizioni: output di fdisk -l /dev/sda (è presente un solo disco SATA)

Disco /dev/sda: 250.0 GB, 250059350016 byte
255 testine, 63 settori/tracce, 30401 cilindri
Unità = cilindri di 16065 * 512 = 8225280 byte
Identificativo disco: 0xd7fd11c2

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       22929   184169468    7  HPFS/NTFS
/dev/sda2           22930       22932       24097+  83  Linux
/dev/sda3           22933       30401    59994742+   5  Esteso
/dev/sda5           22933       25364    19535008+  83  Linux
/dev/sda6           25365       25488      995998+  82  Linux swap / Solaris
/dev/sda7           25489       30401    39463641   83  Linux

Configurazione SW:
Configurazione di GRUB relativa a Vista creata da Ubuntu 9.04:

title		Windows Vista (loader)
rootnoverify	(hd0,0)
savedefault
makeactive
chainloader	(hd0,0)+1

Soluzione

La soluzione è stata installare LILO al posto di GRUB. Infatti il problema sembra appunto essere legato più al bootloader che ai sistemi installati. La configurazione di LILO proposta di seguito è stata scritta a mano basandosi sui dati di del menù di GRUB (/boot/grub/menu.lst). Di seguito sono riportate le linee principali al solo scopo di confrontarle con lilo.conf:

title	Ubuntu 9.04, kernel 2.6.28-11-generic
uuid	e227f792-bdb5-42ac-8095-391c2b03de65
kernel	/vmlinuz-2.6.28-11-generic root=UUID=b3edeecc-925e-4bf2-ad7b-bd39afc0918c ro quiet splash 
initrd	/initrd.img-2.6.28-11-generic
quiet

title	Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid	e227f792-bdb5-42ac-8095-391c2b03de65
kernel	/vmlinuz-2.6.28-11-generic root=UUID=b3edeecc-925e-4bf2-ad7b-bd39afc0918c ro  single
initrd	/initrd.img-2.6.28-11-generic

title	Ubuntu 9.04, memtest86+
uuid	e227f792-bdb5-42ac-8095-391c2b03de65
kernel	/memtest86+.bin
quiet

La configurazione è stata scritta a mano creando il file /etc/lilo.conff in quanto il comando liloconfig (che Ubuntu suggerisce di eseguire quando si installa il pacchetto lilo) non riesce a determinare la configurazione a a causa dell'identificazione dei dischi con UUID. I parametri per UUID verranno comunque passati al kernel.
Configurazione di LiLo: (/etc/lilo.conf)

boot=/dev/sda
# map=/boot/map
# install=/boot/boot.b
root=/dev/sda
default=Ubuntu-9.04
prompt
timeout=50
#message=/boot/message

# UBUNTU OS
image=/boot/vmlinuz-2.6.28-11-generic
        label=Ubuntu-9.04
        root=/dev/sda7
        initrd=/boot/initrd.img-2.6.28-11-generic
        append="root=UUID=bb0dfb02-86bb-4c5b-87d9-2c2c4aebb578 ro quiet splash"
        read-only

# UBUNTU in Recovery Mode
image=/boot/vmlinuz-2.6.28-11-generic
        label="Ubuntu-9-recov"
        root=/dev/sda7
        initrd=/boot/initrd.img-2.6.28-11-generic
        append="root=UUID=bb0dfb02-86bb-4c5b-87d9-2c2c4aebb578 ro single"
        read-only

# UDUNTU MemTest
image=/boot/memtest86+.bin
        label="MemTest"

# ALTRI... peggio di WinME
other=/dev/sda1
        label="Window Vista"
        table=/dev/sda

note:

  • Questa soluzione ha il problema che, nel caso il sistema venga aggiornato, Ubuntu dovrebbe riconfigurare (e reinstallare) Grub. Occorrerebbe quindi trovare il modo di settare LILO come bootloader di default, cosa che si può fare con altri sistemi come SlackWare, SuSE e tantissimi altri.
  • Per chi non avesse dimestichezza con LILO, si noti che i parametri passati al kernel in GRUB (ossia quelli che seguono /vmlinuz-2.6.28-11-generic) vengono mappati in LILO con il comando append, mentre il kernel è identificato da image seguito dal percorso completo all'immagine del kernel. Se quindi Ubuntu dovesse ripristinare GRUB con nuovi kernel, è sufficiente modificare questi campi per analogia.
  • Per tutte le informazioni relative ai parametri di lilo.conf, riferirsi al manuale (man lilo.conf).