Raspberry Pi debian リファレンスを読んでみる

raspbianのメニュー helpにdebian リファレンスがあります。

英文ですが日本の方がメンテをされていてweb上に翻訳されたものがあります。
内容は決して新しいものではありませんがUNIXの基礎やdebian(raspbian)の作法を学ぶにはいい教材の一つと思います。

これだけではなんなんでこのhelpファイルを日本語にしましょう。

# apt install debian-reference-ja

debian02

デフォルトではEpiphanyが起動します。

これだけではなんなんで爆速プラウザと言われているdilloで表示させてみましょう。
dilloはデフォルトでは豆腐文字になってしまうので日本語フォントの設定が必要ですが当サイトの環境では下手な設定よりシステムフォントに任せたほうが綺麗に表示します。
ユーザーホームにディレクトリを作成して設定ファイルをコピーします。

$ mkdir ~/.dillo
$ cp /etc/dillo/dillorc ~/.dillo
$ cd ~/.dillo

空のフォント指定を追加します。(起動時バックグランドで怒られています)

$ vi dillorc
#font_serif="DejaVu Serif"
#font_sans_serif="DejaVu Sans"
#font_cursive="URW Chancery L"
#font_fantasy="DejaVu Sans"
#font_monospace="DejaVu Sans Mono"

font_serif=""
font_sans_serif=""
font_cursive=""
font_fantasy=""
font_monospace=""

起動スクリプトを編集します。

# cd /usr/bin
# vi debian-reference
#/usr/bin/sensible-browser $BDOCUMENTSTEM/index.html # ------- コメント
/usr/bin/dillo /usr/share/debian-reference/index.ja.html # --- 追加

dillo01
javascriptなどは理解しないので通常のプラウザとしては使えませんがこんなhtml文書を読む用途としては最適と思います。

これだけではなんなんでCLIの雄テキストベースのプラウザw3mで表示させてみましょう。
w3mのインストール

# apt install w3m-img

lxterminalから実行します。

% w3m /usr/share/debian-reference/index.ja.html

w3m01

これだけではなんなんでw3mで画像を表示させてみましょう。
インストールしたw3m-imgは画像も表示できます。
ただしlxterminalでは画像を表示しないのでmltermをインストールします。

# apt install mlterm

メニュー システムツールにMultilingual Terminalが追加されます。
このままでも使えるのですが設定ファイルを編集してフォントサイズとフォントカラーを少し変更します。

$ mkdir ~/.mlterm
$ cp /etc/mlterm/main ~/.mlterm
$ cd ~/.mlterm
$ vi main
fg_color=#333333
fontsize=12

mltermを起動して実行してみましょう。

$ w3m yahoo.co.jp

w3m02
ちょっと脱線したようです・・・
ではGood Pi Lifeを

Raspberry Pi jessie sambaサーバー

前回までNFS,CUPSの設定ができたので今回はsambaの設定をします。

設定をするのはRaspberry Pi(Rev2)
参考 Debian 8 (Jessie) – Samba サーバ構築!

sambaインストール

# apt install samba

共有ディレクトリを作成します。
マウントしたHDD(hda)にディレクトリshareを作成します。

# mkdir /home/hda/share
# chmod 777 /home/hda/share

/etc/samba/smb.confの編集
[global]設定(追記します)

[global]
unix charset = UTF-8
dos  charset = CP932
interfaces = 127.0.0.0/8 192.168.0.0/24 eth0
bind interfaces only = yes

# interface eth0に接続される192.168.0.のプライベートアドレスに制限します。

共有フォルダ(share)の設定

[share]
path           = /home/hda/share
writable       = yes
guest ok       = yes
guest only     = yes
create mode    = 0777
directory mode = 0777

smbd nmbd restart

# systemctl restart smbd.service
# systemctl restart nmbd.service

Windowsから接続してみましょう。(windows10 home)
ネットワークアイコンをクリックするとRASPBERRYPIが見えます。
samba01
プリンタとフォルダ(shre)が見えています。

samba02
windowsからフォルダ(shre)にファイル、ディレクトリを作成してみます。

-rwxrw-rw- 1 nobody nogroup   25  5月  7 17:51 sample.txt*
drwxrwxrwx 2 nobody nogroup 4096  5月  7 17:52 test/

# windows10からのアクセスは認証が必要とのことです。
当方ではwindowsのログインIDと同じIDをPiに登録していたので特に何事もなく入れました。
windowsを触りたくないならばローカル目的ですのでサーバー側で新たにユーザーを追加するのが早いと思います。

# adduser xxxxxxxx
ユーザ `xxxxxxxx' を追加しています...
新しいグループ `xxxxxxxx' (1001) を追加しています...
新しいユーザ `xxxxxxxx' (1001) をグループ `xxxxxxxx' として追加しています...
ホームディレクトリ `/home/xxxxxxxx' を作成しています...
`/etc/skel' からファイルをコピーしています...
新しいUNIXパスワードを入力してください: windowsパスワード
新しいUNIX パスワードを再入力してください: windowsパスワード
passwd: パスワードは正しく更新されました
xxxxxxxx のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
        フルネーム []: 空でリターン
        部屋番号 []: 空でリターン
        職場電話番号 []: 空でリターン
        自宅電話番号 []: 空でリターン
        その他 []: 空でリターン
以上で正しいですか? [Y/n] y

piにログインできないユーザーを追加(認証だけ)

# useradd -s /sbin/nologin xxxxxxxx
# passwd xxxxxxxx
新しい UNIX パスワードを入力してください: windowsパスワード
新しい UNIX パスワードを再入力してください: windowsパスワード
passwd: パスワードは正しく更新されました

プリンタのセットアップ
試すのはwindows10(home)
CHUWI Hi8 怪しい中華製品です。
asus X200MA は残念ながらプリンタ共有では動作しませんでした。(ファイル共有は問題なし)
違いは32bitドライバか64bitドライバ位と思うのですが・・・
windowsドライバは予めCanonからダウンロードして当てておきます。

プリンタ(Canon iP2700 series)をクリックします。
samba03
OKをクリック

samba04
Canon iP2700 serise を選択

samba05
印刷ジョブの画面になります

samba06
プリンタ プロパティーを開いてテストページの印刷

CHUWI Hi8は全く同じ手順で正常に印刷実行できました。
asus X200MAはエラーも無くインストールは完了するのですが印刷を実行するとサーバー側では全く反応しないようです。

プリンタ追加の画面では一覧に現れませんでした。
ほかの接続も試してみたのですが残念ながら撃沈です。
wheezyではTCP/IPで接続できていたのですがなにかまだ設定が足りないのかもしれません。

# windowsからsambaのプリンタを利用するにはBonjour Print Servicesをwindowsにインストールするとsambaのプリンタを探してくれるようです。
Bonjour印刷サービスのウイザードで使用可になります。

Raspberry Pi jessieでプリンターを利用する

Raspberry Pi(jessie)でプリンターの設定をしてみたいと思います。

今回はまだsambaの設定をしていないのでwindows共有は試していません。

ip2700
プリンタ Canon iP2700
(当サイトでは相変わらず激安プリンタを使用しています)

Raspberry Pi(Rev2)
Raspberry Pi 2
以上の2台で確認します。(カードを差し替えるだけですが)

osイメージは2016-03-18-raspbian-jessie.imgを新規インストール、日本語環境など最低限の設定をしています。
参考 CUPS-ArchWiki

プリンタを利用、接続している形態は様々と思いますのでまずは基本から。

1.Piディスクトップにプリンタを直接接続してみます。
ソフトのインストール

# apt install cups system-config-printer

インストールが終わるとメニュー–>設定に印刷設定が登録されます。
etc/cups/cupsd.confはデフォルト
cups01
すでにiP2700が登録されています。

jessieになってとても簡単になりました...

iP2700を右クリック、プロパティを開きます。
cups02
テストページの印刷をします。

Pi(Rev2)では印刷速度が遅いです。
Pi2ではまあまあそこそこって感じ。

もしプリンタ追加や変更の場合root権限が必要になるかもしれません。
その際は下記の要領でlpadminにpiを追加します。

2.上記のPiをサーバーにする
上記のPiをプリンタサーバーにしてプリンタの接続していないPiからサーバーのプリンタを利用します。
サーバー(上記1.のPi)の設定
/etc/cups/cupsd.confの編集

# vi cupsd.conf
# Only listen for connections from the local machine.
#Listen localhost:631 # コメント
Port 631 # -------------追記
Listen /var/run/cups/cups.sock

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow @Local # --------追記
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow @Local # --------追記
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow @Local # --------追記
</Location>

lpadminにユーザPiを追加(root権限のあるユーザ)

# gpasswd -a pi lpadmin
ユーザ pi をグループ lpadmin に追加

cups.serviceをリスタート

# systemctl restart cups.service

再起動します。

クライアント
プリンタのないPiのほうです。
cupsとsystem-config-printerのインストール

# apt install cups system-config-printer
# gpasswd -a pi lpadmin

インストールしたら再起動します。
メニュー–>設定–>印刷設定を実行。
cups07
プリンタが見えています。

X環境ではcups+system-config-printerで簡単ですね。

3.XのないPiをCUPSサーバーにする(当サイトのPi
osイメージは2016-03-18-raspbian-jessie-lite.img
ここではcupsのみインストールします。

# apt install cups

/etc/cups/cupsd.confの編集
2.で設定した内容と同様に編集をします。

lpadminにユーザPiを追加(root権限のあるユーザ)

# gpasswd -a pi lpadmin
ユーザ pi をグループ lpadmin に追加

cups.serviceをリスタート

# systemctl restart cups.service

再起動します。

ここからはクライアントから操作します。(cups+system-config-printerインストール済)
webブラウザから192.168.xx.xx:631(サーバのアドレス:631)
cups00
cups version 1.7.5-11+deb8u1

cups08
管理タブを開いてプリンターの追加をクリック

ssl03
httpssの認証画面がでます
危険性を・・・・クリック、開いて例外を追加
次の画面でセキュリティ例外を承認をクリック

httpss接続しないという時は
DefaultEncryption IfRequested
をcupsd.confの適当な位置に書くとこの画面をスキップします。

cups04
ユーザー名とパスワードを入力

cups09
エラーが出たらpiユーザーがlpadminに所属してるか確認

$ id pi

cups10
うまく行けばこの画面

プリンタを選択 続ける

cups11
適当に入れて

共有をチェック

続ける

cups12
プリンターを選択して 続ける

この画面ではちゃんとプリンタを選択をしていますが結果的に全く別のプリンタが割り当ててありました。ブラウザのキャッシュによるいたずらと思います。エラーも出ずにうんともすんとも言わない時は確認してみます。

cups13
デフォルトオプションの設定をクリック

画面が切り替わります
プリンタータブに出てればOK

サーバーにsshで接続して

# systemctl restart cups.service

クライアントから印刷設定を見てみましょう。
cups14
無事現れました。
raspbianの設定ではcups-files.confで
# Administrator user group…cupsd.conf…
SystemGroup lpadmin
が設定されています。
この辺がキーでしょうか。

Raspberry Pi NFSサーバー

piのファイル管理にはやはりnfsが便利なのでローカル用にNFSサーバーを構築します。

DSCN0119
仕切り直し
前回はパーテーションを4つ区切ったのですがこちらの記事(USBHDDの定期的なスピンダウン方法 – RaspberryPiで各種サーバー作り! – ある阪大生の物置小屋)を適用するために1つにすることにしました。

# fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 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: dos
Disk identifier: 0x14eac08c
Device     Boot Start        End    Sectors   Size Id Type
/dev/sda1        2048 1953525167 1953523120 931.5G 83 Linux

UUIDを調べます。

# blkid /dev/sda1
/dev/sda1: UUID="c7069f1ae-94f9-43cc-a981-8a8adeac5b12" TYPE="ext4" PARTUUID="14eac08c-01"

マウント
マウントポイントを作成します。
個人的には/home以下が使いやすいので/home/hdaとして作成します。

# mkdir /home/hda

/etc/fstabに追記します。

# vi fstab
UUID=c7069f1ae-94f9-43cc-a981-8a8adeac5b12 /home/hda ext4 defaults,noatime 0 0

マウントしてみましょう。

# mount -a
# df -h
/dev/root        3.6G  1.4G  2.1G   41% /
devtmpfs         214M     0  214M    0% /dev
tmpfs            218M     0  218M    0% /dev/shm
tmpfs            218M  4.7M  213M    3% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            218M     0  218M    0% /sys/fs/cgroup
/dev/mmcblk0p1    60M   21M   40M   35% /boot
/dev/sda1        917G   62G  809G    8% /home/hda

USB-HDDのスピンダウン
今回使用のHDDはhdparmで動きました。

# apt install hdparm

hdd_spindown.sh
/lib/systemd/system/user_hdd_spindown.service
以上、記事のとおり作成して正しく動作しました。
時間は300(5分)を設定しました。
# systemctl enable user_hdd_spindown.service実行後再起動しないで
# systemctl start user_hdd_spindown.serviceを実行してしばらくするとdisk i/oエラーが発生しました。
再起動後に正常動作するようです。(再起動後は問題ありません)

NFSサーバーソフトインストール

# apt install nfs-kernel-server

/etc/exportsファイルの編集
オプションは適当に。

# vi exports
/home/hda   192.168.0.0/24(rw,async,crossmnt,no_root_squash,no_subtree_check)

サービスをリスタートします。

# systemctl restart nfs-kernel-server.service

確認してみましょう。

$ showmount -e
Export list for raspberrypi:
/home/hda 192.168.0.0/24

OKのようです。
再起動してみましょう。つい最近までは再起動するとnfs-kernel-serverが起動していないという現象がありましたが今確認してみると修正されているようです。
# apt update
# apt upgrade
# rpi-update
しましょう。こんな記事も参考になります。

5/8 やはり時々nfsdが起動しないようです。
先の記事を参考に設定しました。
/etc/rc.local

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

sleep 3 # ------ 追記
systemctl restart nfs-kernel-server.service # ------ 追記

exit 0

クライント設定
クライアントは接続できればなんでもいいのですがここではpi(jessie)を想定しています。
jessieであれば必要なソフトはインストール済み、サービスも起動しています。
クライアントから確認してみましょう。

$ showmount -e raspberrypi(ホストの名前またはIPアドレス)
Export list for raspberrypi:
/home/hda 192.168.0.0/24

Lan内に同じホスト名がある時は不都合があるので変更しておきます。
またLan内で名前解決ができない時は/etc/hostsに追記します。
ここの例の場合サーバーがraspberrypiですのでクライアントを変更します。

# vi /etc/hostname
raspberrypi -->新たな名前に変更

# vi /etc/hosts
127.0.1.1	新たな名前に変更

192.168.0.5     raspberrypi(サーバーアドレス)

(hostsの書き方はこれで行けると思いますが未確認)
ホスト名を変更したら再起動します。

マウントポイントの作成
使いやすいところでいいのですがここもサーバー側に合わせて作成してみます。

# mkdir /home/hda

/etc/fstabの編集

# vi fstab
raspberrypi:/home/hda  /home/hda  nfs  rw,defaults  0   0

マウントします。

# mount -a
# df -h
/dev/root        4.6G  3.8G  625M   86% /
devtmpfs         214M     0  214M    0% /dev
tmpfs            218M     0  218M    0% /dev/shm
tmpfs            218M  4.6M  213M    3% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            218M     0  218M    0% /sys/fs/cgroup
/dev/mmcblk0p1    60M   21M   40M   35% /boot
tmpfs             44M  4.0K   44M    1% /run/user/1000
raspberrypi:/home/hda   917G   62G  809G    8% /home/hda

nfs01
hdaはブックマークに登録、hda1〜hda4は予めサーバー側でディレクトリを作成しています。
運用のしかたはそれぞれですが例えばディレクトリ(hda1)をユーザー(pi)で使用したい時はオーナーを変更します。セキュリティと利便性を踏まえて決定します。

# chown pi:pi hda1

HDDのスピンダウンが効いている時はアクセスするまで若干のタイムロスがあります。

転送速度
テスト環境
サーバー raspberry pi(Rev2)
クライアント raspberry pi2
有線で接続(当サイトの安物wifiルーターでは速度遅い)
# dd if=/dev/zero of=test5 bs=1M count=1000で作った1GBのファイルと2016-03-18-raspbian-jessie.zip 1.4GBのファイルを書き込んでみました。
time_cp
raspberry pi2からマウントしたHDDに書き込み
1GB 6.9MB/s
1.4GB 7.1MB/s
raspberry pi2のマウントしたHDDからSDカードに書き込み
1GB 4.5MB/s
1.4GB 4.8MB/s

100Base-TXのイーサネットでは理論上最大12.5MB/sの速度が出ますが実質10MB/s程度と思います。
マウントオプションを変更して試してみましたが試した範囲では遅くなることはあっても早くなることは無く結局デフォルトのオプションに落ち着きました。
piのeth0は内部でUSBハブを介して接続されるため性能的には少々劣るものと思います。
それでも7MB/s位は安定して出ているのでこの辺でヨシとします。

Raspberry Pi ローカルサーバーを構築する

2ヶ月くらい前にHDDを購入しました。

クラウドストレージCopyを使っていたのですが終了になるのでローカルも整備しておきたいと思います。

無料ストレージもいずれ淘汰されていくものと思います。でもBoxとか使ってたりしてます。
用途はローカルサーバーとしてnfs,cups.sambaを予定しています。
今回はpiへのHDD取り付けの記録です。

osは2016-03-18-raspbian-jessie-lite.imgを準備します。

材料は次のとおり
DSCN0097
Raspberry Pi(Rev2)

以前はディスクトップとして使用

DSCN0102
TOSHIBA 2.5インチ SATA 内蔵HDD 1TB 9.5mm MQ01ABD100 バルク AS-MQ01ABD100

Cyberplugs SATA-USB 3.0 変換アダプタ

HDDケースの作成
DSCN0101
材料は古〜い照明器具の廃材とアルミ板

切り貼りします。

DSCN0104
HDDを入れてみました。

HDDケースというよりはHDD台と言った方が方が適切ですね。

USBハブ
DSCN0095
最近100均ハブを見かけなくなりました。さすがにコストが合わなくなったのかもしれません。

以前製作したものをバラして作り直します。

5ポートありますが1個は電源専用です。

DSCN0100
オマケのSDカードケースに取り付けます。

本来のSDカードケースとしても使用できます。

多分使わないと思いますが・・・

DSCN0111
組み上げます。
見た目はなんだこれという感じですがケーブルに振り回されることもなくUSBの抜き差しも容易です。
プリンター、スキャナ、カードリーダーなど接続する予定です。

Pi(Rev2)はUSB機器によっては抜き差しするとリブートしてしまうという癖がありますがマイクロUSBカードリーダー程度では落ちることがないのでヨシにします。

電源について
電源は本来のマイクロUSB端子から供給するとUSB1本ではUSB-HDDが起動しません。
変換アダプタにはこのためもう1本電源専用のUSB端子があるのですがPiへの供給は1本にしたいためGPIOから直接供給します。(もちろん自己責任です)
Pi(Rev2)はUSB端子から電源を供給しても起動します。B+以降は無効と思います。
Pi一般に言えることと思いますがPi内部にはポリスイッチなどの保護部品のため内部で電圧降下が発生して結果、虹色マークが出現してしまうことがあります。
これを防ぐためには太い電源専用ケーブルを使うのはもちろんですがアダプタによっては電流が充分でも電圧が低めのものもあるので注意が必要です。(当サイトでは5.2Vで設定しています)
DSCN0109

インストール
今回はサーバー用途なので2016-03-18-raspbian-jessie-lite.imgを焼いて予め有線で固定IPを割り当てています。
SSHで接続
# raspi-config 2 Change User Password ユーザーpiのパスワードを変更します。
# apt update upgrade 実行
rpi-updateをインストール

# apt install rpi-update

# rpi-update 実行

HDDはpi3のgpartedで予め適当にパーテーションを切りました。
Pi(Rev2)では/dev/sdaで認識できました。

# fdisk -l /dev/sda

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 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: dos
Disk identifier: 0x14eac08c

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1             2048 1048578047 1048576000   500G 83 Linux
/dev/sda2       1048578048 1468008447  419430400   200G 83 Linux
/dev/sda3       1468008448 1743810559  275802112 131.5G 83 Linux
/dev/sda4       1743810560 1953523711  209713152   100G 83 Linux

次回はnfsサーバーから設定していきたいと思います。

Top