Written by: Helio Loureiro
Category: FreeBSD
Hits: 9068

Uma das melhores aquisições em minhas viagens foi o HD externo de 160 GB da Iomega. Pequeno, leve e suportado pelo FreeBSD:


umass0: Iomega Iomega HDD USB2.0 Drive, rev 2.00/2.40, addr 2 
da0 at umass-sim0 bus 0 target 0 lun 0 
da0:  Fixed Direct Access SCSI-0 device 
da0: 40.000MB/s transfers 
da0: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)

Ao formatar, decidi criar uma instalação de Ubuntu sobre o mesmo, utilizando uma partição (da0s1) como raiz, outra (da0s2) maior como home, uma para troca com usuários de windows (da0s6) e uma última com o que sobrou (da0s7), que ficou como "/mnt/ots".

Utilizando o fdisk-linux, disponível no ports, é possível criar e depois visualizar as partições.


musashi# fdisk-linux -l /dev/da0 

Disk /dev/da0: 160.0 GB, 160041885696 bytes 
255 heads, 63 sectors/track, 19457 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 

    Device Boot  Start     End     Blocks  Id System 
/dev/da0s1           1     608   4883728+  83 Linux 
/dev/da0s2         609   12766   97659135  83 Linux 
/dev/da0s3       12767   19457  53745457+   5 Extended 
/dev/da0s5       12767   12888    979933+  82 Linux swap 
/dev/da0s6       18242   19457   9767488+   b Win95 FAT32 
/dev/da0s7       12889   18241  42997941   83 Linux 
Partition table entries are not in disk order

Sendo que o tipo Ext3 (Journalling) é suportado pelo FreeBSD, nada melhor que o utilizar para guardar os dados, fazendo todo sincronismo de UFS para Ext3 e tendo um sistema backup, em Linux, disponível no HD externo.

Para fazer o mount/umount, criei um pequeno script, que segue abaixo, já que o sistema de automount não reconheçe perfeitamente os devices e respectivos pontos de montagem, fora o fato do mesmo alterar a posição de da0 para da1 ou qualquer outro da, dependendo de qual outro dispositivo estiver conectado.

mount_iomega.sh


 #! /bin/sh 
case $1 in
    -m) ;; 
    -u) ;; 
     *) echo "Use: $0 [-m|-u]" 
        echo " -m: mount disks " 
        echo " -u: umount disks " 
        exit 1 
        ;; 
esac 

echo "Finding Iomega" 
### Finding device 
umass=`dmesg | grep -i iomega | tail -1|awk -F":" '{print $1}'` 
umass_id=`echo $umass | sed 's/umass//'` 
device=`dmesg | grep "umass-sim$umass_id" | tail -1 |awk '{print $1}'` 

if [ ! $umass_id ] ; then 
    echo "Impossible to find Iomega device" 
    exit 1 
fi 

case $1 in 
    -m) echo "Checking partitions" 
        for id in 1 2 7 
            do 
            fsck.ext3 -y /dev/${device}s${id} 
        done 
        for id in 6 
            do 
            fsck_msdosfs -y /dev/${device}s${id} 
        done 
        echo "Mounting partitions" 
        mount | grep "/dev/${device}s1" > /dev/null 2>&1 
        if [ $? -ne 0 ]; then 
            mount_ext2fs /dev/${device}s1 /mnt/ext2
        fi 
        mount | grep "/dev/${device}s2" > /dev/null 2>&1 
        if [ $? -ne 0 ]; then 
            mount_ext2fs /dev/${device}s2 /mnt/ext2/home
        fi 
        mount | grep "/dev/${device}s7" > /dev/null 2>&1 
        if [ $? -ne 0 ]; then 
            mount_ext2fs /dev/${device}s7 /mnt/ext2/mnt/ots
        fi 
        mount | grep "/dev/${device}s6" > /dev/null 2>&1 
        if [ $? -ne 0 ]; then 
            mount_msdosfs -u 1000 -g 100 -o longnames -m 777 /dev/${device}s6 /mnt/msdos
        fi 
        ;; 

    -u) for dir in msdos ext2/mnt/ots ext2/home ext2 
            do 
            echo "Umounting: /mnt/$dir" 
            umount /mnt/$dir 
        done 
        ;; 
esac