2017.12.20

Debian MOUNT
外付ハードディスク[USB HDD]の読込専用[READ ONLY]を修正

ファイルシステムとマウントの調整

Debian CUI環境で外付けハードディスク[USB-HDD]をマウントしたら、
読み込み専用[read only]になっていて、書き込みができない。。
ファイルシステムは、Windows標準のNTFSでフォーマットされている。
chmod u+wや、mount -o rwでオプションを与えても、一旦マウントされた後だと、権限の変更は無効となるようだ。

そんな訳で、読み書きできるように調整してみた。

方法としては次の2通りを試してみる。環境に応じて選ぶと良いでしょう。
1. Windowsファイルシステム(ntfs)でマウント
2. Linuxファイルシステム(ext4)でフォーマットし直す


■ デバイスとマウント情報の確認

まずUSBを差し込んだら、マシンに認識されたデバイスを確認する。

 ## デバイス名称の見当をつける どうやら/dev/sdc1のようだ
 $ sudo fdisk -l
 $ sudo dmesg | tail
 $ sudo blkid
 /dev/sdc1: LABEL="USB-HDXXX" UUID="xxxxxxxxxxxxx" TYPE="ntfs" PARTUUID="xxxxxxx"

 ## マウントコマンドの確認 [Tab]キー補完機能で表示
 $ sudo mount
 mount mountpoint

 ## 取り合えずマウントしてみて情報表示
 $ sudo mkdir /media/USB-HDXXX
 $ ls -l /media/
 drwxr-xr-x 2 root:root 4096 Dec 24 23:58 USB-HDXXX
 $ sudo mount -t ntfs /dev/sdc1 /media/HD-XXX
 $ ls -l /media/
 dr-x------ 1 root:root 4096 Dec 24 24:00 USB-HDXXX
 $ mount -l | grep sdc1
 /dev/sdc1 on /media/USB-HDXXX type ntfs
 (ro,relatime,uid=0,gid=0,fmask=0177,dmask=077,nls=utf8...) [USB-HDXXX]

ファイルシステムはntfsで、読み込み専用になっている。

■ 1.Windowsファイルシステム(ntfs)でマウント

読み書き可能なNTFSドライバパッケージ(ntfs-3g)をインストールしマウントする。

 ## NTFSドライバパッケージの確認
 $ apt-cache show ntfs-3g
 Package: ntfs-3g
 ...
 Description-en: read/write NTFS driver for FUSE
  NTFS-3G uses FUSE (Filesystem in Userspace) to provide support for the NTFS
  filesystem used by Microsoft Windows.
 ...
 $ apt-cache policy ntfs-3g
 ntfs-3g:
  Installed: (none)
 ...

 ## ntfs-3gのインストール
 $ sudo apt-get install ntfs-3g

 ## マウントコマンドの確認 [Tab]キー補完機能で表示
 $ sudo mount
 mount mount.fuse mount.lowntfs-3g mount.ntfs mount.ntfs-3g mountpoint

 ## umaskで権限を制限してマウントする
 $ sudo mount -t ntfs-3g -o fmask=0177,dmask=077 /dev/sdc1 /media/USB-HDXXX

 ## パーミッションとマウント確認
 $ ls -l /media/
 drwx------ 1 root:root 4096 Dec 25 0:10 HD-XXX
 $ mount -l | grep sdc1
 /dev/sdc1 on /media/USB-HDXXX type fuseblk
 (rw,relatime,uid=0,gid=0,fmask=0177,dmask=077,nls=utf8...) [USB-HDXXX]

実際は、ntfs-3gパッケージがインストールされていれば、tオプション
mount -t ntfs-3g を明示的に指定する必要はないようだ。

■ 1-2. 起動時に自動マウントするなら

コマンド: blkid のデバイス属性情報を参照して、デバイス名ではなくUUIDで指定した方が良いらしい。
注意事項: BIOSで、起動ディスクよりBOOT順位を下位にしておく。

 ## File: /etc/fstab の編集 最終行に追記
 $ sudo vi /etc/fstab
 UUID=xxxxxxxxxxxxx   /media/USB-HDXXX   ntfs   defaults,fmask=0177,dmask=077   0   0


書式は、 <file system> <mount point> <type> <optioms> <dump> <pass> の順
二重引用符「" "」は、不要
type: ext4 での option: fmask,dmask 指定はエラー。

■ 2. Linuxファイルシステム: ext4でフォーマットする

警告! パーティション編集,フォーマットすると中のデータは失われます。
データがあるならバックアップは必須。
ここでは、空のハードディスクを想定。

試験構成として、
(1) /dev/sdc1をサイズ250GB,nftsでフォーマットする
(2) /dev/sdc2を残り全サイズ,ext4でフォーマットする

分割する必要がなければ、
# mkfs.ext4 /dev/sdc1 でOK

 #### パーティションの編集

 $ sudo fdisk /dev/sdc

 Welcome to fdisk (util-linux 2.25.2).
 Changes will remain in memory only, until you decide to write them.
 Be careful before using the write command.

 Command (m for help): p
 Disk /dev/sdf: 931.5 GiB, 1000170586112 bytes, 1953458176 sectors
 Units: sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disklabel type: gpt
 Disk identifier: xxxxxxxxxxxxxxxxx

 Device  Start  End  Sectors  Size  Type
 /dev/sdf1  2048  1953456127  1953454080  931.5G  Microsoft basic data

 Command (m for help): n
 Partition number (1-128, default 1): 1
 First sector (34-1953458142, default 2048): 2048
 Last sector, +sectors or +size{K,M,G,T,P} (2048-1953458142, default 1953458142): +250G

 Created a new partition 1 of type 'Linux filesystem' and of size 250 GiB.

 Command (m for help): n
 Partition number (2-128, default 2): 2
 First sector (34-1953458142, default 524290048): 524290048
 Last sector, +sectors or +size{K,M,G,T,P} (524290048-1953458142, default 1953458142): 1953458142

 Created a new partition 2 of type 'Linux filesystem' and of size 681.5 GiB.

 Command (m for help): l
  1 EFI System
  ...
  6 Microsoft basic data
  ...

 Command (m for help): t
 Partition number (1,2, default 2): 1
 Partition type (type L to list all types): 6

 Changed type of partition 'Linux filesystem' to 'Microsoft basic data'.

 Command (m for help): p

 Device  Start  End  Sectors  Size  Type
 /dev/sdf1  2048  524290047  524288000  250G  Microsoft basic data
 /dev/sdf2  524290048  1953458142  1429168095  681.5G  Linux filesystem

 Command (m for help): v
 No errors detected.
 Header version: 1.0
 Using 2 out of 128 partitions.

 Command (m for help): w
 The partition table has been altered.
 Calling ioctl() to re-read partition table.
 Syncing disks.

 #### /dev/sdc1をntfsにフォーマット Q:クイックモード,L:ラベル
 $ sudo mkfs.ntfs -Q -L USB-HDXXX /dev/sdc1

 #### /dev/sdc2をext4にフォーマット
 $ sudo mkfs.ext4 /dev/sdc2

 

セクターサイズは、デフォルト値を指定してみた。
ext4をマウントするのにも、明示的にtオプションを指定する必要はなさそうだ。




green-pen miyagi©2017.8