Поскольку программы форматирования, похоже, не существует, я написал следующий сценарий оболочки, который отправляет соответствующие команды FORMAT UNIT для форматирования всех 80 дорожек дискеты. Устройство da0
форматируется, если в качестве аргумента не указано другое устройство. CDB взят из спецификации UFI .
#!/bin/sh
set -e
exec >&2
drive=${1:-da0}
numblocks=2880
blocklen=512
tracks=80
track=0
progress() {
[ -t 2 ] && printf "\\r%2d/%2d" $track $tracks
}
for track in `seq 0 $((tracks-1))`
do
progress
# format bottom
camcontrol cmd "$drive" -v \
-c '04 17 i1 00 00 00 00 00 0c 00 00 00' $track \
-o 12 '00 b0 00 08 i4 00 i3' $numblocks $blocklen
# format top
camcontrol cmd "$drive" -v \
-c '04 17 i1 00 00 00 00 00 0c 00 00 00' $track \
-o 12 '00 b1 00 08 i4 00 i3' $numblocks $blocklen
done
track=$tracks
progress
[ -t 2 ] && echo