gen
21

Installazione di Debian Lenny su pendrive persistente (partendo da zero)

 

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

mag
12

Installare Debian/Ubuntu su USB, VirtualBox ci aiuta

 

Il motivo per cui scrivo questo post è perché sono stato mosso dalla lentezza del mio Ubuntu che sul portatile era diventata ormai improponibile, per cui prima di rasare a zero ho voluto vedere come si comportano debian e ubuntu sul mio hardware (Pentium M processor 1.86GHz, 1Gb RAM, video Intel i810).

Ho iniziato a usare le versioni livecd di debian e ubuntu e due pendrive con installate ubuntu e debian minimali, e via via che provavo ho concentrato l’attenzione più su come si riduce e si installa il software su USB che sulle prestazioni e riconoscimento hardware..

Vista la scomodità di riavviare ogni volta per provare l’avvio da USB, ho usato VirtualBox, puntando al disco vmdk ricavato con VBoxManage sia delle pendrive che di un disco esterno USB.

In questi giorni ho considerato tra l’altro che esistono vari modi di installare su USB (argomento più volte trattato su questo blog) per esempio le versioni di Ubuntu/Debian usano un file compresso (casper/live) con squashfs che copiato su partizione FAT e aggiustando opportunamente syslinux effettua il boot “decomprimendo”  e comportandosi allo stesso modo di un LiveCD, i cambiamenti, secondo i livecd, possono essere mantenuti con l’opzione “persistent”.

E chiaro che è una soluzione comoda, veloce, ma di negativo ci sono le prestazioni, visto che oltre alla lentezza dell’USB c’è anche la decompressione di 700MB che diventano 2GB.

Un altro metodo è quello di usare un supporto USB esterno e effettuare una vera installazione su pendrive/disco USB e usare le opzioni avanzate per posizonare grub sul disco esterno, facendo attenzione perché nell’installazione il disco USB sarebbe (hd1) e all’avvio si ripresenta come (hd0).

Questa è la scelta ottimale perché la partizione è Linux nativa (ext3 o altro), ma visto che supera i 2GB, è chiaro che non si può usare per supporti piccoli e infine non è possibile scegliere i pacchetti da installare.

grub hd1

Altra possibilità, che secondo me è la più tecnica e interessante,  è quella di scaricare un filesystem minimale (con debootstrap) su una partizione montata, passare in chroot, installare il boot loader e sistemare le “cose” per l’avvio vero e proprio. Qui Debian (e Ubuntu segue) la fa da padrona perché in poco tempo da un qualunque sistema già avviato (si, lo so dovete già avere un sistema) scarica un minisistema funzionante e copiabile anche su supporti esterni.

Tra le mie varie letture di questi giorni vi segnalo alcuni siti sui quali mi sono basato:

1) http://eccelinux.org/wiki/index.php?title=Debian_su_supporto_USB
2) http://pseudocode.cc/tutorials/ubuntu-on-a-usb-flash-disk/
3) https://help.ubuntu.com/6.10/ubuntu/installation-guide/hppa/linux-upgrade.html
4) http://ubuntuforums.org/showthread.php?t=327466

L’esempio che segue è per Ubuntu, ma allo stesso modo ho usato Debian su pendrive/disco USB (su pendrive non è consigliabile usare la partizione di swap, basta usare una sola partizione ext3 e renderla attiva).
Ammesso che il disco sia montato in /media/disk, iniziamo subito con un errore:

$ sudo debootstrap –arch i386 hardy /media/disk/ http://it.archive.ubuntu.com/ubuntu
/usr/share/debootstrap/functions: line 1034: /media/disk/test-dev-null: Permission denied
E: Cannot install into target ‘/media/disk’ mounted with noexec or nodev

occorre smontare la periferica montata con opzioni nodev e noexec e controllate la partizione sda, hda, hdb, ecc…. ;)

$ sudo umount /media/disk
$ sudo mkdir /media/sda1
$ sudo mount /dev/sda1 /media/sda1

Siamo pronti, fuoco alle polveri:

$ sudo debootstrap –arch i386 hardy /media/sda1/ http://it.archive.ubuntu.com/ubuntu
I: Retrieving Release
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages…
I: Resolving dependencies of base packages…
I: Checking component main on http://it.archive.ubuntu.com/ubuntu…

……
I: Configuring ubuntu-minimal…
I: Configuring libc6…
I: Configuring initramfs-tools…
I: Base system installed successfully.

Usiamo chroot per accedere al nuovo filesystem e prepariamo grub (occhio agli apici da “copia e incolla”)

$ sudo chroot /media/sda1/ /bin/bash

# aptitude install grub
# mkdir /boot/grub
# echo “(hd0) /dev/sda” > /boot/grub/device.map
# exit

$ sudo grub-install –no-floppy –root-directory=/media/sda1 /dev/sda

Due to a bug in xfs_freeze, the following command might produce a segmentation
fault when /mnt/sda2/boot/grub is not in an XFS filesystem. This error is harmless and
can be ignored.
xfs_freeze: specified file ["/mnt/sda2/boot/grub"] is not on an XFS filesystem
Installation finished. No error reported.
This is the contents of the device map /mnt/sda2/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install’.

(hd0) /dev/sda

E’ importante segnarsi qual’è l’UUID della partizione per usarlo in menu.lst di grub, il comando per ricavarlo è:

$ sudo blkid |grep sda

/dev/sda1: UUID=”978d7916-496f-4c03-b373-9ba05820bddb” TYPE=”ext3?
/dev/sdab2: TYPE=”swap” UUID=”6222489e-2ccf-4c24-8eaa-0bc0660b8ba3?

il file /boot/grub/menu.lst contiene:

default 0
timeout 10
title Ubuntu hardy 8.04
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-16-generic root=UUID=978d7916-496f-4c03-b373-9ba05820bddb ro quiet splash
initrd /boot/initrd.img-2.6.24-16-generic

Installiamo l’immagine del kernel:

# apt-get install linux-image-2.6.24-16-generic
…..
update-initramfs: Generating /boot/initrd.img-2.6.24-16-generic

e personalizziamo la lingua:

# mount -t proc proc /proc/
# dpkg-reconfigure console-setup
# apt-get install language-pack-it language-pack-gnome-it

Aggiungiamo l’utente e il gruppo che amministreranno il sistema:

# adduser ubuntu #rispondere (y)
# addgroup –system admin
# adduser ubuntu admin

aggiungere le righe a /etc/sudoers:

# visudo

%admin  ALL=(ALL) ALL

e impostiamo la password di root

# passwd root
Inserire nuova password UNIX:
Reinserire la nuova password UNIX:
passwd: password aggiornata correttamente

Infine aggiorniamo il sistema con:

# apt-get update && apt-get upgrade

e installiamo il software “standard”

# apt-get install ubuntu-standard

prepariamo il file /etc/fstab

# UNCONFIGURED FSTAB FOR BASE SYSTEM
# /etc/fstab: static file system information.
#
# file system    mount point   type    options                  dump pass
/dev/sda1         /             ext3    defaults                 0    1
/dev/cdrom        /media/cdrom0 udf,iso9660 user,noauto          0    0
proc            /proc           proc    defaults        0       0
none /proc/bus/usb usbfs devgid=46,devmode=664 0 0
Infine usciamo dall’ambiente chroot e smontiamo il disco/pendrive

# exit
$ sudo umount /media/sda1

A questo punto dovremmo riavviare con il disco USB inserito, ma se abbiamo VirtualBox, ricaviamo il disco vmdk e inseriamolo in una macchina virtuale. Se riceviamo errore di permessi su /dev/sdb o  /dev/sda possiamo aggiungere al gruppo disk il nostro utente o impostare i pemessi a 664 della periferica (sda / sdb).

ATTENZIONE: E’ IMPORTANTE SMONTARE IL DISCO PRIMA DI ESEGUIRE LA MACCHINA VIRTUALE,

$ cd .VirtualBox/VDI
$ VBoxManage internalcommands createrawvmdk -filename disco40gb.vmdk -rawdisk /dev/sda -register

e questo è il file del mio disco da 40G usb:

$ cat disco40gb.vmdk
# Disk DescriptorFile
version=1
CID=f12a1b73
parentCID=ffffffff
createType=”fullDevice”

# Extent description
RW 156301488 FLAT “/dev/sda”
# The disk Data Base
#DDB
ddb.virtualHWVersion = “4?
ddb.adapterType=”ide”
ddb.geometry.cylinders=”16383?
ddb.geometry.heads=”16?
ddb.geometry.sectors=”63?
ddb.uuid.image=”985db28c-0fa9-4c0f-6388-0292b1ac1be0?
ddb.uuid.parent=”00000000-0000-0000-0000-000000000000?
ddb.uuid.modification=”00000000-0000-0000-0000-000000000000?
ddb.uuid.parentmodification=”00000000-0000-0000-0000-000000000000?

La cosa interessante che così si può usare il sistema in VirtualBox, portarsi dietro la pendrive o il disco (magari con le VB Guest Additions installate) e usarlo per il boot da USB reale cambiando o rigenerando se serve /etc/X11/xorg.conf

Un’altra cosa importante è che se avviate spesso la macchina virtuale su più vbox la rete diventa eth0, eth1, …. eth5 perciò vi potrei consigliare di usare al volo un comando per la configurazione dhcp:

sudo dhclient `ifconfig -a|grep eth|awk ‘{print $1}’`

ifconfig

Enjoy :)
Antonio

PS: scritto interamente da disco usb 8)

Popularity: 3% [?]



Puoi visualizzare il post originale qui.

top