mkfs.vfat: unable to open /dev/sdg1: Device or resource busy
26,657
Solution 1
Check that your LVM is not stealing the devices:
sudo dmsetup ls
If you see your devices there, simply remove them:
sudo dmsetup remove sdgX
Solution 2
Pekka Nikander's answer did the trick for me.
The only issue is that you can't just "dmsetup remove sdgX". When the mkcard script repartitions, the LVM grabs them again. So, I ran the script once, and then reran it again after unstealing the devices and commenting out the partitioning sections in the script.
EDIT: I believe the part he commented out in mkcard.txt is the following lines:
if [ -x `which kpartx` ]; then
kpartx -a ${DRIVE}
fi
Related videos on Youtube
Author by
Kaluã Bentes
Updated on September 18, 2022Comments
-
Kaluã Bentes over 1 year
I am using a script from http://www.angstrom-distribution.org/demo/beagleboard/ that uses mkfs.vfat and mkfs.e2fs to create 2 partitions on a sd card but I get
mkfs.vfat 3.0.12 (29 Oct 2011) mkfs.vfat: unable to open /dev/sdg1: Device or resource busy
Edit: there's a problem with this script. As a workaround I used http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat
The script is the following
#! /bin/sh # mkcard.sh v0.5 # (c) Copyright 2009 Graeme Gregory <[email protected]> # Licensed under terms of GPLv2 # # Parts of the procudure base on the work of Denys Dmytriyenko # http://wiki.omap.com/index.php/MMC_Boot_Format export LC_ALL=C if [ $# -ne 1 ]; then echo "Usage: $0 <drive>" exit 1; fi DRIVE=$1 dd if=/dev/zero of=$DRIVE bs=1024 count=1024 SIZE=`fdisk -l $DRIVE | grep Disk | grep bytes | awk '{print $5}'` echo DISK SIZE - $SIZE bytes CYLINDERS=`echo $SIZE/255/63/512 | bc` echo CYLINDERS - $CYLINDERS { echo ,9,0x0C,* echo ,,,- } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE sleep 1 if [ -x `which kpartx` ]; then kpartx -a ${DRIVE} fi # handle various device names. # note something like fdisk -l /dev/loop0 | egrep -E '^/dev' | cut -d' ' -f1 # won't work due to https://bugzilla.redhat.com/show_bug.cgi?id=649572 PARTITION1=${DRIVE}1 if [ ! -b ${PARTITION1} ]; then PARTITION1=${DRIVE}p1 fi DRIVE_NAME=`basename $DRIVE` DEV_DIR=`dirname $DRIVE` if [ ! -b ${PARTITION1} ]; then PARTITION1=$DEV_DIR/mapper/${DRIVE_NAME}p1 fi PARTITION2=${DRIVE}2 if [ ! -b ${PARTITION2} ]; then PARTITION2=${DRIVE}p2 fi if [ ! -b ${PARTITION2} ]; then PARTITION2=$DEV_DIR/mapper/${DRIVE_NAME}p2 fi # now make partitions. if [ -b ${PARTITION1} ]; then umount ${PARTITION1} mkfs.vfat -F 32 -n "boot" ${PARTITION1} else echo "Cant find boot partition in /dev" fi if [ -b ${PARITION2} ]; then umount ${PARTITION2} mke2fs -j -L "Angstrom" ${PARTITION2} else echo "Cant find rootfs partition in /dev" fi
full output is:
1024+0 records in 1024+0 records out 1048576 bytes (1.0 MB) copied, 0.356157 s, 2.9 MB/s Disk /dev/sdg doesn't contain a valid partition table DISK SIZE - 7948206080 bytes CYLINDERS - 966 Checking that no-one is using this disk right now ... OK Disk /dev/sdg: 966 cylinders, 255 heads, 63 sectors/track sfdisk: ERROR: sector 0 does not have an msdos signature /dev/sdg: unrecognized partition table type Old situation: No partitions found New situation: Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdg1 * 0+ 8 9- 72261 c W95 FAT32 (LBA) /dev/sdg2 9 965 957 7687102+ 83 Linux /dev/sdg3 0 - 0 0 0 Empty /dev/sdg4 0 - 0 0 0 Empty Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).) umount: /dev/sdg1: not mounted mkfs.vfat 3.0.12 (29 Oct 2011) mkfs.vfat: unable to open /dev/sdg1: Device or resource busy umount: /dev/sdg2: not mounted mke2fs 1.42 (29-Nov-2011) /dev/sdg2 is apparently in use by the system; will not make a filesystem here!
I've tried
sudo fuser -v /dev/sdg sudo fuser -v /dev/sdg1 sudo fuser -v /dev/sdg2
but with no results. Thanks
-
Admin about 12 yearsWhat does
mount | grep sdg
say? -
Admin about 12 yearsIt says nothing. No output.
-
Admin about 12 yearsDoes the device show up in
ls -l /media
? -
Admin about 12 yearsNo it doesn't mount, maybe because the partition table is corrupted or mkfs didn't end successfully
-
-
Kaluã Bentes almost 12 yearsPlease comment or edit pekka's answer so I can accept it.
-
user77294 almost 12 yearsWould love to, but I can't. There's no button to allow me to do so.