白執事の徒然なる日々


主にコンピュータ関係の記事を書いています。

プロフィール

白執事☆

こんにちは、白執事です。
PC関係の記事を書いていきますので
よろしくお願いします。

Raspberry Pi で冷却ファンをPWM制御してみよう

このページの目標

Raspberry Pi に冷却ファンを取り付けると、基本的にはフルパワーで回りっぱなしだと思います。
このページでは トランジスタPWM という仕組みを使って、冷却ファンの回転数を制御してみます。
また、Raspberry Pi 起動時に自動で冷却ファンの制御が働くようにします。

今回は Raspberry Pi と各部品を直接つないでみようと思います。
その為、ブレッドボードは使いません。


必要な物

Raspberry Pi 本体
今回は Raspberry Pi 2 を使って説明します。


ケース
冷却ファンに対応した Raspberry Pi のケースを用意しましょう。
GPIOピンの所にスペースがあいている物が使いやすくて良いと思います。



冷却ファン
下記のようにケーブルが分かれている方が使いやすいのでおすすめです。
5Vの電圧に対応した物を用意しましょう。
また、ケースの取り付け部分に合う大きさの物を選んで下さい。



トランジスタ
2SC1815-GR という製品を使って、この先の説明をします。



ジャンプワイヤー
(メス-メス)のケーブルを用意しましょう。 ここでは2本使う予定です。
トランジスタGPIOピン をつなげるのに使います。
1本1本、独立している物を選んで下さい。
複数本がひっついている製品もありますが、それは使いません。



用語の解説

PWM
  • Pulse Width Modulation の略。

    電子部品に電気を流す場合、通常は電圧を一定にします。
    そこで、意図的に電源のオン・オフを高速で繰り返し、オンのパルス幅を増減することで
    見かけ上の電圧を変化させるのが PWM です。

    この仕組みを利用すると、モーターの回転数やLEDの輝度などを制御できます。




トランジスタ
  • 半導体でできた電子部品で、電気の流れを制御します。
    大まかには下記の働きがあります。

    (1)電気信号の増幅
    (2)電子回路のONとOFFを切り替える ← 今回はこのスイッチ機能を使って、PWMを実現します。

    トランジスタの各名称と電流の向きは次のようになります。



    2SC1815-GR という製品が安価で手に入るようなので、これを使います。
    丸みのある部分が後ろ、平らな部分が前になります。




    ベースから電気が流れると、コレクタ - エミッタ間の電気が流れるようになります。
    ベースの電流が止まると、コレクタ - エミッタ間の電流が止まります。


Raspberry Pi 2 の GPIOピンについて

※Raspberry Pi のバージョンによって、GPIOピンの数や働きが違うようなので注意して下さい。


・・・ 電源です。3.3V と 5V があるので、必要に応じてお好きな方を選んで下さい。
・・・ Ground。接地、アースのようなもの。配線のマイナス極をここにつなぐ。
・・・ Raspberry Pi では GPIO18 だけに PWM の機能があるようです。トランジスタのベースをここにつなぐ。



接続例



Pythonで冷却ファンの制御プログラムを作成

Raspberry Pi の /home/pi ディレクトリに移動。
cd /home/pi

PWM_FanCooler ディレクトリを作成。
sudo mkdir PWM_FanCooler

/home/pi/PWM_FanCooler に移動。
cd /home/pi/PWM_FanCooler

PWM_FanCooler_d.py を作成して編集する。
sudo nano PWM_FanCooler_d.py
#!/usr/bin/python
# coding: utf-8

# モジュールをインポート
import RPi.GPIO as GPIO
import time

# daemon化に必要
from daemon import daemon
from daemon.pidlockfile import PIDLockFile

# GPIOのピン番号を定義
GPIO18 = 18

# 周波数を定義
Hz = 60

#=================
# CPUの温度を取得
#=================
def get_CPU_Temperature():
	temp = "0"

	f = open("/sys/class/thermal/thermal_zone0/temp", "r")
	for t in f:
		temp=t[:2] + "." + t[2:5]
	f.close()

	return float(temp)

#=========
# PWM実行
#=========
def exec_pwm():
	#--------------------------------------
	# GPIOを物理的なピン番号で指定する場合
	#--------------------------------------
	## GPIOピン番号の定義方法
	#GPIO.setmode(GPIO.BOARD)
	## 出力モードで初期化
	#GPIO.setup(12, GPIO.OUT)
	## PWM初期化
	#p = GPIO.PWM(12, Hz)

	#------------------------
	# GPIO番号で指定する場合
	#------------------------
	# GPIOピン番号の定義方法
	GPIO.setmode(GPIO.BCM)
	# 出力モードで初期化
	GPIO.setup(GPIO18, GPIO.OUT)
	# PWM初期化
	p = GPIO.PWM(GPIO18, Hz)

	try:
		# 100%の出力で、1秒間動かす
		# 最初の出力が小さすぎて、ファンが回らない場合の対策
		Duty = 100
		p.start(Duty)
		time.sleep(1)

		while True:
			# CPUの温度を取得
			CPU_Temp = get_CPU_Temperature()

			# CPUの温度によって出力を変更
			#-------------------------
			#       ~20.0℃ -->  25%
			# 20.0℃~25.0℃ -->  50%
			# 25.0℃~30.0℃ -->  75%
			# 30.0℃~       --> 100%
			#-------------------------
			if CPU_Temp < 20.0:
				Duty = 25
			elif CPU_Temp < 25.0:
				Duty = 50
			elif CPU_Temp < 30.0:
				Duty = 75
			else:
				Duty = 100

			# 出力を変更して、30秒間待機
			p.ChangeDutyCycle(Duty)
			time.sleep(30)

	except:
		# 例外処理
		print "[例外発生] PWM_FanCooler_d.py を終了します。"
	finally:
		# PWMを終了
		p.stop()

		# GPIO開放
		GPIO.cleanup()

if __name__ == "__main__":
	# PIDファイルの書き込みに失敗してデーモンが動かない事があるので、少し時間をずらす
	time.sleep(1)

	# /etc/init.d/PWM_FanCooler.sh のPIDファイルとは別名にする
	with daemon.DaemonContext(pidfile=PIDLockFile('/var/run/PWM_FanCooler_d.pid')):
		exec_pwm()
Ctrl + O で保存、Ctrl + X でnanoを終了。


解説
Pythonのプログラムを普通に作ってそのまま実行すると、実行中は他のコマンドを入力できない状態になります。
そのため、デーモン化してバックグランドで実行すると、他の作業ができるようになります。
from daemon import daemon
from daemon.pidlockfile import PIDLockFile
	with daemon.DaemonContext(pidfile=PIDLockFile('/var/run/PWM_FanCooler_d.pid')):
		exec_pwm()

PWM_FanCooler_d.py に実行権限を与える。
sudo chmod 755 PWM_FanCooler_d.py


デーモンを実行するスクリプトを作成

Raspberry Pi の /etc/init.d に移動。
cd /etc/init.d

PWM_FanCooler.sh を作成して編集する。
sudo nano PWM_FanCooler.sh
#!/bin/sh

### BEGIN INIT INFO
# Provides:          PWM_FanCooler
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.  This example start a
#                    single forking daemon capable of writing a pid
#                    file.  To get other behavoirs, implemend
#                    do_start(), do_stop() or other functions to
#                    override the defaults in /lib/init/init-d-script.
### END INIT INFO

#-------------------
# PWM制御スクリプト
#-------------------

# Change the next 3 lines to suit where you install your script and what you want to call it
DIR=/home/pi/PWM_FanCooler
DAEMON=$DIR/PWM_FanCooler_d.py
DAEMON_NAME=PWM_FanCooler

# Add any command line options for your daemon here
DAEMON_OPTS=""

# This next line determines what user the script runs as.
# Root generally not recommended but necessary if you are using the Raspberry Pi GPIO from Python.
DAEMON_USER=root

# The process ID of the script when it runs is stored here:
PIDFILE=/var/run/$DAEMON_NAME.pid

. /lib/lsb/init-functions

do_start () {
	log_daemon_msg "Starting system $DAEMON_NAME daemon"
	start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --startas $DAEMON -- $DAEMON_OPTS
	log_end_msg $?
}

do_stop () {
	log_daemon_msg "Stopping system $DAEMON_NAME daemon"
	start-stop-daemon --stop --pidfile $PIDFILE --retry 10
	log_end_msg $?
}

case "$1" in

	start|stop)
		do_${1}
		;;

	restart|reload|force-reload)
		do_stop
		do_start
		;;

	status)
		status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $?
		;;
	*)
		echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}"
		exit 1
		;;

esac
exit 0
Ctrl + O で保存、Ctrl + X でnanoを終了。


解説
### BEGIN INIT INFO
# Provides:          PWM_FanCooler
4行目: スクリプトをシステムに登録する時に使われるサービス名のようなもの。
既にこの名前が使われていると、システム登録時に失敗します。
他と重ならないような名前をつけて下さい。
# Change the next 3 lines to suit where you install your script and what you want to call it
DIR=/home/pi/PWM_FanCooler
DAEMON=$DIR/PWM_FanCooler_d.py
DAEMON_NAME=PWM_FanCooler
23行目: Pythonプログラムが保存されているディレクトリを指定。
24行目: Pythonプログラムのファイル名を指定。
25行目: デーモンの名前を指定。
# This next line determines what user the script runs as.
# Root generally not recommended but necessary if you are using the Raspberry Pi GPIO from Python.
DAEMON_USER=root
32行目: デーモンを実行するユーザー名を指定。


PWM_FanCooler.sh に実行権限を与える。
sudo chmod 755 PWM_FanCooler.sh


スクリプト経由でデーモンを起動・停止する場合

開始。
sudo /etc/init.d/PWM_FanCooler.sh start

動作状況を確認。
sudo /etc/init.d/PWM_FanCooler.sh status

停止。
sudo /etc/init.d/PWM_FanCooler.sh stop


スクリプトが自動起動するよう、システムに登録

スクリプトの登録方法

Raspberry Pi の /etc/init.d に移動。
cd /etc/init.d

スクリプトを登録する。
sudo update-rc.d PWM_FanCooler.sh defaults

スクリプトが登録されたか確認する。
ls -l /etc/rc?.d/*PWM_FanCooler.sh
※PWM_FanCoolerに関するファイルが表示されたらOK。

変更を加えたら更新する。
sudo systemctl daemon-reload

Raspberry Pi を再起動する。
sudo reboot


再起動時に冷却ファンが自動的に回るようになれば成功です!


スクリプトの登録を削除する場合

sudo update-rc.d -f /etc/init.d/PWM_FanCooler.sh remove

スポンサーサイト

カテゴリー:Raspberry Pi | タグ:
コメント(0)トラックバック (0) | 2017年04月23日 (日)05時11分

情報セキュリティマネジメント試験 感想 【平成28年・春】

試験の概要

IPAの公式サイト
https://www.jitec.ipa.go.jp/sg/index.html
https://www.jitec.ipa.go.jp/sg/outline.html


午前の出題内容



情報セキュリティ全般 機密性・完全性・可用性、脅威、脆弱性、サイバー攻撃手法、暗号、認証 など
情報セキュリティ管理 情報資産、リスク、ISMS、インシデント管理などの各種管理策、CSIRT など
情報セキュリティ対策 マルウェア対策、不正アクセス対策、情報漏えい対策、アクセス管理、情報セキュリティ啓発 など
情報セキュリティ関連法規 サイバーセキュリティ基本法、個人情報保護法、不正アクセス禁止法 など



テクノロジ ネットワーク、データベース、システム構成要素
マネジメント システム監査、サービスマネジメント、プロジェクトマネジメント
ストラテジ 経営管理、システム戦略、システム企画


午後の出題内容
業務の現場における情報セキュリティ管理の具体的な取組みである情報資産管理、リスクアセスメント、IT 利用における
情報セキュリティ確保、 委託先管理、情報セキュリティ教育・訓練などのケーススタディによる出題を通して、
情報セキュリティ管理の実践力を問います。


留意事項
IPAが公開している「情報処理技術者試験の出題範囲」を見ると、
『情報セキュリティマネジメント試験は「IT を利活用する者」を主な対象とすることから,技術的な項目は除外している。』
らしいです。


試験時間・出題形式
時間区分 午前 午後
試験時間 90分 90分
出題形式 多肢選択式
(四肢択一)
多肢選択式
出題数/
解答数
50/50問 3/3問
基準点 60点
(100点満点)
60点
(100点満点)


受験料
5,700円


試験に関する参考資料

試験要綱Ver2.0(情報セキュリティマネジメント試験抜粋版)
https://www.jitec.ipa.go.jp/1_13download/youkou_ver2_0_sg_bassui.pdf

「情報処理技術者試験の出題範囲」2015年10月改訂版
https://www.jitec.ipa.go.jp/1_13download/hani20151016.pdf

「情報セキュリティマネジメント試験(レベル2)」シラバス(Ver 1.0)
https://www.jitec.ipa.go.jp/1_13download/syllabus_sg_ver1_0.pdf


情報セキュリティに関する参考資料

組織における内部不正防止ガイドライン(日本語版) 第3版
http://www.ipa.go.jp/files/000044615.pdf

情報セキュリティ10大脅威 2016年版
http://www.ipa.go.jp/security/vuln/10threats2016.html


過去問・サンプル問題

過去問題(問題冊子・配点割合・解答例・採点講評)
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/_index_mondai.html

サンプル問題(情報セキュリティマネジメント試験)
https://www.jitec.ipa.go.jp/sg/sample.html


おすすめ参考書



情報セキュリティマネジメント試験対策書 第2版 (情報処理技術者試験対策書)

私はこのテキストの初版で勉強し、試験に臨みました。

午前問題のテーマごとに学習ポイントがまとめてあり、その後に練習問題が収録されています。
練習問題には、ITパスポートや基本情報技術者の午前問題から関連する部分が取り上げられています。

また、後半には午後の練習問題が10問あり、問題文の読解力を鍛えるにはちょうど良いと感じました。

第2版は第1回試験の傾向を踏まえて改訂されているので、新しい方を購入される事をおすすめします。


情報処理教科書 情報セキュリティマネジメント 2016年秋期

情報セキュリティマネジメント 要点整理&予想問題集 の新版が出ました。
平成28年・春期の過去問が解説付きで収録されています。

旧版のテキストを知人が使用していたので少し読ませてもらいましたが、非常にコンパクトにまとまっていて
問題も多く収録されており、短時間で効率よく勉強できそうな印象を受けました。

それなりにIT知識がある人であれば、これ1冊で大丈夫かもしれません。


情報セキュリティ読本―IT時代の危機管理入門 四訂版

IPAが出している本です。

情報セキュリティマネジメント試験の重点分野が多く出てきます。
情報セキュリティの知識に不安があったり、情報処理試験を初めて受験する人は
最初にこの本を読むと、非常に参考になると思います。

ただし、この本が発行された後に法改正があったため、
情報セキュリティ関連の法規と制度の部分は内容が少し古くなっていると思います。
また、これ以外に問題集もやらないと、合格は難しいでしょう。


合格後のおすすめ副読本



徳丸浩のWebセキュリティ教室

SQLインジェクション や XSS(クロス・サイト・スクリプティング)、WAF(Web Application Firewall)、
その他 WEBを介した様々なセキュリティリスクについて説明されています。
それらに対する対策や心構えなども載っているので参考になると思います。

実際にWEBサービスを作る技術者よりも、発注側や管理職などの方々に向けて書かれた内容です。
情報セキュリティマネジメント試験で想定される受験者層と重なると思うので、この本をお薦めします。


暗号技術入門 第3版 秘密の国のアリス

対称暗号や公開鍵暗号、デジタル署名、SSL/TLS など情報セキュリティマネジメント試験でもおなじみの暗号が出てきます。
それぞれの暗号がどのような状況で使われるのか、またどのような仕組みで動くのか、おおまかな概要が説明されています。

現在の暗号はコンピュータなしでは考えられませんし、ネットワーク上で重要なデータを扱う場合はどうしても暗号が必要です。
コンピュータと暗号、どちらも現代社会には欠かせないものなので、知っておいて損はない内容だと思います。
ただし、技術的な詳細を解説するものではないので、注意して下さい。

定期的に改訂されているので、購入される場合は新版があるかチェックして下さい。


受験後の感想

2016年4月17日(日)に情報セキュリティマネジメント試験を受けてきました。

午前は、情報セキュリティ、法令、マネジメント、ストラテジの用語問題が多数を占めていました。
情報セキュリティに関する攻撃・対策方法の問題もありましたが、基本的な用語さえ理解していれば解けるものが多かったと思います。
テキストでしっかり勉強していれば7~8割くらい、得点できた方が多かったのではないでしょうか?

午後ですが、問1(標的型攻撃メールの脅威と対策)は問題文も比較的短く、読みやすい内容だったので解きやすい問題でした。
問2(業務委託におけるアクセス制御)は問題文が長く、方針やルール、関わる人物などが多く、見落としによるミスがあったかと思います。
問3(情報セキュリティ自己点検)は問題文は長いですが、順序だてて読んでいけば比較的わかりやすい内容だったと思います。
むしろ、問2に時間をかけすぎたので問3を解くのに焦ってしまったのが反省点でした。

午前は情報セキュリティ関連の用語、午後は時間配分と読解力を試される試験だと思いました。


合格発表

2016年5月16日(月)に合格発表が行なわれました。
私も合格することができました。

IPAが公開している 推移表 を確認すると、合格率がなんと 88.0% となっています!
第1回の試験という事で、IPAの出題も手探りであったり、上位資格を持つ人が受験すると予想されたので
合格率が高くなるとは思いましたが、ここまで高くなるのは予想外でした(笑)




また、勤務先別 一覧表平均年齢 を見ると社会人がほとんどで、
それなりにキャリアのある人が受験していることをうかがえます。






得点分布 を確認すると、午前問題80~89点午後問題90点以上が最も多くなっています。
やはり、社会人経験があることで午後の得点率が上がったものと思われます。
今後も午後問題は、実際の業務を模した実践的な問題が出題されるはずなので、
学生には得点しづらい試験になるかもしれません。



【参考資料】
情報処理技術者試験 統計情報
https://www.jitec.ipa.go.jp/1_07toukei/_index_toukei.html

平成28年度春期情報処理技術者試験の合格発表について
http://www.ipa.go.jp/about/press/20160516_1.html


【2016/05/16 修正】
  • 情報セキュリティ10大脅威 のリンク先を、2016年度版だけに変更
    2015年以前のものはリンク先をたどって下さい
  • 合格後のおすすめ副読本を追加
  • 合格発表を追加

【2016/05/17 修正】
  • 合格発表についてのプレス情報を追加

【2016/06/16 修正】
  • おすすめ参考書を一部修正
  • 合格後のおすすめ副読本を追加

【2016/09/03 修正】
  • おすすめ参考書を一部修正


カテゴリー:資格 | タグ:
コメント(0)トラックバック (0) | 2016年04月22日 (金)13時00分

Raspberry Pi にsambaを導入してファイル共有

このページの目標

Raspberry Pi に samba を導入して、ファイルサーバーとして機能させてみます。


apt をアップデート

sudo apt-get update

apt-get … パッケージを取得してインストール・アップデート・アンインストールするコマンド。
update … aptのパッケージリストを更新します。


samba をインストール

sudo apt-get install samba


samba-common-bin をインストール

sudo apt-get install samba-common-bin

samba-common-bin はパスワードの設定で必要です。


samba を再起動

sudo service samba restart


エラーでsambaを再起動できない場合は、以下のコマンドで再起動します。
sudo service smbd restart
sudo service nmbd restart


Sambaのユーザー登録を行う

(1) sambaにユーザーを追加します。
  • Raspberri pi と同じユーザー名にして下さい。
    初期状態では pi になっているはずです。
    sudo smbpasswd -a pi


(2) sambaのパスワードを設定します。
  • 先程、追加したユーザー pi にパスワードを設定します。
    sudo smbpasswd pi

    Raspberri Pi と同じパスワードにして下さい。
    初期状態では raspberry になっているはずです。
    New SMB password:
    Retype new SMB password:
    セキュリティのため、入力した文字列は非表示ですが気にせず入力を続けて下さい。


ファイアウォールの設定をチェック

(1) 現在の設定を確認します。
  • sudo ufw status

    [参考例]
    To                         Action      From
    --                         ------      ----
    22/tcp                     ALLOW       192.168.1.0/24
    137/udp                    ALLOW       192.168.1.0/24
    138/udp                    ALLOW       192.168.1.0/24
    139/tcp                    ALLOW       192.168.1.0/24
    445/tcp                    ALLOW       192.168.1.0/24
    

    この中で下記のポートが許可されていればOKです。
    137/udp
    138/udp
    139/tcp
    445/tcp


(2) 上記のポートが許可されていない場合、ファイアウォールにルールを追加します。
  • sudo ufw allow proto udp from 192.168.1.0/24 to any port 137
    sudo ufw allow proto udp from 192.168.1.0/24 to any port 138
    sudo ufw allow proto tcp from 192.168.1.0/24 to any port 139
    sudo ufw allow proto tcp from 192.168.1.0/24 to any port 445

    192.168.1.0/24 の部分はそれぞれの環境に合わせて読み替えて下さい。


sambaの設定ファイルを変更

(1) /etc/samba ディレクトリに移動。
  • cd /etc/samba


(2) smb.conf のバックアップをとる。
  • sudo cp smb.conf smb.conf_original


(3) smb.conf を編集。
  • sudo nano smb.conf

    [global] のすぐ下に、文字コードの設定を追加します。
    [global]
    unix charset = UTF-8
    dos charset = CP932

    設定ファイルの末尾に、共有フォルダの設定を追加します。
    [common]
    comment = RasPi2 Share Directory
    path = /media/usb0/data
    browseable = yes
    read only = no
    guest ok = no
    force user = pi
    

    [common]  …  ここで指定された名前が、共有フォルダの名前になります。
    comment  …  共有フォルダの説明。
    path  …  実際に共有する Raspberry Pi のディレクトリ。
    browseable  …  yes にすると他のコンピュータから見えるようになります。
    read only  …  no にすると、他のコンピュータからファイルの作成・変更をできるようになります。
    guest ok  …  no にすると、guest account による操作が禁止。ユーザー名・パスワードを求められるようになります。
    force user  …  samba に対するデフォルトユーザー。指定のユーザーの権限で、ファイル操作が行なわれます。

    Ctrl + O で上書き、Ctrl + Xnano を終了します。

    ※ログファイルのサイズを変更したり、共有プリンタの機能を切る事もできますが、ここでの説明は割愛します。


samba を再起動

sudo service samba restart


エラーでsambaを再起動できない場合は、以下のコマンドで再起動します。
sudo service smbd restart
sudo service nmbd restart


以上で、他のコンピュータから Raspberry Pi の共有フォルダを利用できるはずです。


各種・設定方法

【準備】 Raspberry Pi 2 を用意してみよう
(1) Raspberry Pi 2 の OS をインストールする
(2) IPアドレスを設定
(3) システム時刻を日本に設定
(4) RAMディスクを使って、micro SDを長寿命化
(5) Raspberry Pi にUSBメモリをマウント
(6) ファイアウォールを設定
(7) samba を導入して、共有フォルダを作る



カテゴリー:Raspberry Pi | タグ:
コメント(0)トラックバック (0) | 2016年04月01日 (金)19時11分

Raspberry Pi のファイアウォールを設定

このページの目標

Raspberry Pi を自宅のファイルサーバーとして運用する場合、外部からのアクセスを遮断する必要があります。
その対策として、ファイアウォールを設定します。
設定を間違えると、Raspberry Pi との通信ができなくなるので注意して設定して下さい。


ufw をインストール

ファイアウォールを簡単に設定できるソフト ufw をインストールします。
sudo apt-get install ufw


ufw を設定する

(1) 通信を全て遮断するように設定。
sudo ufw default deny


(2) TCPプロトコルで22番ポートの通信を許可する。
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 22

22番ポートはTeratermとのSSH通信で使用します。

192.168.1.0/24 とは?
  • 192.168.1.1~192.168.1.254 からの通信を許可するという意味です。
    それぞれの環境に合わせて読み替えて下さい。
    例えば、ローカルエリアのIPアドレスが 192.168.0.1~192.168.0.254 の場合、
    192.168.0.0/24 と指定します。


(3) UDPプロトコルで137番・138番ポート、TCPプロトコルで139番・445番ポートの通信を許可する。
sudo ufw allow proto udp from 192.168.1.0/24 to any port 137
sudo ufw allow proto udp from 192.168.1.0/24 to any port 138
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 139
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 445

137番・138番・139番・445番ポートはWindowsとのファイル共有で使用します。
192.168.1.0/24 はそれぞれの環境に合わせて読み替えて下さい。


(4) ファイアウォールを有効にします。
sudo ufw enable


(5) ファイアウォールの状態を確認する。
sudo ufw status

[参考例]
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       192.168.1.0/24
137/udp                    ALLOW       192.168.1.0/24
138/udp                    ALLOW       192.168.1.0/24
139/tcp                    ALLOW       192.168.1.0/24
445/tcp                    ALLOW       192.168.1.0/24

以上で、とりあえずの設定は終了です。
上記以外の通信を許可する場合は、その都度設定していきましょう。


uwf のその他の操作方法

(1) ufw を無効にする場合
sudo ufw disable


(2) uwf の設定を全てリセットする場合
sudo ufw reset


(3) 特定のルールを削除する場合
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       192.168.1.0/24
137/udp                    ALLOW       192.168.1.0/24
138/udp                    ALLOW       192.168.1.0/24
139/tcp                    ALLOW       192.168.1.0/24
445/tcp                    ALLOW       192.168.1.0/24
65535/tcp                  ALLOW       192.168.1.0/24

例えばこの中から 65535/tcpALLOW192.168.1.0/24 を削除するには次のコマンドを実行します。
sudo ufw delete allow proto tcp from 192.168.1.0/24 to any port 65535


各種・設定方法

【準備】 Raspberry Pi 2 を用意してみよう
(1) Raspberry Pi 2 の OS をインストールする
(2) IPアドレスを設定
(3) システム時刻を日本に設定
(4) RAMディスクを使って、micro SDを長寿命化
(5) Raspberry Pi にUSBメモリをマウント
(6) ファイアウォールを設定
(7) samba を導入して、共有フォルダを作る



カテゴリー:Raspberry Pi | タグ:
コメント(0)トラックバック (0) | 2016年04月01日 (金)19時10分

Raspberry Pi にUSBメモリをマウント

このページの目標

Raspberry Pi にUSBメモリを認識させてみます。
USBメモリを ext4 でフォーマット。
起動時に特定の場所にマウントするように設定します。

この先の操作をすると、USBメモリのデータは消えます。
データがある場合はバックアップしておきましょう。


デバイスの情報を確認

Raspberry Pi にUSBメモリをつないだら、次のコマンドを実行します。
sudo fdisk -l

fdisk … ハードディスクのパーティションを設定するコマンド。
-l … fdiskのオプション。現在マウントされているデバイスの情報を表示する。

[参考例]
Disk /dev/sda: 28.9 GiB, 31024349184 bytes, 60594432 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: 0x386954cf

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1        2048 60594431 60592384 28.9G 83 Linux

まっさらの状態で初めてUSBメモリを装着すると、/dev/sda1 でマウントされるはずです。
ただし、環境によって違うので記憶容量やフォーマットのタイプで判断して下さい。

ここから先は、/dev/sda1 がUSBメモリのマウント先だと仮定して話を進めます。
マウント先が違う場合はその都度、読み替えて下さい。


USBメモリのパーティションを設定

/dev/sda1 がUSBメモリだった場合、fdisk でパーティションを再設定します。
sudo fdisk /dev/sda1

fdisk 実行中にコマンドを問われるので、以下のように進めます。

  • (1) パーティションを削除
    Command (m for help): d

    (2) パーティションを追加
    Command (m for help): n

    (3) パーティション情報を表示
    Select (default p): p

    (4) 1番目を選択
    Partition number (1-4, default 1): 1

    (5) 表示された情報でよければ、パーティション情報を書き込んで終了
    Command (m for help): w
    ※パーティションを設定しないで終了する場合は q を入力して終了


USBメモリをフォーマット

Linux上でファイルの読み書きが早いと言われる ext4 でフォーマットしてみます。
(Windowsでは認識しなくなります、ご了承ください。)
sudo mkfs.ext4 /dev/sda1


マウント先を変更

(1) Raspberry Pi に新しいディレクトリ /media/usb0 を作成
sudo mkdir /media/usb0

mkdir … ディレクトリを作成するコマンド。make directory の略。


(2) USBメモリのマウント先を /media/usb0 に変更
sudo mount /dev/sda1 /media/usb0


(3) ファイルシステムのディスク容量を確認
df

[参考例]
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        3743376 3461876     71632  98% /
devtmpfs          469708       0    469708   0% /dev
tmpfs             474028       0    474028   0% /dev/shm
tmpfs             474028    6412    467616   2% /run
tmpfs               5120       4      5116   1% /run/lock
tmpfs             474028       0    474028   0% /sys/fs/cgroup
/dev/mmcblk0p1     61384   20312     41072  34% /boot
tmpfs              94808       0     94808   0% /run/user/1000
/dev/sda1       30280032      16  30280016   1% /media/usb0

ここで /dev/sda1 のマウント先が /media/usb0 になっていればOKです。


Raspberry Pi の起動時にUSBメモリを自動マウント

(1) USBメモリの UUID を確認
sudo blkid /dev/sda1

blkid … ブロックデバイスに関する情報を表示するコマンド。

[参考例]
/dev/sda1: UUID="dc69fc31-4a50-44e2-a3f7-f5648fea6f8d" TYPE="ext4" PARTUUID="386954cf-01"
※ここで表示される UUID を後で使います。


(2) /etc ディレクトリに移動
cd /etc


(3) fstab のバックアップをとる
sudo cp fstab fstab_backup2
※RAMディスクを設定する時に一度バックアップをとっているはずなので、ファイル名が重複しないようにします。
ls コマンドでファイル名の一覧を確認できますので、重複しないように一応確認しておいて下さい。


(4) fstab に追記
sudo nano fstab

[編集前(一部抜粋)]
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

[編集後(一部抜粋)]
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
#/dev/sda1       /media/usb0     ext4    defaults,noatime  0       0
UUID=dc69fc31-4a50-44e2-a3f7-f5648fea6f8d /media/usb0     ext4    defaults,noatime  0       0
/dev/sda1 で指定してもいいのですが、環境やUSBメモリを挿す順番で変わる場合があります。
※より確実に指定するために UUID で設定します。

Ctrl + O で上書き、Ctrl + Xnano を終了します。


(5) Raspberry Pi を再起動
sudo reboot


(6) df コマンドでマウント先を確認
df

[参考例]
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        3743376 3461876     71632  98% /
devtmpfs          469708       0    469708   0% /dev
tmpfs             474028       0    474028   0% /dev/shm
tmpfs             474028    6412    467616   2% /run
tmpfs               5120       4      5116   1% /run/lock
tmpfs             474028       0    474028   0% /sys/fs/cgroup
/dev/mmcblk0p1     61384   20312     41072  34% /boot
tmpfs              94808       0     94808   0% /run/user/1000
/dev/sda1       30280032      16  30280016   1% /media/usb0

マウント先が /media/usb0 になっていればOKです。


Raspberry Pi からUSBメモリを取り外す場合

Raspberry Pi からUSBメモリを取り外す場合、アンマウントする必要があります。
アンマウントせずにいきなり取り外すと、ファイルシステムが壊れてデータの読み書きができなくなる可能性があります。

(1) USBメモリをアンマウントします。
sudo umount /media/usb0

(2) Raspberry Pi からUSBを取り外しできます。


各種・設定方法

【準備】 Raspberry Pi 2 を用意してみよう
(1) Raspberry Pi 2 の OS をインストールする
(2) IPアドレスを設定
(3) システム時刻を日本に設定
(4) RAMディスクを使って、micro SDを長寿命化
(5) Raspberry Pi にUSBメモリをマウント
(6) ファイアウォールを設定
(7) samba を導入して、共有フォルダを作る



カテゴリー:Raspberry Pi | タグ:
コメント(0)トラックバック (0) | 2016年04月01日 (金)19時09分