Inhaltsverzeichnis

FreeBSD - Festplatten

siehe auch:

Seit FreeBSD 6.3 wurde das menügeführte Plattenpartitionsprogramm sade (sysadmins disk editor) eingeführt.

ACHTUNG: Mit FreeBSD 9.0 wurde sysinstall entfernt und als Ersatz wurde in FreeBSD 9.0 bsdinstall eingeführt.

> camcontrol devlist

Disk Device Codes

Code Bezeichnung
ad ATAPI (IDE) disk / SATA
da SCSI direct access disk
acd ATAPI (IDE) CDROM
cd SCSI CDROM
fd Floppy disk

USB-Stick

siehe auch: Image auf einen USB-Stick schreiben

> dmesg
...
usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device SanDisk SanDisk 3.2 Gen1 (0x0781:0x55b1)
usb_msc_auto_quirk: UQ_MSC_NO_PREVENT_ALLOW set for USB mass storage device SanDisk SanDisk 3.2 Gen1 (0x0781:0x55b1)
ugen0.4: <SanDisk SanDisk 3.2 Gen1> at usbus0
umass0 on uhub0
umass0: <SanDisk SanDisk 3.2 Gen1, class 0/0, rev 3.20/1.10, addr 3> on usbus0
umass0:  SCSI over Bulk-Only; quirks = 0x8100
umass0:20:0: Attached to scbus20
da0 at umass-sim0 bus 0 scbus20 target 0 lun 0
da0: <SanDisk SanDisk 3.2 Gen1 DL17> Removable Direct Access SPC-4 SCSI device
da0: Serial Number A2003B84B6F17838
da0: 400.000MB/s transfers
da0: 238728MB (488914944 512 byte sectors)
da0: quirks=0x2<NO_6_BYTE>
> glabel status
                        Name  Status  Components
...
diskid/DISK-A200888888888888     N/A  da0
> ls -lha /dev/da0*
crw-r-----  1 root operator  0xf1 Feb 24 14:18 /dev/da0
crw-r-----  1 root operator  0xf3 Feb 24 14:49 /dev/da0s1 
> mount -t msdosfs /dev/da0s1 /mnt/
mount_msdosfs: /dev/da0s1: Invalid argument
> gpart show da0
=>       63  488914881  da0  MBR  (233G)
         63       7489       - free -  (3.7M)
       7552  488907392    1  ntfs  (233G)
> pkg info sysutils/fusefs-ntfs

> mount -t ntfs-3g /dev/da0s1 /mnt/
mount: /dev/da0s1: Invalid fstype: Invalid argument

Use another USB device with the FAT16 or FAT32 format. Newer USB 3.0 devices with large capacity use the exFAT format, and might not support the FAT32 format. Try using USB 2.0 devices with smaller capacity. - Diese Fehler treten auf, wenn das USB-Laufwerk zu grß ist; FreeBSD unterstützt nur die kleineren USB2.0-Laufwerke.

Festplatten im System ermitteln

Normalerweise verwendet man unter Linux für diese Aufgabe das Kommando fdisk -l, in FreeBSD kennt "fdisk" den Parameter "-l" nicht.

GEOM-Namen

braucht man die Übersetzung von GEOM-Namen zu Gerätenamen, dann kann das glabel

> glabel list

> glabel status
       diskid/DISK-7JJK1DBC     N/A  ada0
       diskid/DISK-ZA28ER52     N/A  ada1
       diskid/DISK-1SHNABYZ     N/A  ada2
       diskid/DISK-7JJKANEC     N/A  ada3
diskid/DISK-WD-WMC6M0H02SPU     N/A  ada4
diskid/DISK-WD-WXB1HB4H9AHF     N/A  ada5
diskid/DISK-WD-WMC6N0H1T7LJ     N/A  ada6
diskid/DISK-WD-WX21D7453SY1     N/A  ada7

sysctl

alle Festplatten, die der Kernel kennt:

> sysctl kern.disks
kern.disks: ada8 ada7 ada6 ada5 ada4 ada3 ada2 ada1 ada0 cd0

dmesg

alle Festplatten, die beim Boot-Vorgang gefunden wurden:

# dmesg | egrep '^ad|^da|^cd'
acd0: DVDROM  at ata0-slave UDMA33
ad4: 239372MB  at ata2-master SATA150
ad6: 239372MB  at ata3-master SATA150

oder

# dmesg | egrep ' at | Serial Number' | fgrep -B1 'Serial Number'
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: Serial Number WD-WCAW31974189
ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
ada1: Serial Number PL2331LA1G908J
ada2 at ahcich9 bus 0 scbus9 target 0 lun 0
ada2: Serial Number WD-WCAZA1451286
ada3 at ahcich10 bus 0 scbus10 target 0 lun 0
ada3: Serial Number WD-WCC131401387
ada4 at ahcich11 bus 0 scbus11 target 0 lun 0
ada4: Serial Number PL1331LA1G7G8H
ada5 at ahcich13 bus 0 scbus13 target 0 lun 0
ada5: Serial Number WD-WCAW31095888
ada6 at ahcich14 bus 0 scbus14 target 0 lun 0
ada6: Serial Number WD-WCC131651187
ada7 at ahcich15 bus 0 scbus15 target 0 lun 0
ada7: Serial Number WD-WX21D1453S81
ada8 at siisch2 bus 0 scbus20 target 0 lun 0
ada8: Serial Number WD-WCAZA1478182
ada9 at siisch3 bus 0 scbus21 target 0 lun 0
ada9: Serial Number WD-WX31D147KC8Z
pass2 at ahcich7 bus 0 scbus7 target 0 lun 0
pass2: Serial Number HKDP2211168L

bei zuviel Ausgaben in den system message buffer hilft dieser kleine Umweg; hier werden die dmesg-Meldungen vom letzten Boot-Vorgang in der Datei /var/log/dmesg.boot gespeichert und man kann sie immerwieder einsehen, auch wenn der Puffer schon voll ist und die ersten Meldungen bereits raus sind:

echo '/sbin/dmesg > /var/log/dmesg.boot 2>&1' >> /etc/rc.local
reboot
egrep ' at | Serial Number' /var/log/dmesg.boot | fgrep -B1 'Serial Number'

/dev

seit FreeBSD 5 (dynamisches /dev) geht auch ein "ls":

# ls -l /dev/ad* /dev/da* /dev/cd*
lrwxr-xr-x  1 root  wheel            4 Oct  2 10:16 /dev/ad10 -> ada2
lrwxr-xr-x  1 root  wheel            4 Oct  2 10:16 /dev/ad6 -> ada0
lrwxr-xr-x  1 root  wheel            4 Oct  2 10:16 /dev/ad8 -> ada1
lrwxr-xr-x  1 root  wheel            5 Oct  2 10:16 /dev/ad8a -> ada1a
crw-r-----  1 root  operator    0,  99 Oct  2 10:16 /dev/ada0
crw-r-----  1 root  operator    0, 101 Oct  2 10:16 /dev/ada1
crw-r-----  1 root  operator    0, 105 Oct  2 12:16 /dev/ada1a
crw-r-----  1 root  operator    0, 103 Oct  2 10:16 /dev/ada2
crw-r-----  1 root  operator    0,  97 Oct  2 10:16 /dev/cd0
crw-r-----  1 root  operator    0,  98 Oct  2 10:16 /dev/cd1
crw-r-----  1 root  operator    0, 122 Oct  2 10:16 /dev/da0
crw-r-----  1 root  operator    0, 130 Oct  2 10:16 /dev/da1
crw-r-----  1 root  operator    0, 141 Oct  2 12:16 /dev/da2
crw-r-----  1 root  operator    0, 144 Oct  2 12:16 /dev/da3
crw-r-----  1 root  operator    0, 146 Oct  2 12:16 /dev/da4
crw-r-----  1 root  operator    0, 148 Oct  2 12:16 /dev/da5

ext4 mounten (FreeBSD 11)

den Namen der Gerätedatei (hier ist es ada10) ermitteln, von einer Festplatte, die frisch angesteckt wurde:

> dmesg | tail
load_dn_sched dn_sched FQ_CODEL loaded
load_dn_sched dn_sched FQ_PIE loaded
load_dn_aqm dn_aqm CODEL loaded
load_dn_aqm dn_aqm PIE loaded
ada10 at ahcich8 bus 0 scbus8 target 0 lun 0
ada10: <WDC WD2503ABYX-01WERA1 01.01S02> ATA8-ACS SATA 2.x device
ada10: Serial Number WD-WMAYP4845471
ada10: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada10: Command Queueing enabled
ada10: 239429MB (490350672 512 byte sectors)

von ada10 die Partitionsnummer ermitteln:

> ls -1 /dev/ada10s*
/dev/ada10s1

von ada10 den Dateisystem-Typ ermitteln:

> fdisk /dev/ada10 | fgrep sysid
sysid 131 (0x83),(Linux native)

da es sich hier um ein natives Linux-Dateisystem handelt (ext2, ext3 oder ext4), werden wir den entsprechenden Treiber installieren:

> pkg install sysutils/fusefs-ext4fuse

die erste Partition mit ext4 mounten:

> ext4fuse /dev/ada10s1 /250GB

ATA

früher:

# atacontrol list

heute:

# camcontrol devlist

SCSI/USB/S-ATA

Man kann allerdings SCSI-, USB- und SATA-Gerät auch so anzeigen:

# camcontrol devlist
<PLEXTOR DVDR   PX-820SA 1.00>     at scbus0 target 0 lun 0 (pass0,cd0)
<ST31500341AS CC1H>                at scbus1 target 0 lun 0 (ada0,pass1)
<OCZ-ONYX 1.6>                     at scbus2 target 0 lun 0 (ada1,pass2)
<ST31500341AS CC1H>                at scbus3 target 0 lun 0 (ada2,pass3)
<OPTIARC DVD-ROM DDU1681S 1.04>    at scbus4 target 0 lun 0 (pass4,cd1)
<WD My Book 1130 1012>             at scbus6 target 0 lun 0 (da0,pass5)
<WD SES Device 1012>               at scbus6 target 0 lun 1 (pass6,ses0)
<WD My Book 1130 1012>             at scbus7 target 0 lun 0 (da1,pass7)
<WD SES Device 1012>               at scbus7 target 0 lun 1 (pass8,ses1)
<Generic STORAGE DEVICE 9317>      at scbus8 target 0 lun 0 (da2,pass9)
<Generic STORAGE DEVICE 9317>      at scbus8 target 0 lun 1 (da3,pass10)
<Generic STORAGE DEVICE 9317>      at scbus8 target 0 lun 2 (da4,pass11)
<Generic STORAGE DEVICE 9317>      at scbus8 target 0 lun 3 (da5,pass12)

Gerätename vom DVD-Laufwerk finden:

> camcontrol devlist | fgrep DVD | awk '{print $NF}' | tr -s '[(,)]' '\n' | grep -Ev '^$|pass[0-9]'
cd0
cd1

Informationen zu einem Gerät anzeigen

# diskinfo -v ada0
ada0
        512             # sectorsize
        10000831348736  # mediasize in bytes (9.1T)
        19532873728     # mediasize in sectors
        4096            # stripesize
        0               # stripeoffset
        19377850        # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        WDC WD101KRYZ-01JPDB1   # Disk descr.
        78JKLNEC        # Disk ident.
        No              # TRIM/UNMAP support
        7200            # Rotation rate in RPM
        Not_Zoned       # Zone Mode

eine CD/DVD kopieren:

> dd if=/dev/cd0 of=cd.iso bs=2048

gpart

Eigentlich ist gpart ein Partitionswerkzeug für GEOM, aber ich konnte damit auch meine SD-Carte sehen, auf die ich sonst nicht zugreifen konnte.

# gpart show -l
# gpart show -lp
# gpart show
=>       0  62533296  ada1  BSD  (29G)
         0  60817408     1  freebsd-ufs  (29G)
  60817408   1715888        - free -  (837M)

=>     63  3913665  da4  MBR  (1.9G)
       63       66       - free -  (33k)
      129  3913535    1  !6  (1.9G)
  3913664       64       - free -  (32k)

=>      0  3913535  da4s1  EBR  (1.9G)
        0  3913535         - free -  (1.9G)

so sieht eine Festplatte aus, auf der FreeBSD 10 mit ZFS als root-Dateisystem installiert wurde:

> gpart show
=>        34  1953525101  ada0  GPT  (932G)
          34        1024     1  freebsd-boot  (512K)
        1058    16777216     2  freebsd-swap  (8.0G)
    16778274  1936746861     3  freebsd-zfs  (924G)

> gpart show -r
=>        34  1953525101  ada0  GPT  (932G)
          34        1024     1  83bd6b9d-7f41-11dc-be0b-001560b84f0f  (512K)
        1058    16777216     2  516e7cb5-6ecf-11d6-8ff8-00022d09712b  (8.0G)
    16778274  1936746861     3  516e7cba-6ecf-11d6-8ff8-00022d09712b  (924G)

> gpart list

> gpart list ada0
Geom name: ada0
modified: false
state: OK
fwheads: 16
fwsectors: 63
last: 1953525134
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: ada0p1
   Mediasize: 524288 (512K)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 17408
   Mode: r0w0e0
   rawuuid: 3f4ed14d-14c4-11e4-bc13-bcaec58cba70
   rawtype: 83bd6b9d-7f41-11dc-be0b-001560b84f0f
   label: gptboot1
   length: 524288
   offset: 17408
   type: freebsd-boot
   index: 1
   end: 1057
   start: 34
2. Name: ada0p2
   Mediasize: 8589934592 (8.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 541696
   Mode: r1w1e1
   rawuuid: 3f621fef-14c4-11e4-bc13-bcaec58cba70
   rawtype: 516e7cb5-6ecf-11d6-8ff8-00022d09712b
   label: swap1
   length: 8589934592
   offset: 541696
   type: freebsd-swap
   index: 2
   end: 16778273
   start: 1058
3. Name: ada0p3
   Mediasize: 991614392832 (924G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 541696
   Mode: r1w1e2
   rawuuid: 3f737947-14c4-11e4-bc13-bcaec58cba70
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: zfs1
   length: 991614392832
   offset: 8590476288
   type: freebsd-zfs
   index: 3
   end: 1953525134
   start: 16778274
Consumers:
1. Name: ada0
   Mediasize: 1000204886016 (932G)
   Sectorsize: 512
   Mode: r2w2e5

Informationen einer Festplatte anzeigen

hier befindet sich keine SD-Karte im Slot des Card-Readers:

# bsdlabel da3
bsdlabel: unable to get correct path for da3: Device not configured

hier befindet sich eine SD-Karte im Slot des Card-Readers, auf mir leider der Zugriff verwehrt bleibt:

# bsdlabel da4
# bsdlabel -A da4
bsdlabel: /dev/da4: no valid label found
                                      Name  Status  Components
                              gpt/gptboot1     N/A  ada0p1
gptid/3f4ed14d-14c4-11e4-bc13-bcaec58cba70     N/A  ada0p1
                                 gpt/swap1     N/A  ada0p2
gptid/3f737947-14c4-11e4-bc13-bcaec58cba70     N/A  ada0p3
               diskid/DISK-WD-WX21D7453SY1     N/A  ada2
                      diskid/DISK-7JJKANEC     N/A  ada5
                                 gpt/swap0     N/A  ada3p2
gptid/3d5a4e6c-14c4-11e4-bc13-bcaec58cba70     N/A  ada3p3
                diskid/DISK-PL1331LAGG7GKH     N/A  ada6
                  diskid/DISK-03EF039300A9     N/A  da0
                              ntfs/Freecom     N/A  da0s1
                              gpt/gptboot0     N/A  ada3p1
gptid/3cde3f3e-14c4-11e4-bc13-bcaec58cba70     N/A  ada3p1

mit glabel geht es auch prima:

> glabel status

> glabel status | fgrep -v 'Name  Status  Components' | awk '{print $NF"\t"$1}'
ada0p1  gpt/gptboot1
ada0p1  gptid/3f4ed14d-14c4-11e4-bc13-bcaec58cba70
ada0p2  gpt/swap1
ada0p3  gptid/3f737947-14c4-11e4-bc13-bcaec58cba70
ada2    diskid/DISK-WD-WX21D7453SY1
ada5    diskid/DISK-7JJKANEC
ada3p2  gpt/swap0
ada3p3  gptid/3d5a4e6c-14c4-11e4-bc13-bcaec58cba70
ada6    diskid/DISK-PL1331LAGG7GKH
da0     diskid/DISK-03EF039300A9
da0s1   ntfs/Freecom
ada3p1  gpt/gptboot0
ada3p1  gptid/3cde3f3e-14c4-11e4-bc13-bcaec58cba70

eine kompatible Partition auf einen Austauschdatenträger anlegen

In diesem Beispiel werde ich eine kleine (2,5") 160GB-USB-Platte partitionieren und mit FAT32 formatieren, damit sie als Austauschdatenträger dienen kann:

> dmesg
...
da0 at umass-sim0 bus 0 scbus6 target 0 lun 0
da0: <ST916031 4AS 0009> Fixed Direct Access SCSI-0 device 
da0: 40.000MB/s transfers
da0: 152627MB (312581804 512 byte sectors: 255H 63S/T 19457C)
...
> dd if=/dev/zero of=/dev/da0 bs=512 count=4
> fdisk -i /dev/da0
> newfs_msdos -F 32 -L HDMediaBox /dev/da0s1
/dev/da0s1: 312500288 sectors in 4882817 FAT32 clusters (32768 bytes/cluster)
BytesPerSec=512 SecPerClust=64 ResSectors=32 FATs=2 Media=0xf0 SecPerTrack=63 Heads=255 HiddenSecs=0 HugeSectors=312576642 FATsecs=38148 RootCluster=2 FSInfo=1 Backup=2
> mount -t msdosfs -o large /dev/da0s1 /mnt/
> df -h /mnt/
Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/da0s1    149G     96k    149G     0%    /mnt

Status aller Festplatten anzeigen

#!/usr/bin/env bash


VERSION="v2016010500"


SKRIPTNAME="$(basename ${0})"
SKRIPTVERZEICHNIS="$(dirname ${0})"

#------------------------------------------------------------------------------#
### pkg install smartmontools-6.2_2
### echo 'smartd_enable="YES"' >> /etc/rc.conf
#------------------------------------------------------------------------------#

if [ "$(id -u)" != "0" ] ; then
        echo "Sie muessen root sein!"
        exit 1
fi


#------------------------------------------------------------------------------#

if [ "$(uname -o)" == "FreeBSD" ] ; then
        ### FreeBSD
        SMARTOPT="-a"
elif [ "$(uname -o)" == "GNU/Linux" ] ; then
        ### Linux
        SMARTOPT="-H"
else
        ### Windows
        SMARTOPT="-h"
fi

#------------------------------------------------------------------------------#

LAUFWERKE="$(grep -F ' Serial Number ' /var/log/dmesg.boot | awk -F':' '/: /{print $1}')"
#echo "LAUFWERKE='${LAUFWERKE}'"

#------------------------------------------------------------------------------#

SERIAL_SLOT="$(for i in ${LAUFWERKE}
do
        cat /var/log/dmesg.boot | sed -ne "/^${i} /,/ Serial Number /p"
done)"
#echo "SERIAL_SLOT='${SERIAL_SLOT}'"

#exit
#------------------------------------------------------------------------------#

(
for PLATTE in ${LAUFWERKE}
do
        echo "================================================================="
        echo "${SERIAL_SLOT}" | egrep "^${PLATTE}[:]* "
        echo

        #smartctl ${SMARTOPT} /dev/${PLATTE} | grep -F Serial
        smartctl ${SMARTOPT} /dev/${PLATTE} | grep -Ei 'Serial|Error'

        ### bei Linux auch moeglich
        #hdparm -i /dev/${PLATTE}
        echo "-----------------------------------------------------------------"
done
) 2>&1 | tee /var/log/${SKRIPTNAME}.log

ls -lha /var/log/${SKRIPTNAME}.log

#------------------------------------------------------------------------------#

Handyuhr "Burg 12"

als Massenspeicher

steckt man die Uhr an den USB-Port, dann kann man das hier in DMESG sehen:

> dmesg
...
ugen2.3: <MediaTek Inc> at usbus2
umass0: <6225--Storage> on usbus2
umass0:  SCSI over Bulk-Only; quirks = 0x4000
umass0:7:0:-1: Attached to scbus7
da0 at umass-sim0 bus 0 scbus7 target 0 lun 0
da0: <MEDIATEK FLASH DISK 6225> Removable Direct Access SCSI-0 device 
da0: 1.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present
da1 at umass-sim0 bus 0 scbus7 target 0 lun 1
da1: <MEDIATEK FLASH DISK 6225> Removable Direct Access SCSI-0 device 
da1: 1.000MB/s transfers
da1: 1MB (2048 512 byte sectors: 64H 32S/T 1C)

zieht man die Uhr vom USB-Port wieder ab, dann kann man das hier in DMESG sehen:

> dmesg
...
ugen2.3: <MediaTek Inc> at usbus2 (disconnected)
umass0: at uhub2, port 2, addr 3 (disconnected)
(da0:umass-sim0:0:0:0): lost device - 0 outstanding, 1 refs
(da1:umass-sim0:0:0:1): lost device - 0 outstanding, 1 refs
(pass4:umass-sim0:0:0:0): passdevgonecb: devfs entry is gone
(pass5:umass-sim0:0:0:1): passdevgonecb: devfs entry is gone
(da0:umass-sim0:0:0:0): removing device entry
(da1:umass-sim0:0:0:1): removing device entry
> mount -t msdosfs /dev/da1 /mnt
> find /mnt
/mnt
/mnt/@mms
/mnt/sat
/mnt/phb_video.dat
/mnt/Settings
/mnt/Download
/mnt/SMSSimCust

als USB-Modem (COM-Port)

> dmesg
...
ugen2.3: <MediaTek Inc> at usbus2
umodem0: <6225  COMcommif> on usbus2
umodem0: data interface 0, has CM over data, has break