FreeBSDでUSBメモリをUFSフォーマットしてmountしてみる
FreeBSDにFAT32でmsdosfsでフォーマットされたUSBメモリをmountする記事を書いたが、これだとcpなどでファイルをコピーしたときにパーミッションが飛んでしまう。
もちろん、tarでアーカイブされたファイルはパーミッションは保持されるが、何らかの事情でtarアーカイブができない場合、直接USBメモリへファイルをコピーしたい時がある。ということで、USBメモリをUFSでフォーマットしてmountする。なお、実行はFreeBSD 11.0-RC2(amd64)で行った。
1. デバイス名の確認
USBポートにUSBメモリを挿入する。/var/log/messagesに残るログからデバイス名を確認する。
ugen1.2: <GH> at usbus1
umass0: <GH PicoDUAL X, class 0/0, rev 2.00/1.00, addr 2> on usbus1
umass0: SCSI over Bulk-Only; quirks = 0x8100
umass0:3:0: Attached to scbus3
da1 at umass-sim0 bus 0 scbus3 target 0 lun 0
da1: <GH PicoDUAL X PMAP> Removable Direct Access SCSI device
da1: Serial Number 07AB03027BXXXXXX
da1: 40.000MB/s transfers
da1: 15272MB (31277056 512 byte sectors)
da1: quirks=0x2<NO_6_BYTE>
この場合だと、/dev/da1がデバイス名となる。
2. UFSでフォーマット
さくっとnewfsでフォーマット。
# newfs /dev/da1
/dev/da1: 15272.0MB (31277056 sectors) block size 32768, fragment size 4096
using 25 cylinder groups of 626.09MB, 20035 blks, 80256 inodes.
super-block backups (for fsck_ffs -b #) at:
192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632, 8975872, 10258112, 11540352, 12822592, 14104832,
15387072, 16669312, 17951552, 19233792, 20516032, 21798272, 23080512, 24362752, 25644992, 26927232, 28209472,
29491712, 30773952
これで、UFS2でフォーマットされる。
3. マウント
さっくりとmountコマンドのみでマウント。mountコマンドでUFSとしてマウントされていることが確認できる。
# mount /dev/da1 /mnt
# mount
/dev/da0p2 on / (ufs, local, journaled soft-updates)
devfs on /dev (devfs, local, multilabel)
/dev/da1 on /mnt (ufs, local)
当然、cpでコピーしてもパーミッションは飛ばない。
# cp -rp /sbin /mnt
# ls -l /sbin/ping
-r-sr-xr-x 1 root wheel 32488 Aug 24 16:00 /sbin/ping
# ls -l /mnt/sbin/ping
-r-sr-xr-x 1 root wheel 32488 Aug 24 16:00 /mnt/sbin/ping
当然最後はアンマウントでおしまい。