*

博多んもんの徒然草

よもやま話 「ラズベリーパイ」
 

ラズベリーパイで自宅サーバ 2014.7.8

ラズベリーパイという超小型・廉価のLinuxボードコンピュータがあるのを知ったのはごく最近のことである。 いままでノートPCで自宅サーバを立てていたが、可動部分(HDD、冷却ファン)があるので定期的に メンテナンスが必要で費用もバカにならなかった。 ノートPCなので電力消費はデスクトップに比べると少ないが それでも24時間運転しているので、それなりの電気代がかかってしまうし、故障すると買い換えになってしまう。

このサーバは24時間運転で4年間稼働、HDDを一度交換したが、 最近では冷却ファンの音が激しくなってきた。 そろそろ危ないと感じ、可動部分がない省エネサーバを作りたいと思っていたのだが、ある技術系の雑誌で超小型・安価なラズベリーパイがあることを知り、 早速これで自宅サーバを構築してみることにしたのである。

自分はシステム開発をしていたが、基本的にWindows使いでLinuxをいじった経験はない。 しかし若いときはCUIベースのMS−DOSなるOSを使っていたのでコマンドラインでの操作にはあまり抵抗がない。 だがLinuxのコマンドとかほとんどわからなかったので、 色々なHPを参考にして7月からようやく自宅サーバを運用することができるようになった。 写真は24時間運用に耐えるよう、小型の冷却ファンを取り付けた運用中のWEBサーバである。

ここでは色々な先輩諸氏のサイトから集めた構築の情報を整理して必要な作業を忘れないようにまとめて書いておく。 しかしコンピュータに関する知識が浅い人たちには、ラズベリーパイは少しハードルが高いかも知れない。

まとめた内容は以下のとおりである。
1.Raspberry Pi ハードウェア
2.Raspbianなどソフトの準備
3.インストール作業
4.システムのセットアップ
5.サーバー関連のソフトのインストール
6.phpmyadminの設定
7.メールソフトのインストール
8.SDカードの延命策(RAMディスクの設定)
9.SSH接続の制限
10.自動アドレス通知の仕組みを作る
11.容量の大きなSDカードから小さなカードにまるごとコピー
12.USBメモリを使う

1.Raspberry Pi ハードウェア

ラズベリーパイ本体はアマゾンでケース付を5950円で購入した。 SDカードは16GB class10 を同じくアマゾンで2枚購入した。 一枚はバックアップ用の予備として使用する。。 価格は1枚1060円くらいだったと思う。 電源は有り合わせのスマホ用のUSB充電器を使用している。 容量が1A以上あるものならなんでも使用できそうである。

2.Raspbianなどソフトの準備

ラズベリーパイのOSはLinux(Raspbian)で↓からダウンロードする。
http://www.raspberrypi.org/downloads

SDカードにイメージを書き込むツールはWin32DiskImagerで、↓から。
http://sourceforge.net/projects/win32diskimager/

HDMIでディスプレイをつなぎ、キーボード・マウスも最初から接続できれば必要ないが、 リモートで作業する場合にはIPアドレスのスキャンツールが必要だ。
http://www.forest.impress.co.jp/library/software/netenum/

SSHとSFTPのツールであるPUttyとWinSCPもダウンロードしておく。ダウンロードサイトは検索してもらいたい。

3.インストール作業

SDカードにRaspbianを導入する。 ダウンロードしたファイルは圧縮してあり、解凍すると***.imgができるので、 このファイルをWin32DiskImagerでSDカードに書く。 (ただしNOOBSの場合はやり方が異なるので注意が必要だ。) Raspberry PiにSDカードを挿入して、LANをつなげた状態で起動する。 IPアドレスは最初DHCPから自動取得する設定になっているので、 調査ツールでIPアドレスを調べ、PuttyでSSHログインする。
USER:pi
PASS:raspberry
でログインできる。ログインできなければ何かが間違っているので調べてほしい。

4.システムのセットアップ

無事にログインすると、最初だけ設定画面(raspi-config)が起動する。

1.Expand Filesystemを選んで、使用するSDカード限度まで領域を広げる。処理が終わると リブートしますか?と聞いてくるが、とりあえずNOと押す。yesを押したときはログインしたのち、 手動で sudo raspi-config と入力し設定画面を立ち上げる。

2.Change User Passwordを選択し、piのパスワードを変える。
また sudo passwd root とタイプして、rootのパスワードも設定しておく。

更にIPをDHCPからstaticに変更する。使用するエディタはnanoが使いやすかったので
nano /etc/network/interfaces として下記のように変更する。
----------

auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp を auto lo iface lo inet loopback #iface eth0 inet dhcp #allow-hotplug wlan0 #iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface default inet dhcp iface eth0 inet static address 192.168.0.10 netmask 255.255.255.0 gateway 192.168.0.1 これに無線LANが使えるように下記を追加しておく。 無線LANのアダプタはBuffaloの製品を使ってみたが、すんなりと動いた。 address,netmask,gatewayは自分の環境に合わせる必要がある。 allow-hotplug wlan0 iface wlan0 inet static metric 0 address 192.168.0.3 netmask 255.255.255.0 gateway 192.168.0.1 #dns-nameservers 192.168.0.1 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 設定ファイルも新たに作る必要がある。SSIDとWEPキーは自分の環境に合わせる。 </etc/wpa_supplicant/wpa_supplicant.conf> # Shared WEP key connection (no WPA, no IEEE 802.1X) using Shared Key # IEEE 802.11 authentication network={ ssid="xxxxxxxxxxxxxxxxx" key_mgmt=NONE wep_key0="xxxxx" wep_tx_keyidx=0 priority=5 auth_alg=SHARED }

ここでrebootすると固定IPアドレスになる。
再起動できたらPUttyでrootログインし、updateしておく。
apt-get update
apt-get upgrade
「参考」
SSHでログインしようとするとパスワード入力になるまですごく時間がかかることがある。 この場合は /etc/resolv.conf にプロバイダのネームサーバアドレスを書いておくと早くなる。 作業を同じプロバイダ環境下でやれば問題は起こらないが、会社でインストールし自宅で続きの作業を する場合など、この状況となって解決にかなり時間を要した。
nameserver 61.122.112.97 のように書く。

5.サーバー関連のソフトのインストール

WEBサーバは定番のApache2を使用することにしてインストールする。

apt-get install mysql-server phpmyadmin
これで、php,mySQL,Apache2をまとめてインストールできる。 途中、[Y/n]ときかれるのでY、次にMySQLのrootパスワードを聞かれるので、同じ物を2回入力 apacheかlighttpdを聞かれるので、apache2を選択する。

暫く待つと、また[YES][NO]と聞いてくるので、これもYES 続けてphpmyadminのパスワードを3回入力で完了である。 URLを入力して
It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.
と出ればApache2は動作している。


6.phpmyadminの設定

phpmyadminは、外部から攻撃を受けやすいので、自宅サーバーの場合ポートをかえたほうがいい。実際に運用してログを見ると確かに攻撃されている。

/etc/apache2/sites-enabledにphpmyadmin.confを作成し中身を

Listen 12000 <virtualhost *:12000> Alias /phpmyadmin /usr/share/phpmyadmin <directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php <ifmodule mod_php5.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/ </ifmodule> </directory> # Authorize for setup <directory /usr/share/phpmyadmin/setup> <ifmodule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /etc/phpmyadmin/htpasswd.setup </ifmodule> Require valid-user </directory> # Disallow web access to directories that don't need it <directory /usr/share/phpmyadmin/libraries> Order Deny,Allow Deny from All </directory> <directory /usr/share/phpmyadmin/setup/lib> Order Deny,Allow Deny from All </directory> </virtualhost> サーバーurl:12000/phpmyadminでphpmyadminが開けばOKだが、開くのに少し時間がかかる。

7.メールソフトのインストール

次にHPの内部からメールを送信するため「sendmail」をインストールするが、これは本格的なメールサーバソフトなので、少し時間がかかる。
 $ apt-get install sendmail
sendmailをインストールするとcronで実行された結果がどんどんrootあてに来るようになるのでcrontabの先頭に
MAILTO=""
と入れておくとよい。
またメール送信するときやたらと時間がかかる場合があるが、こんなときは/ets/hostsを確認して、ドメインが記述されていない場合は
127.0.0.1 raspberrypy を↓のように 127.0.0.1 raspberrypi raspberrypi.localdomain
変更するとうまくいく。
ただ、メールは送信するだけなので、本格的なメールサーバソフトではなく簡易なものでもいいのではないかと思う。
ssmtpで簡単に送信できるという記事も見かけたので、そちらのほうがいいかもしれないが、実験はしていない。
この場合は $apt-get install ssmpt

8.SDカードの延命策(RAMディスクの設定)

SDカードは、データの書き込み回数制限があり、ハードディスクドライブに比べて寿命が短いので、
延命対策としてRAMディスクを使用するように細工する。

RAMディスクでApache関係のファイル作成が終わる前にApache2を起動するとエラーを出して起動
しない。そこでApacheの自動起動をシーケンスから外すことにする。

# update-rc.d -f apache2 remove

そして/etc/rc.localの最終行に下記を記述し、最後に起動するようにする。(後述)

#Apache2の起動 /etc/init.d/apache2 start (1)swapファイルの停止  まず以下のコマンドで現在のswap領域の状態を確認する。  $ swapon -s  Filename          Type     Size    Used   Priority  /var/swap          file     102396   0     -1  とりあえず以下のコマンドで dphys-swapfile を停止する。    $ sudo /etc/init.d/dphys-swapfile stop  Stopping dphys-swapfile swapfile setup ..., done. ※ $ sudo /sbin/dphys-swapfile swapoff (これでも上記と同じ動作をする)  次にdphys-swapfile の使用を中止する。    $ sudo update-rc.d dphys-swapfile disable    中止したことを確認する。    $ swapon -s  Filename          Type     Size    Used   Priority (2)RAMディスクを使用するように設定  次にtmpディレクトリやログファイルの格納先としてRAMディスクを使用するように設定する。  /etc/fstabの最終行に以下のように3行追加し、OS起動時に  /tmpディレクトリ、/var/tmpディレクトリ、/var/logディレクトリは、  RAMディスク上にマウントするように変更している。  $ sudo nano /etc/fstab  ------------------------------  ---途中略---  tmpfs /tmp    tmpfs defaults,size=32m,noatime,mode=1777 0 0  tmpfs /var/tmp  tmpfs defaults,size=16m,noatime,mode=1777 0 0  tmpfs /var/log  tmpfs defaults,size=32m,noatime,mode=0755 0 0  ------------------------------  ここで、一旦再起動する。  再起動が完了したら以下のコマンドでマウント状況を確認してみる。  $ df -h  Filesystem   Size  Used  Avail  Use%  Mounted on  rootfs      7.2G  1.5G  5.5G   21%   /  /dev/root    7.2G  1.5G  5.5G   21%   /  devtmpfs    235M  0   235M    0%   /dev  tmpfs      49M  204K  49M    1%   /run  tmpfs      5.0M  0   5.0M    0%   /run/lock  tmpfs      98M  0   98M    0%   /run/shm  /dev/mmcblk0p1  56M  19M  38M    34%   /boot  tmpfs      32M  0   32M    0%   /tmp  tmpfs      16M  0   16M    0%   /var/tmp  tmpfs      32M  0   32M    0%   /var/log (3)rsyslog設定の変更 rsyslogでは、必要最小限のログ(auth , syslogとmessages)のみを記録させるようにして、 RAMディスク容量を節約する。また、ログを直接吐き出すアプリでは、/var/log配下にサブデ ィレクトリが存在しないと、エラーとなる場合があるので、rc.localファイルで、起動時に 自動的に作成するようしてある。 rsyslog.confの初期状態では、下記のログファイルが作成されている。  $ ls -l /var/log  -rw-r----- 1  root adm  701 3月 2 14:55  auth.log  -rw-r----- 1  root adm  180 3月 2 14:55  daemon.log  -rw-r----- 1  root adm  949 3月 2 14:54  debug  -rw-r--r-- 1  root adm 12155 3月 2 14:54  dmesg  -rw-r----- 1  root adm 17863 3月 2 14:54  kern.log  -rw-r----- 1  root adm   0 3月 2 14:54  lpr.log  -rw-r----- 1  root adm   0 3月 2 14:54  mail.err  -rw-r----- 1  root adm   0 3月 2 14:54  mail.info  -rw-r----- 1  root adm   0 3月 2 14:54  mail.log  -rw-r----- 1  root adm   0 3月 2 14:54  mail.warn  -rw-r----- 1  root adm 17044 3月 2 14:54  messages  drwxr-xr-x 2  root root  100 3月 2 14:54  news  -rw-r----- 1  root adm 18391 3月 2 14:55  syslog  -rw-r----- 1  root adm   0 3月 2 14:54  user.log rsyslogの設定ファイル(rsyslog.conf)を修正して、最小限のログのみを記録するように変更する。  $ sudo nano /etc/rsyslog.conf  -------------------------------  (略)  ###############  #### RULES ####  ###############  #  # First some standard log files. Log by facility.  #  auth,authpriv.*      /var/log/auth.log  *.*;auth,authpriv.none  -/var/log/syslog  # cron.*          /var/log/cron.log  # daemon.*        -/var/log/daemon.log  # kern.*         -/var/log/kern.log  # lpr.*          -/var/log/lpr.log  # mail.*         -/var/log/mail.log  # user.*         -/var/log/user.log  #  # Logging for the mail system. Split it up so that  # it is easy to write scripts to parse these files.  #  # mail.info      -/var/log/mail.info  # mail.warn      -/var/log/mail.warn  # mail.err       /var/log/mail.err  #  # Logging for INN news system.  #  # news.crit      /var/log/news/news.crit  # news.err       /var/log/news/news.err  # news.notice    -/var/log/news/news.notice  #  # Some "catch-all" log files.  #  # *.=debug;\  #    auth,authpriv.none;\  #    news.none;mail.none    -/var/log/debug  *.=info;*.=notice;*.=warn;\     auth,authpriv.none;\     cron,daemon.none;\     mail,news.none        -/var/log/messages  #  # Emergencies are sent to everybody logged in.  #  *.emerg              :omusrmsg:*  #  # I like to have messages displayed on the console, but only on a virtual  # console I usually leave idle.  #  #daemon,mail.*;\  #    news.=crit;news.=err;news.=notice;\  #    *.=debug;*.=info;\  #    *.=notice;*.=warn    /dev/tty8  # The named pipe /dev/xconsole is for the `xconsole' utility. To use it,  # you must invoke `xconsole' with the `-file' option:  #  #  $ xconsole -file /dev/xconsole [...]  #  # NOTE: adjust the list below, or you'll go crazy if you have a reasonably  #   busy site..  #  daemon.*;mail.*;\      news.err;\      *.=debug;*.=info;\      *.=notice;*.=warn     |/dev/xconsole  -------------------------------   ログを直接吐き出すプログラムでは、ディレクトリが無いとエラーとなる場合があるので、 rc.localに追記し、OS起動時、自動でディレクトリを作成するようにしている。 # sudo nano /etc/rc.local  -------------------------------  #!/bin/sh -e  #  # rc.local  #  # This script is executed at the end of each multiuser runlevel.  # Make sure that the script will "exit 0" on success or any other  # value on error.  #  # In order to enable or disable this script just change the execution  # bits.  #  # By default this script does nothing.  # Print the IP address  _IP=$(hostname -I) || true  if [ "$_IP" ]; then   printf "My IP address is %s\n" "$_IP"  fi  # 起動時、自動的にディレクトリを作成  mkdir -p /var/log/ConsoleKit  mkdir -p /var/log/samba  mkdir -p /var/log/fsck  mkdir -p /var/log/apt  mkdir -p /var/log/ntpstats    # 自動IPアドレス通知のログ関係作成  mkdir -p /var/cron.every5min  touch /var/log/every5min/mydns.log  chmod 755 /var/log/every5min/mydns.log     # Apache2用のログディレクトリ  mkdir -p /var/log/apache2    chown root.ntp /var/log/ntpstats  chown root.adm /var/log/samba  # 起動時、自動的にLastlogとwtmp,btmpファイルの空ファイルを作成  touch /var/log/lastlog  touch /var/log/wtmp  touch /var/log/btmp  chown root.utmp /var/log/lastlog  chown root.utmp /var/log/wtmp  chown root.utmp /var/log/btmp # Apache2の起動 # 事前にupdate-rc.d -f apache2 removeを実行すること /etc/init.d/apache2 start  exit 0  ------------------------------- ここで、一旦、OSを再起動させて、/var/logを確認します。 # ls -l /var/log/  drwxr-xr-x 2  root root   40 Sep 25 21:53 apt  -rw-r----- 1  root adm   278 Sep 25 21:54 auth.log  -rw-r--r-- 1  root utmp    0 Sep 25 21:53 btmp  drwxr-xr-x 2  root root   60 Sep 25 21:54 ConsoleKit  -rw-r--r-- 1  root adm  11619 Sep 25 21:53 dmesg  drwxr-xr-x 2  root root   40 Sep 25 21:53 fsck  -rw-r--r-- 1  root utmp 292292 Sep 25 21:54 lastlog  -rw-r----- 1  root adm  17553 Sep 25 21:53 messages  drwxr-xr-x 2  root ntp    40 Sep 25 21:53 ntpstats  drwxr-xr-x 2  root adm    40 Sep 25 21:53 samba  -rw-r----- 1  root adm  20273 Sep 25 21:54 syslog  -rw-r----- 1  root adm    0 Sep 25 21:53 vsftpd.log  -rw-r--r-- 1  root utmp  6912 Sep 25 21:54 wtmp このままだと外部からHPにアクセスするとどんどんログがたまり最後には一杯になる。 そこでcrondにより一日に一回システムをリブートさせるようにした。 これで溜まったログはクリアされる。 # crontab -e nanoでcrontabファイルの編集ができる。 最後の行に下記を追加する。ここでは午前2時に再起動がかかるようにした。 0 2 * * * /sbin/reboot

9.SSH接続の制限

SSH接続は外部から破られるとコンピュータを乗っ取られるので、 ローカルLANまたは指定IPからの接続のみを許可するように、アクセス制限を行うことにした。 最初に、/etc/hosts.denyファイルを修正する。 ---------- # /etc/hosts.deny: list of hosts that are _not_ allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: some.host.name, .some.domain # ALL EXCEPT in.fingerd: other.host.name, .other.domain # # If you're going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8) # for further information. # # The PARANOID wildcard matches any host whose name does not match its # address. # # You may wish to enable this to ensure any programs that don't # validate looked up hostnames still leave understandable logs. In past # versions of Debian this has been the default. # ALL: PARANOID # # アクセス制限を追加(すべてのアクセスを拒否) sshd: ALL ---------- /etc/hosts.allowファイルを修正する。 ---------- # /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: LOCAL @some_netgroup # ALL: .foobar.edu EXCEPT terminalserver.foobar.edu # # If you're going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8) # for further information. # # アクセス制限を追加 # ローカルLANからのアクセスのみを許可 # 必要なら外部の指定IPも書いておく。 sshd: 192.168.11.0/24 127.0.0.0/8 ----------

10.自動アドレス通知の仕組みを作る

家庭のインターネット回線ではプロバイダにログインしたときにIPが割り振られるので それをダイナミックDNSサーバに通知して登録しないと外部からアクセスできない。 自分の場合はMydnsを利用しているのでこれを前提に書いておく。 ここではLinuxのスケジュール実行機能crondを利用する。 設定は最初面食らうが仕組みがわかれば、そんなに難しいものではない(当たり前?)。

1.5分毎に実行するスクリプト用のディレクトリを作る 2.cron設定ファイルにこのディレクトリを追加設定 3.MyDNS.JP用のIPアドレス通知スクリプトを作る 4.crondに設定を再読み込みさせる 1.まず5分毎に実行するスクリプト用のディレクトリを作る $ cd /etc $ mkdir cron.every5min 2.続いてcron設定ファイルにこのディレクトリを追加設定 /etc/crontabに下記1行追加 $ crontab -e -- # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command */5 * * * * /etc/cron.every5min/mydns ←これを追加 17 * * * * cd / && run-parts --report /etc/cron.hourly 25 6 * * * test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) -- 3.MyDNS.JP用のIPアドレス通知スクリプトを作る /etc/cron.every5min/mydns ←新しく作るのだ $sudo nano /etc/cron.every5min/mydns -- #!/bin/sh # # 1xxx.MYDNS.JP OLDMASK=`umask` umask 177 /usr/bin/wget -O - 'http://mydnsxxxx:パスワード@www.mydns.jp/login.html' > /var/mydns.log 2>&1 # ↑ログの位置はRAMディスクに変更してある。 umask $OLDMASK  -- 4.実行属性をつけて、cronに設定を再読み込みさせる $ chdir /etc/cron.every5min/ $ chmod 710 mydns $ /etc/init.d/cron reload わざわざ実行スクリプトを作らなくても、crontabに直接書いても良いと思う。

11.容量の大きなSDカードから小さなカードにまるごとコピー

SDカードは書き込み回数が限られているため、対策をしているとはいえ、いつクラッシュするかわからない。 最初からOSをインストールするのはとても大変なので、現用のSDイメージを「Win32DiskImager」で バックアップしている。自分は16GBのSDカードを使用しているが、同じ16GBでもメーカが違ったりすると 微妙に容量が異なることがあり、大きな容量のバックアップから僅かでも小さな容量のSDには コピーできない。

そこで「Gparted」というフリーのパーティション編集ツールを使ってコピーする。 もちろんコピー元のSDカードでコピー先のSDカードの容量を超えて使用しているとコピーはできない。 作業はすべてWindowsパソコン上で行うが、 SDカードのリード/ライトできるUSBアダプタなど2つ(ソース、ディスティネーション)必要だ。
http://gparted.sourceforge.net/downl-oad.php
↑ここからGparted live CDのisoファイルをダウンロードしてISOイメージをCDに書き込む。 GpartedをCDにセットしてパソコンを起動すると、Linuxが起動して質問に答えるとGpartedが起動する。

コピー元になる16GB(大きな容量の方)をUSBへ差し込む。
デバイスの更新ボタンを押すとデバイス選択ができ、このSDカードは/dev/sdcと認識された。
  ↓
SDカードのパーティションで縮小するパーティションを選択してResizeボタンを クリックしてパーティションサイズを縮小するように設定する。 この時点ではまだ何も実行ないが、正しければ適用(Apply)を選択して実際に縮小する。 ※縮小後にコピー先のSDカードに収まるサイズに設定しなければならない。
  ↓
コピー先になる16GB(小さな容量の方)をUSBへ差し込みます。 デバイスの更新ボタンを押すとデバイス選択ができ、このSDカードは/dev/sdeと認識された。 何かパーティションがあればあらかじめすべて削除しておく。
  ↓
コピー元のsddのパーティションを選択してコピーボタンをクリックする。
コピー先で貼り付け(Paste)を選択します。開始は、コピー元と同じく設定する。
次に Apply を実行すると内容がコピーされる。
パーティションが大きいとかなり時間がかかるので気長に待つ。

同様に、2つ目3つ目のパーティションもコピーしていく。

終了したら、shutdownしてSDカードを取り出せばコピーされているはずだ。 うまくいかない場合はパーティションの構成あたりを注意深く観察して正確に実施する。 自分も最初はうまくいかなかったが、やり方が合っていれば必ずうまくいくので、あきらめないでトライしてもらいたい。

12.USBメモリを使う

ラズベリーパイにUSBメモリを差し込んで使えるようにしておく便利と思われる。 USBメモリを差してまず認識しているかどうかの確認をしてみる。 /var/log/messagesをチェック # tail /var/log/messages −途中略− Sep 11 12:03:37 raspberrypi kernel: [ 202.587719] sda: Sep 11 12:03:37 raspberrypi kernel: [ 202.594350] sd 0:0:0:0: [sda] Attached SCSI ... /dev/sdaで認識していると思われる。 マウントしてみる。 # sudo mkdir /mnt/usbmem # sudo mount -t vfat /dev/sda /mnt/usbmem エラーメッセージが出なければ成功している。参照するときは/mnt/usbmemを見れば良い。 NTFSでフォーマットされたUSBメモリを使う場合は別にモジュールが必要である。 # sudo apt-get install ntfs-3g # sudo reboot マウントポイントは上と同じく/mnt/usbmemという名前にする。 # sudo mount -t ntfs-3g /dev/sda1 /mnt/usbmem これで、USBフラッシュメモリが準備できた。 ただこの状態ではRaspberry Piを再起動のたびに手動でマウントする必要があり面倒だ。 再起動時に自動でマウントするようにするには、/etc/fstabに登録をしておくとよい。 # sudo nano /etc/fstab でファイルを開き、以下の行を追加。 /dev/sda1 /mnt/usbmem ntfs-3g defaults 0 0 これで起動時に自動的にマウントされる。

13.その他参考情報

「参考」 USBメモリのマウント、漢字が化けるとき # mount -t vfat /dev/sda1 /mnt/usbmem -o codepage=932,iocharset=utf8 アンマウント # umount -l /dev/sda1 HPデータをバックアップから戻したときは下記コマンドでオーナと # chown -R www-data /var/www アクセス権を変更すること # chmod -R 757 /var/www 「バックアップツール」 ラズベリーパイの一部データファイルだけをバックアップしたいときは 「Diskinternals Linux Reader」というソフトが役に立つ。 下記アドレスからダウンロードできる。 Access to Ext2/Ext3 from Windows XP http://www.diskinternals.com/linux-reader/ ↓ここに使い方なんかが書いてあるので参考にしていただきたい。 http://gigazine.net/news/20071218_diskinternals_linux_reader/ 先頭に戻る
HPトップに戻る
以前の自宅サーバ記事を見る