2012年9月21日金曜日

An Instllation of Raspberry Pi
Raspberry Pi インストール

I updated this installation manual.
Target image :  archlinux-hf-2012-09-18.img

最新版のインストールマニュアル(archlinux-hf-2013-07-22.img)は下記からどうぞ!
JAPANESE
ENGLISH    (12 Jan, 2013)

-----------------------------------------------------------------------------------------------------
OLD MANUAL

In my case, I use a Raspberry Pi as a robot controller. Therefore, there are some difference between my installation and common installation. For example, I don't install  a window system like 'gnome'. and games,,,

wifiのfirmwareや、Arch Linuxでのパーティション設定を含めて記述しています。
Raspberry Pi のホームページからダウンロードできるOSイメージをインストールすると8GBのSDカードでも、2GBの初期設定がされてしまいます。推奨のRaspbian “wheezy”であれば、初期化作業の時に拡張できますが、Arch Linuxでは自分でする必要があります。私は、Ubuntuで、Gpartedを使いました。
私は、32GBのカードを使っています。SDカードの相性があるので、Raspberry Piのホームページで確認したほうが良いです。
あと、pacmanを使って、glibc関連のエラー(glibc error)が出たときの対処のリンク(link)もあります。私は、この対応で半日つぶしました。

step of installation (for beginner )
1. Prepare SD-card,,,,
2. Install Arch Linux Arm
3. Environment setting
4. Back up setting
5. Add development software and tools

/****************************************************************************/
/* 1.  Preparation                                    */
/***************************************************************************/
1. 準備すること
(1) 相性の良い、SDカードを準備する。
いろいろな不具合を事前に回避するためにも重要。
SanDiskは、おおむね大丈夫のようです。
私の場合は、SILICON POWERで良くエラーが発生しました。
(2) セルフパワーのUSBハブ
RaspberryPiからの、USB電源供給は最小限に抑える。
USBからの供給が、多くなると不安定になる可能性があり、それを防ぐ。
(3) OSを選定する
一般的には、R-Pi推奨のOSを使うほうが良い。
ロボットの開発には、シンプルなArchLinuxArmを導入して、
必要な機能のみをインストールするほうが良い。
(4) ターミナル/ファイルコピーソフト
SSH接続で、他のマシンから操作できる環境を作る必要がある。
たとへば、バックアップなどに使う
Windows: ”Tera term”, “winSCP” 
Ubuntu   : FillZilla

/****************************************************************************/
/* 2.1 RaspberryPi OS用 SDカード作成 (Windows)  */
/****************************************************************************/
(1) カーネルイメージ作成
利用するOSのカーネルイメージをwww.raspberrypi.orgよりdownloadし、解凍する
(2) SDカードへの書き込み
win32diskimager-binaryを使って、SDカードに起動イメージを作成する。
(3) 後処理
Windows上の作業用ファイルを削除する


/****************************************************************************/
/* 2.2 SDカード2GB以上領域の確保 (Gpated on Ubuntu)    */
/****************************************************************************/
RaspberryPIのインストールイメージは、2GBの割当てを行う。30GBのSDカードを使った場合には、残り約30GBが、未使用の状態になる。その約30GBを使う為の処理

私は、普段Windowシステムをつかいません。
お使いの方は、(2)だけを実行してください。
It's need to install a gparted using ubuntu software center.

(1) How to change Ubuntu window system.
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT='text"
Using window system change as above "text" to "quiet splash" or blank.
sudo update-grub
sudo start gdm

(2) Gparted (allocate partition and format)
ex.) 32GB SD-card
swap   500MB    
/tmp     2GB
/home  10GB
/data    other
/tmp, /home, /data -> ext3 format

(3) Change CUI Mode.

/****************************************************************************/
/* 2.3   First time system upgrade                                     */
/***************************************************************************/
よほどの問題がない限り、SDカードをR-PIに差込み、電源をいれれば立ち上がる。
起動したOSは、古いので最新版にupgradeする必要がある。OSや、アプリケーションの管理をするソフトが、pacman である。

(1) 起動して、systemのアップグレードを実行する。
pacman -Sy
pacman -S pacman     最初に、Pacmanをアップグレードする。
                                     大きくシステムソフトが変わった場合には、pacmanが
                                     依存するソフトの更新が先になる。
                                     glibcエラーが発生した場合には、下記リンクを確認
                                     http://archlinuxarm.org/forum/viewtopic.php?t=3775&p=21205
pacman-key --init  
この後は、OSのプロンプトが現れるまで、キーボードからランダムに文字を入力し続ける。なかなか、プロンプトがでてこないので、根気よく続ける。
(2) pacman -Su
pacmanを更新した直後のupgradeは、数十個のソフトのupgradeが行われるので、かなり時間がかかる。SDカードとの相性が悪いと、この段階で、インストールできないなどのエラーで途中終了する。
(3) reboot
reboot後に再度、pacman -Suをしてみて、Upgradeしなければならないソフトがないか?再度確認する。
(4) pacman -S lshw
ArchLinuxは、最小限のドライバーなどしかないので、接続する機器がつながっているのか?確認する為のソフト。
(5) 接続しているHardwareの確認
lsusb, lshwなどで、無線ドングルの確認をする。
lsusb
USB接続している装置が認識されているか確認をする。接続しているのに、表示されない場合には、ハード的なトラブルを疑った方がよい。他のOSで確認する。
lshw
OSにどのように、認識されているのか?確認できる。この情報を元に、driver/firmwareが認識されていない場合には、その対処をする。
この説明では、OSインストール時に、USBをつないでいるが、一通りの環境設定が終ってから、USB接続機器の確認や設定を行っても良い。

/****************************************************************************/
/* 3.1 Wifi設定                                                                     */
/****************************************************************************/
本来は、netcfgなどの機能を使って行う。R-Pi購入初期の時に、数回試したがうまくいかなかったので、現在もこの方法で実施している。いつか、時間があるときに、netcfgに変更する。
与件として、IPアドレスを自動的に割振るDHCPが動いているサーバに接続することを前提にしています。
(1) 関連ソフトの入手
pacman -S wpa_supplicant wireless_tools
(2) wifiの暗号通信の為の設定ファイル作成
/etc/wpa_supplicant/wpa_supplicant.confを編集する。
下の例は、家とモバイルルータの設定をしている。priorityで同じ環境にあった場合の優先順位を決めている。その他は、ひょじゅんてきなWPAPA2-PSKの設定方法であり、ssidとpskの部分を変更すれば、そのまま使える。2つ記述してあるのは、自宅用と、Pockect Wifi用です。
Ppriorityの値で、自宅を優先にしています。

# ----- add my block 19/08/2012 ----------
network={
ssid="環境のESSID"
proto=RSN
priority=1
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="環境で決められているKEY"
}

network={
ssid="環境のESSID"
proto=RSN
priority=10
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="環境で決められているKEY"
}

(3) /etc/rc.d に自動起動のためのシェル(nao)を作る。chmod +x naoを忘れずに
#!/bin/bash
/sbin/ifconfig wlan0 up
/usr/sbin/wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
/usr/sbin/dhcpcd wlan0
(4) /etc/rc.confのDAEMONSに、networkの後に追加
DAEMONS=(!hwclock syslog-ng network nao openntpd @netfs @crond @sshd)

(5) ファームウェアの設定
ドライバー以外にも、firmwareが必要。現在のLinuxでは、多くのインストール済みがあるが、ない場合、もしくは最新版をインストールする場合に、この処理が必要になる。
lshwで、firmware=N/Aになっている装置があれば、その対応が必要。
メーカからダウンロードして、/lib/firmwareに、所定のfiramwareを置く。
例)
rx2870.binなど

/****************************************************************************/
/* 3.2 ディスクの拡張                                                            */
/****************************************************************************/
2.2で、SDカードには、フォーマットされた領域が確保されている。その領域を実際に使う為の処理である。swapと、通常利用のdisk領域の2つを処理する。
(1) 現在のSDカードの情報確認
SDカードなので、/dev/mmcblk0xxと領域が複数表れる。マウントするdirectoryとdeviceの対応を決める。

#fdisk /dev/mmcblk0
Welcome to fdisk (util-linux 2.21.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/mmcblk0: 16.4 GB, 16437477376 bytes
4 heads, 16 sectors/track, 501632 cylinders, total 32104448 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
Disk identifier: 0x000c21e5

Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048      194559       96256    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          194560     3862527     1833984   83  Linux
/dev/mmcblk0p3         3862528     5910527     1024000   82  Linux swap / Solaris
/dev/mmcblk0p4         5910528    32104447    13096960    5  Extended
/dev/mmcblk0p5         5911920    10008494     2048287+  83  Linux
/dev/mmcblk0p6        10008558    32097869    11044656   83  Linux

(2) swapの作成とマウント
/sbin/mkswap /dev/mmcblk0p3
/sbin/mkswap -L swap /dev/mmcblk0p3
/sbin/swapon -L swap
cat /proc/swaps

(3)vi /etc/rc.local に次の行を加える。
           /sbin/swapon -L swap

(4) /etc/fstab の修正
vi /etc/fstab 下記のswap, /tmp, /homeを付け加える
#
# /etc/fstab: static file system information
#
# <file system>    <dir>      <type>    <options>   <dump> <pass>
devpts             /dev/pts   devpts    defaults       0      0
shm                /dev/shm   tmpfs     nodev,nosuid   0      0
/dev/mmcblk0p1     /boot      vfat      defaults       0      0
/dev/mmcblk0p5     /tmp       ext3      defaults       0      0
/dev/mmcblk0p6     /home      ext3      defaults       0      0
/dev/mmcblk0p7     /data      ext3      defaults       0      0
LABEL=swap1        swap       swap      defaults       0      0

これで、rebootしても、大丈夫

/****************************************************************************/
/* 3.3 ユーザ登録                                                                  */
/****************************************************************************/
これまでの作業は、rootで行ってきたが、システムに対して危険なのでsudoを導入する。
(1) pacman -S sudo
(2) adduserで、ユーザを登録。グループは、wheel、uucpを指定。
Login name.......:  nao
UID..............:  100
Initial group....:  wheel
Additional groups:  uucp
Home directory...:  /home/nao
Shell............:  /bin/bash
Expiry date......:  [ Never ]

(3) visudoで、上記ユーザがいちいちパスワードを入力しないように変更
pacman -S sudo
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL

/*******************************************************************************/
/* 4.1 Back Up                                                                        */
/*******************************************************************************/

I use a Macmini (1.5GHz, i5, 8GB) as a server.
I do backup data from Raspberry Pi to server(Mac) on a daily basis.
very easy way.

(1) generate RAS key (Macmini)
ssh-keygen

(2) copy RAS key  to Raspberry Pi
copy  ~/.ssh/id_rsa.pub (Macmini) to  /LOGIN USER HOME/.ssh/authorized_keys (Raspberry Pi).

(3) make backup shells (Macmini, Raspberry Pi)


ex)
Macmini
#!/bin/bash
ssh nao@192.168.11.xxx /home/nao/bin/mk_tar.sh
scp nao@192.168.11.xxx:/tmp/r-*.tar  /Users/nao/q/Rapi

Raspberry Pi
mk_tar.sh

#!/bin/bash
tar cvf /tmp/r-pi01.tar /home/nao/rcs > /dev/null

/****************************************************************************/
/* 5.1 Additional Software                                                   */
 /*          developing tools for robots only.                           */
/****************************************************************************/
pacman -S gcc
pacman -S makecmake
pacman -S pkg-config

pacman -S libusb
pacman -S openCV

openNI  (driver, openNI, Nite)
PCL
openKinect

pacman -S nginx

pacman -S fswabcam

pacman -S ttf-bitstream-vera ttf-dejavu

Peace!

0 件のコメント:

コメントを投稿