Hummingboard をつかってみるよ!

その2 samba の構築

マウントの説明と、samba での NAS の構築までです。

(1) まずは、NTFS を扱えるようにする。

(a) ntfs-3g を導入

Linux のファルシステムは ext4 というものが使用されていて、Windows の NTFS とは違うため、 そのままでは読み書きできません。

「俺は Linux で生きていく!」という方は、素直に ext4 でフォーマットしても良いのでしょうが、 普通の方は「いやーー Windows でも扱えた方がいいよ」と思う方が多いと思います。 そこで、ntfs-3g というものをインストールします。

解説はここです。 NTFS-3G (日本語)

[ntaka@alarm ~]$ sudo pacman -S ntfs-3g
		

(2) Linux 特有のマウントというものを理解する。

(a) Linux では、USB-HDD を接続してもすぐには使えない

早速、hummingboard へ USB-HDD を接続してみましょう。 では、まずはどのようになっているか?を lsblk コマンドで確認してみます。

[ntaka@alarm ~]$ lsblk -f
NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
sda
`-sda1      ntfs         56F62DECF62DCD55
mmcblk0
`-mmcblk0p1 ext4         087f889f-4a13-4e03-976f-ddc9ff58aaf3 /
		
  • sda というのが、今あなたが接続した USB-HDD のデバイス名となります。
  • ada1 というのが、sda というデバイスにある1番目のパーティションを示すデバイス名ということになります。
  • ada1 のファイルシステムは ntfs である。
  • ada1 の UUID は 56F62DECF62DCD55 である。

もし、複数のパーティションがあるのならば、sda2, sda3・・・と言う具合になり、 複数の USB-HDD がある場合 sdb, sdc となります。

補足: ところで、私はこれに対して疑問に思いました。「USB を接続する順番で sda が sdb になったりするのか?」 「変わるとまずいんでは?」そうなんですよね、そこで sda というデバイス名の代わりに UUID というものを使用することもできます。 UUID というのは、デバイスごとに割り当てられたユニークなIDなので、USB の接続順番によりません。 ですから、場合によっては UUID を使用することもできると覚えておくと良いと思います。
(b) マウント

それでですね、Linux の場合、接続したからといってすぐにアクセスすることはできません。 Linux では、ディレクトリにデバイスをマウントさせることで、そのデバイスへファイル操作できるようになります。

まずは、マウントする場所を作ります。ディレクトリ名は好きに決めて良いですが、今回は usb としますね。

[ntaka@alarm ~]$ sudo mkdir /mnt/usb
		

次に、sda1 を先ほどのディレクトリ /mnt/usb へマウントさせてみます。

[ntaka@alarm ~]$ sudo mount /dev/sda1 /mnt/usb
		

はい、これで OK です! 早速、中身を見てみましょうか・・・

[ntaka@alarm ~]$ ls -l /mnt/usb
total 174728
-rwxrwxrwx 2 root root  15772587 Dec 26  2011 Softly As In A Morning Sunrise.mp3
drwxrwxrwx 1 root root         0 Dec 30 13:17 System Volume Information
-rwxrwxrwx 1 root root 153405080 Nov 24 23:25 video.mp4
-rwxrwxrwx 2 root root   9739202 Dec 26  2011 ?????????????????????????????????.mp3
		

あれ?? ?????????????????????????????????.mp3 ってなに?!
あやや・・・文字化けしてます。

さすが Linux・・・一筋縄ではいかないようですねw

まず、PuTTY の文字コードを確認してください。 もし、UTF-8 でなかったら UTF-8 へ変更しておいてください。


PuTTY 文字コード

おもむろに .bashrc を編集します。

[ntaka@alarm ~]$ sudo nano -w ~/.bashrc
		
#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

alias ls='ls --color=auto'
PS1='[\u@\h \W]\$ '
		

で、alias ls='ls --color=auto' を以下のように修正します。 ちなみに alias というのは、Windows でいうショートカットみたいなものかと思います。 この場合は ls とタイプしたら ls --color=auto に置き換えるということです。

#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

alias ls='ls --color=auto --show-control-chars'
PS1='[\u@\h \W]\$ '
		

設定を反映させます。

[ntaka@alarm ~]$ source .bashrc
		

早速確認してみましょう。

[ntaka@alarm ~]$ ls -l /mnt/usb
total 174728
-rwxrwxrwx 2 root root  15772587 Dec 26  2011 Softly As In A Morning Sunrise.mp3
drwxrwxrwx 1 root root         0 Dec 30 13:17 System Volume Information
-rwxrwxrwx 1 root root 153405080 Nov 24 23:25 video.mp4
-rwxrwxrwx 2 root root   9739202 Dec 26  2011 シング・シング・シング.mp3
		

正常に表示されています。

補足: SSH じゃなくて、マシン側で日本語表示を行うためには、X環境が必要なようです。 あとは、fbterm というものがあるそうですが、試していません。 基本 SSH で作業するので、別にマシン側で日本語が使えなくても不自由しませんので・・・
(c) アンマウント

マウントしたデバイスを取り外したい時は、アンマウントです。

[ntaka@alarm ~]$ sudo umount /dev/sda1
		

これで、OKです。ちなみに Windows 同様にマウント先に cd でいたり、 何か操作中であるとアンマウントできませんので、 注意が必要です。

(d) 毎回、手動でマウントしなきゃいけないの?

もちろん自動化できますが、/etc/fstab というファイルを編集する必要があります。

詳細は
fstab (日本語)

[ntaka@alarm ~]$ sudo nano -w /etc/fstab
		
#
# /etc/fstab: static file system information
#
# <file system> <dir>   <type>  <options>       <dump>  <pass>

		

これを以下のように設定します。

#
# /etc/fstab: static file system information
#
# <file system> <dir>   <type>  <options>       <dump>  <pass>
/dev/sda1	/mnt/usb	ntfs-3g	defaults,noatime,nofail	0	0
		
  • /dev/sda1 はマウントするデバイス名
  • /mnt/usb はマウント先
  • ntfs-3g はデバイスのファイルシステム
  • defaults,noatime,nofail はオプションです。詳細は本家の説明をご覧下さい。

リブートしてみて、きちんとマウントできているかを確認してください。

(3) ようやく samba を導入する

ようやくですが、本題である samba をインストールします。毎度おなじみの pacman ですね。

samba の詳細は・・・
Samba (日本語)

(a) インストール
[ntaka@alarm ~]$ sudo pacman -S samba
		
(b) 設定ファイルを作る

基本、説明書(Samba (日本語)) 通り設定していけば OK なのですが、不必要な項目が多すぎますので、 新規に作成した方が楽です。

また、設定の詳細についてはこの方のホームページ Samba3で一般的なファイルサーバー構築完全版 - smb.conf設定 p.2 にわかりやすい説明がありました。 何をしているのか興味がある方は一度ご覧になると勉強になるでしょう。

新規編集を開始します。
[ntaka@alarm ~]$ sudo nano -w /etc/samba/smb.conf
		

で、以下をそのままコピペしてください。 SSH は楽で良いですね・・・

[global]
max protocol = SMB2

workgroup = WORKGROUP
server string = Samba Server

hosts allow = 192.168.
load printers = no

log file = /var/log/samba/%m.log
max log size = 50
dns proxy = no

unix charset = UTF-8
dos charset = CP932

security = user
guest account = nobody
map to guest = Bad User

[data]
comment = HB Archlinux

path = /mnt/usb
guest ok = no
valid users = smbuser
browseable = yes
read only = no
writable = yes
printable = no

create mask = 0777
directory mask = 0777
		

ポイントを絞って説明すると以下のようになります。

  • max protocol = SMB2
  • samba2.0 を使用することを設定します。これで早くなるらしいのですが、効果は?w ちなみに、Windows Vista 以降が samba2.0 に対応しています。 もし、あなたの WIndows のバージョンが XP 以前なら、 この行はコメントアウトするか、削除してください。

  • hosts allow = 192.168.
  • アクセス制限をかけます。この設定では 192.168 で始まる IPアドレスを持つマシンからしか接続を許可しません。 ご自身の環境に合わせる必要があります。

  • [data]
  • [] で始まるところから共有設定となります。また、[]内の名前は任意で、Windows 側から見える共有名となります。 [data] とすれば、data という名前で Windows 側から見えると言うことです。

  • path = /mnt/usb
  • 共有する linux 側のディレクトリです。

  • valid users = smbuser
  • アクセスを許可する Linux ユーザです。これは任意ですが、説明のため smbuser とします。

次に、samba 用のユーザを追加します。 ユーザ名は何でも良いですが、ここでは smbuser とします。

smbuser を追加
[ntaka@alarm ~]$ sudo useradd -m smbuser

smbuser のパスワードを設定する(これは Linux のパスワードです)
[ntaka@alarm ~]$ sudo passwd smbuser
		

先ほどのユーザを samba に登録します。

[ntaka@alarm ~]$ sudo pdbedit -a -u smbuser
new password: ← パスワードの入力が求められます。これが、接続時のパスワードとなります。
retype new password:
Unix username:        smbuser
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-1699525598-627192037-2149346523-1000
Primary Group SID:    S-1-5-21-1699525598-627192037-2149346523-513
Full Name:
Home Directory:       \\alarm\smbuser
HomeDir Drive:
Logon Script:
Profile Path:         \\alarm\smbuser\profile
Domain:               ALARM
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    Tue, 30 Dec 2014 17:55:59 JST
Password can change:  Tue, 30 Dec 2014 17:55:59 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
		

デーモンをスタートします。

[ntaka@alarm ~]$ sudo systemctl start smbd nmbd
		

Windows から接続できるかのテストをします。

エクスプローラーに hummingboard の IPアドレスを打ち込みます。

\\192.168.24.62

先ほどのユーザ名 samba パスワードを入力すれば接続できるはずです。

アクセスできたら永続化しましょう。

[ntaka@alarm ~]$ sudo systemctl enable smbd nmbd
		

(4) 残念なお知らせ・・・

さてさて、これで Windows からネット経由でアクセスできるようになったわけです。 「NAS ができたぞ!!」とお喜びの所悪いのですが、非常に残念なお知らせがあります。

くそ遅いんです!!w

試しに、大きめのファイルを転送してみてください。その遅さに唖然とするでしょう・・・

まあ、原因は、USB 接続な為です。ほんと全然スピードでませんわ・・・NTFS から ext4 へ変更もしてみたのですが、 「せいぜい 20[MiB/S] 程度かなぁ?」という感じです。 ちなみに、サブ PC にインストールした Arch の samba では SATA 接続ですが 50[MiB/S]位は普通にでますので、 USB 接続ってのが致命的なようです。

というわけで、この手のボード PC で USB 接続 の HDD を用いた NAS の構築はナンセンスですw

初回に大量のメディアをコピーしたかったら、素直に USB3.0 で Windows の PC へ繋いで、 コピーした方が確実に早いです。 それでもって、ちまちま新しいファイルをコピーするのに samba を使えば良いと思います。 なんで、NTFS のマウントを最初に行ったわけです。

補足: 実は、HummingBoard-i2eX は、mSATA II があるみたいなんです。 それに HDD 繋げば、結構早い NAS になるんじゃないかな・・・と思ました。 失敗したかなぁ・・・