> mount -o loop /var/tmp/cdrom.iso /mnt > losetup -a /dev/loop0: [0006]:977176076 (/var/tmp/cdrom.iso), offset 1048576
Image-Infos anzeigen:
> fdisk -lu /var/tmp/host01.img
...
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000cf766
Device Boot Start End Blocks Id System
/var/tmp/host01.img1 * 2048 1171455 584704 83 Linux
/var/tmp/host01.img2 1171456 639631359 319229952 8e Linux LVM
mount der ersten primären Partition:
> mkdir /mnt_boot > mount -r -o loop,offset=$((512*2048)) /var/tmp/host01.img /mnt_boot > ls -lha /mnt_boot
umount der ersten primären Partition:
> umount /mnt_boot
mount eines LV:
> losetup -f /dev/loop0 > losetup /dev/loop0 /var/tmp/host01.img > kpartx -l /dev/loop0 loop0p1 : 0 1169408 /dev/loop0 2048 loop0p2 : 0 638459904 /dev/loop0 1171456 > kpartx -a /dev/loop0 > vgscan Reading all physical volumes. This may take a while... Found volume group "vgtrusty" using metadata type lvm2 > vgchange -ay vgtrusty 3 logical volume(s) in volume group "vgtrusty" now active > ls -lha /dev/vgtrusty/ total 0 drwxr-xr-x 2 root root 100 Apr 6 14:17 . drwxr-xr-x 17 root root 5,1K Apr 6 14:17 .. lrwxrwxrwx 1 root root 7 Apr 6 14:17 mysql -> ../dm-7 lrwxrwxrwx 1 root root 7 Apr 6 14:17 root -> ../dm-5 lrwxrwxrwx 1 root root 7 Apr 6 14:17 swap -> ../dm-6 > mkdir /mnt_lv > mount /dev/vgtrusty/mysql /mnt_lv
umount des LV:
> umount /mnt_lv > lvchange -an vgtrusty > vgchange -an vgtrusty 0 logical volume(s) in volume group "vgtrusty" now active > kpartx -d /dev/loop0 > losetup -d /dev/loop0 > losetup -f /dev/loop0
# vnconfig /dev/vn0c /var/tmp/cdrom.iso # mount -t cd9660 /dev/vn0c /mnt
# umount /mnt # vnconfig -u /dev/vn0c
# mdconfig -a -t vnode -u 0 -f /var/tmp/cdrom.iso
# mdconfig -l md0
# mdconfig -l -u md0 md0 vnode 2.2G /var/tmp/cdrom.iso
oder
# mdconfig -l -u 0 md0 vnode 2.2G /var/tmp/cdrom.iso
# mount -t cd9660 /dev/md0 /mnt
# umount /mnt # mdconfig -d -u 0
Will man alle gemounteten vnodes ausführlich sehen, geht das so ganz gut:
# for i in $(mdconfig -l);do mdconfig -l -u ${i};done
md0 vnode 2.2G /var/tmp/cdrom.iso
md1 swap 1024M
md2 vnode 679M /home/kontor/technik/edv/iso/ubuntu/ubuntu-11.10-server-i386.iso
#!/bin/sh
#
################################################################################
#
# Diese Schritte sind nur als "root" ausfuehrbar!
# Ein MS-DOS-Disketten-Image soll gemountet werden:
#
# Beispiel fuer FreeBSD bis zur Version 4:
# ========================================
#
# vnconfig -c /dev/vn0c ~/kontor/SYS/msdos622.img
# mount -t msdos /dev/vn0c /mnt
#
#
# Unmounten des Images (loesen vom Image):
#
# umount /mnt
# vnconfig -u /dev/vn0c
#
#
# Beispiel fuer FreeBSD ab der Version 5:
# =======================================
#
# mdconfig -a -t vnode -u 1 -f ~/kontor/SYS/msdos622.img
# mount -t msdos /dev/md2 /mnt
#
#
# Unmounten des Images (loesen vom Image):
#
# for i in $(mdconfig -l);do mdconfig -l -u ${i};done
#
# umount /mnt
# mdconfig -d -u md1
#
# umount /mnt
# mdconfig -d -u 1
#
################################################################################
if [ "$(uname -s)" != "FreeBSD" ] ; then
echo ""
echo "Dieses Script laeft nur auf FreeBSD!"
echo "ABBRUCH!"
exit 1
fi
VERSION="$(uname -r|cut -f1 -d'.')"
if [ "${VERSION}" -lt "5" ] ; then
echo "Dieses Script arbeitet erst ab FreeBSD 5."
exit 1
fi
if [ -n "${1}" ] ; then
case "${1}" in
[Cc][Dd])
# CD9660 - mount
DATEISYSTEM="cd9660"
;;
[Ee][Xx][Tt])
# EXT2FS - mount
DATEISYSTEM="ext2fs"
;;
[Dd][Oo][Ss])
# MSDOSFS - mount
DATEISYSTEM="msdosfs"
;;
[Nn][Tt][Ff][Ss])
# NTFS - mount
# ntfs-3g -o permissions /dev/da6s1 /mnt/
DATEISYSTEM="ntfs-3g"
;;
[Uu][Ff][Ss])
# UFS - mount
DATEISYSTEM="ufs"
;;
[Uu])
# normales unmounten
#echo "Welcher Mountpoint soll geloest werden (z.B. /mnt):"
if [ -d "${2}" ] ; then
VNODE="$(df "${2}" | awk '/^\/dev\// && /\/md[0-9]/ {print $1}')"
if [ -n "${VNODE}" ] ; then
echo "umount \"${2}\""
umount "${2}"
echo "mdconfig -d -u ${VNODE}"
mdconfig -d -u ${VNODE}
else
echo "
# umount des gemounteten Images
${0} u [MountPoint]
${0} u /mnt
"
fi
else
echo "
# umount des gemounteten Images
${0} u [MountPoint]
${0} u /mnt
"
fi
;;
*)
echo "
${0} cd [cdrom.iso] [/mnt]
${0} ext [linux.img] [/mnt]
${0} dos [msdos.img] [/mnt]
${0} ntfs [mswin.img] [/mnt]
${0} ufs [bsd.img] [/mnt]
oder
${0} u [/mnt] # umount des gemounteten Images
"
;;
esac
if [ -n "${DATEISYSTEM}" ] ; then
if [ -f "${2}" ] ; then
IMAGEFILE="${2}"
else
echo "
${0} cd [cdrom.iso] [/mnt]
${0} ext [linux.img] [/mnt]
${0} dos [msdos.img] [/mnt]
${0} ntfs [mswin.img] [/mnt]
${0} ufs [bsd.img] [/mnt]
"
fi
if [ -d "${3}" ] ; then
MOUNTPOINT="${3}"
else
MOUNTPOINT="/mnt"
fi
VNODE="$(mdconfig -a -t vnode -f "${IMAGEFILE}")"
if [ "${DATEISYSTEM}" != "ntfs-3g" ] ; then
mount -t "${DATEISYSTEM}" /dev/${VNODE} "${MOUNTPOINT}"
else
ntfs-3g -o permissions /dev/${VNODE} "${MOUNTPOINT}"
fi
fi
else
echo "
${0} cd [cdrom.iso] [/mnt]
${0} ext [linux.img] [/mnt]
${0} dos [msdos.img] [/mnt]
${0} ntfs [mswin.img] [/mnt]
${0} ufs [bsd.img] [/mnt]
oder
${0} u [/mnt] # umount des gemounteten Images
"
fi
Leider kann mount_udf oft (in meinem Fall) eine UDF-DVD nicht mounten:
# mdconfig -l md0
# mount -t udf /dev/md0 /mnt mount_udf: /dev/md0: Invalid argument
das geht mit FreeBSD 8.0 leider nicht per mount, sondern nur mit udfclient:
# portinstall -prO sysutils/udfclient # udfclient /var/tmp/cdrom.iso
mit FreeBSD 9.0 hat das mounten einer UDF-DVD geklappt:
# mount -t udf /dev/cd0 /cdrom
# vi /etc/sysctl.conf vfs.usermount=1
# vi /etc/devfs.conf link acd0 cdrom own acd0 root:operator perm acd0 0660