HCL:Raspberry Pi

移動先: 案内, 検索
Raspberry Pi

Raspberry Pi (RPi/RPI) は、ディスプレイとキーボードを接続することのできるクレジットカードサイズのコンピュータです。デスクトップ PC で行なっているような作業のほとんど、たとえば表計算やワードプロセッサ、ゲームなどを、この小型 PC でも行なうことができます。また、高精細なビデオを再生することもできます。

技術データ

  • 低消費電力型 ARM1176JZ-F アプリケーションプロセッサ (ARMv6)
  • デュアルコア型 VideoCore IV® (マルチメディア・コプロセッサ)
  • 1080p30 Full HD HP H.264 ビデオエンコード/デコード
  • 最大で毎秒 220 メガピクセルを処理することのできる、最大 20 メガピクセルのカメラに対応した高度なイメージセンサーパイプライン (ISP)
  • 低消費電力で高性能な OpenGL-ES® 1.1/2.0 ビデオコア GPU (フィルレート: 毎秒 1 ギガピクセル)
  • 高性能なディスプレイ出力 (高解像度の LCD と HDCP 付きの HDMI (1080p60) に同時出力可能)

さらなる技術情報 (テストと設定など) については、 openSUSE:Raspberry_Pi をお読みください。

また、セットアップやハードウエアの互換性確保などの際には、 E-Linux Org PI HUB (http://elinux.org/RPi_Hub) をご用意いただくとよいでしょう。


openSUSE 13.1 イメージのインストール

  1. http://download.opensuse.org/repositories/devel:/ARM:/13.1:/Contrib:/RaspberryPi/images/ から最新のイメージをダウンロードします。
  2. 最小限のパッケージ (JeOS) のみをインストールしたシステムは、 openSUSE-13.1-ARM-JeOS-raspberrypi-*.raw.xz というファイル名になっています。
  3. root ユーザになっている状態から、イメージを SD メモリカードに書き込みます ( sdX はお使いの環境に合わせて変更してください) 。 警告 SD メモリカード内にある全てのデータが上書きされます。
 xzcat [ファイル名].raw.xz | dd bs=4M of=/dev/sdX; sync

初回の起動とログイン

  1. openSUSE のイメージを書き込んだ SD メモリカードを Raspberry Pi に挿入します。
  2. DVI または HDMI で Raspberry Pi をモニタに接続します。
  3. Raspberry Pi の電源を接続します。
  4. 初回の起動時の作業を行なうため、 YaST2 のモジュールが自動で起動します (サイズ変更と初回設定 (ユーザとパスワードなど) を行ないます) 。
  5. 必要なソフトウエアをインストールします。
  6. 以上で作業は終わりです。

OSS イメージについて、さらに詳しくは #既知の問題 をご覧ください。

openSUSE 13.2 イメージのインストール

  1. http://download.opensuse.org/repositories/devel:/ARM:/13.2:/Contrib:/RaspberryPi/images/ から最新のイメージをダウンロードします。
  2. 最小限のパッケージ (JeOS) のみをインストールしたシステムは、 openSUSE-13.2-ARM-JeOS-raspberrypi-*.raw.xz というファイル名になっています。
  3. root ユーザになっている状態から、イメージを SD メモリカードに書き込みます ( sdX はお使いの環境に合わせて変更してください) 。 警告 SD メモリカード内にある全てのデータが上書きされます。
 xzcat [ファイル名].raw.xz | dd bs=4M of=/dev/sdX; sync

初回の起動とログイン

SD メモリカードは GPT (GUID パーティションテーブル) でフォーマットされています。 SD メモリカードから始めて起動した段階で、下記の 4 つのパーティションが作成された状態になります:

  1. 小さな FAT パーティション
  2. 小さな EXT3 パーティション
  3. 巨大な EXT4 パーティション (上記 2 つ以外のファイル全てが保存されます)
  4. スワップパーティション

モニタとキーボードを接続している環境の場合は、 13.1 と同様の手順で設定が完了します。

13.1 で既知の問題

  • initrd が使用されず、そのためにパーティションのサイズ変更も行なわれません。 YaST2 パーティション設定ユーティリティ (またはその他のパーティション設定ツール) を利用することで、 EXT パーティション (2 つめのパーティション) を拡張することができます。

13.2 で既知の問題

  • SD メモリカードのパーティションの再設定は、 13.1 と異なることに注意してください。
  • 3 種類設定されているソフトウエアリポジトリのうち、 1 つだけが誤った設定になっています。 repo-oss と repo-update については問題なく動作します。

13.1 と 13.2 で既知の問題

  • RPi にディスプレイを接続しない場合は、 SD メモリカード内の EXT4 パーティション内にある /var/lib/YaST2/reconfig_system ファイルを削除してください。
  • 古い JeOS イメージでは、 zypper updatezypper dist-upgrade が失敗する場合があります。 zypper updatezypper dist-upgrade の前に zypper ref を実行してください。
  • さらなるヘルプは #トラブルシューティング をお読みください。

その他

Raspberry PI での openSUSE システムの設定

ディスプレイを接続せずにシステムを使用する方法

ヘッドレスシステムとはディスプレイとキーボードを接続しないシステムのことを指します。一般にネットワークにのみ接続します。

  1. 上記で提供されているイメージは、いずれもシステムのパラメータを設定する際にディスプレイとキーボードを必要とします。これらを接続せずに起動しようとしても、途中で止まってしまいます。この問題を回避するには、 SD メモリカード内の EXT4 パーティション内にある /var/lib/YaST2/reconfig_system ファイルを削除してください。
  2. ネットワークに接続していれば、自動的に DHCP サーバから IP アドレスを取得する設定になっています。 SSH を利用してユーザ名: root パスワード: linux でログインしてください。
  3. あとは zypper コマンドを利用して、必要なサービスやアプリケーション類をインストールしてください (ソフトウエアリポジトリの設定は既に完了しています) 。
  4. サービスやアプリケーションの設定ファイルを詳しく知らず、 YaST を利用したい場合は、対応する YaST モジュールと ncurses インターフェイスをそれぞれインストールしてシステムを設定してください。

手作業での YaST2 のインストール

# 注意: これらのパッケージを新しい SD メモリカードにインストールするには、おおよそ 150MB 程度の空き容量が必要です。

# YaST2 基本パッケージ:
 zypper install yast2

# YaST2 YOU (オンライン更新) 基本パッケージ:
 zypper install yast2-online-update yast2-online-update-configuration yast2-online-update-frontend ncurses libyui-ncurses libyui-ncurses-pkg4

# YaST2 システム設定パッケージ:
 zypper install  yast2_basis patterns-openSUSE-yast2_basis yast2-inetd yast2-network yast2-storage yast2-sysconfig yast2-trans yast2-sudo yast2-sshd yast2-runlevel yast2-pam

YaST2 .. その他のモジュール
 zypper install yast2-instserver yast2-installation yast2-ldap-client yast2-mail yast2-samba-server yast2-samba-client 

# YaST2 のモジュールでインストールされていないものがありそうな場合は、下記のようにしてインストールしてください ...
zypper search yast2 | egrep -v '(debuginfo|debugsource|devel|Quellpaket)'
zypper install <module>

よりわかりやすい YaST2 のウインドウシステムをお使いになりたい場合は、 X11 パッケージと YaST qt パッケージをインストールしてください:
zypper in yast2-x11 yast2-control-center-qt libui-qt-pkg4
(これにより、必要な周辺パッケージもインストールされます) 。インストール後は、
ssh -X root@<RPi の IP アドレス>
のようにして ssh で接続し、
yast2
と入力することでウインドウを手元に表示させることができます。 警告: YaST のウインドウが画面に表示されるまでに、 60 秒程度かかることに注意してください。
  1. あとは通常通りお使いいただくことができます。

openSuSE の SuSEfirewall2 について

Process-stop.png
警告!
openSUSE イメージには、既定でファイアウオールがインストールされていません!
 ファイアウオールシステムをインストールして YaST2 で管理したい場合は、 YaST2 と iptables の各パッケージをインストールしてください:

 zypper install yast2-firewall iptables SuSEfirewall2

YaST2 を利用した openSUSE RPi SD カードのサイズ変更

ルート (/) ファイルシステムのサイズを拡張したい場合は、下記のように実施します:

マウントされているファイルシステムをそのままサイズ変更することはできませんが、ルートファイルシステムをマウントしない状態では、どのプログラムも動作させることができません。そのため、下記のようにして別のコンピュータで作業を行ないます。

Process-stop.png
警告!
'書き込まれているデータが失われる可能性があります!'
  • SD メモリカード内に失われては困るデータがある場合は、まずバックアップを採取して、そのバックアップが正しく採取されていることをご確認ください!
  • RPi の電源を落とし、 SD メモリカードを別のマシンに接続します。
  • YaST2 でサイズ変更とパーティションの設定を行ないます:
(See docu http://de.opensuse.org/YaST_Module_Partitionierer) - In German

  Yast2 -> メニュー : システム -> メニュー : パーティション設定 -> メニュー -> パーティション: /dev/(デバイス名) <return> -> メニュー : "サイズ変更..."
  メニュー : "カスタムサイズ" を選択し、必要なサイズ (例: 10GB) を指定します。最低でも 2GB 以上を指定する必要があります。
  あとは "OK" を押して "完了" を押します) .
 エラーは無視してかまいません。また、何らかの質問が表示された場合は、 "はい" と回答してください。
  • SD メモリカードを RPi に接続しなおして起動します。
  • root でログインして、下記のようにコマンドを実行します :
 resize2fs /dev/mmclk0p2

(詳しくは http://linux.die.net/man/8/resize2fs をお読みください)

/boot/config.txt を利用した起動とシステム開始パラメータの設定

Process-stop.png
警告!
お使いの環境によっては、画面を正しく表示するため、 DOS パーティション内にある config.txt (詳しくは openSUSE:Raspberry_Pi#Custom_configuration:_config.txt をお読みください) を編集する必要がある場合があります


キーボードの使用

Process-stop.png
警告!
既定ではアメリカ英語のキーボードレイアウトが設定されています。パスワード入力の際はご注意ください ...


  1. キーボードレイアウトを手作業で変更するには、下記のようにして行ないます:
 
 zypper install vim
 vi /etc/sysconfig/keyboard
  1. 日本語レイアウトに変更するには、下記のように値を変更します:
  KEYTABLE="jp106.map.gz"

あとは RPi を再起動することで、設定を反映させることができます。

ディスプレイを接続していないシステムに対する既定のランレベルの設定

openSUSE 12.3 以降のバージョンでは、既定で systemd を使用するようになったため、 sysvinit のようなランレベルは利用されなくなりました。 systemd ではターゲットと呼ばれる柔軟な仕組みを利用して、ランレベル以上の機能を提供しています。

従来のランレベル 3 は multi-user.target というターゲットに相当し、ランレベル 5 は graphical.target というターゲットに相当しています。また、 runlevel3.target は multi-user.target に、 runlevel5.target は graphical.target に対するシンボリックリンクになっています。

'ランレベル 3' に切り替えるには、下記のように実行します:

  1. systemctl isolate multi-user.target (or) systemctl isolate runlevel3.target

'ランレベル 5' に切り替えるには、下記のように実行します:

  1. systemctl isolate graphical.target (or) systemctl isolate runlevel5.target
ランレベル 5 と 3 を設定するには、それぞれのシンボリックリンクが指し示すターゲットを変更することで行ないます:
(ランレベル 5) :

 rm /etc/systemd/system/default.target
 ln -sf /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target 
 (ランレベル 3) :

 rm /etc/systemd/system/default.target
 ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target 

固定 IP の手動設定

openSUSE Factory のイメージで固定 IP を設定するには、下記の手順で行ないます。なお、下記の例ではネットワークが 192.168.1.x のクラス C ネットワークで、ルータ (ゲートウエイ) と DNS サーバが .1 にある場合で記述しています。また、ドメイン名は "local" であるものとして記述しています。


echo "default 192.168.1.1 - -" >/etc/sysconfig/network/routes

cp -p /etc/sysconfig/network/ifcfg-eth0_orig
cat << EOF >/etc/sysconfig/network/ifcfg-eth0
STARTMODE='auto'
BOOTPROTO='static'
BROADCAST='192.168.1.255'
ETHTOOL_OPTIONS=''
IPADDR='192.168.1.20/24'
MTU=''
NAME='eth0'
NETWORK='192.168.1.0'
REMOTE_IPADDR=''
USERCONTROL='no'
#
EOF
cp -p /etc/resolv.conf /etc/resolv.conf.orig
cat << EOF >/etc/resolv.conf
nameserver 192.168.1.1
domain local
search local
#
EOF

DNS や NTP の設定を固定したい場合は、 /etc/resolv.conf や /etc/ntp.conf ではなく、それぞれ /etc/sysconfig/network/config 内にある下記の値を変更してください。

 NETCONFIG_DNS_STATIC_SERVERS
 NETCONFIG_DNS_STATIC_SEARCHLIST
 NETCONFIG_DNS_RESOLVER_OPTIONS
 NETCONFIG_NTP_STATIC_SERVERS

echo "192.168.1.20 MyPIHostname.local  MyPIHostname >>/etc/hosts

echo MyPIHostname >/etc/HOSTNAME

あとは下記のように実行してください:

rcnetwork reload 
rcntp reload

IPv6 の無効化

IPv6 を無効化するには、下記のように実行します:

echo "net.ipv6.conf.all.disable_ipv6=1" >/etc/sysctl.d/disableipv6.conf


systemd を使用せずに適用したい場合は、下記のように実行します (12.2 またはそれ以前のバージョンで利用できます)

 sysctl -p 

systemd を利用して反映したい場合は、下記のように実行します (12.3 またはそれ以降のバージョンで利用できますが、上記の方法でも動作します)

 systemctl restart systemd-sysctl.service 

ディスプレイを接続していないシステムに対する LINKLOCAL / Zeroconf / 169.254.0.0/16 の無効化

リンクローカルアドレス (169.254.0.0/16) や zeroconf のネットワークは、必ずしも必要となるものではありません。無効化したい場合は、下記の手順で行ないます:

まずは "NOZEROCONF" を yes に設定します:

vi /etc/sysconfig/network/config 
NOZEROCONF="yes"

あとは下記のように実行します:

rcnetwork  restart

openSUSE での自己カーネルコンパイル

RPi 向けには様々なカーネルが公開されていますが、場合によってはソースコードでのみ公開されている場合があります。 RPi 自身でカーネルをコンパイルして利用したい場合は、下記の手順で実施してください。

やるべきこと:

まずは GitHUB RPI から最新の RPI カーネルソースを取得します。これには標準のカーネルには取り込まれていないパッチが適用されています。

cd /usr/src
cat << EOL >git3.11.y-update.sh
#!/bin/sh

cd /usr/src
if [ ! -d SOURCES ]; then
  mkdir SOURCES
fi
if [ ! -d GIT ]; then
        mkdir GIT
fi
cd GIT
        if [ -d .git ]; then
                rm -rf .git
                rm .gitignore .mailmap
        fi
git init

D=2013-12-20


if [ -d rpi-3.11.y. ]; then
        rm -rf rpi-3.11.y
fi

cd /usr/src/GIT
mkdir rpi-3.11.y
git fetch git://github.com/raspberrypi/linux.git rpi-3.11.y:refs/remotes/origin/rpi-3.11.y
git checkout origin/rpi-3.11.y
 mv ./* rpi-3.11.y
tar cpfj /usr/src/SOURCES/rpi-3.11.y.tar.bz2    rpi-3.11.y


cd /usr/src
tar xpfj  SOURCES/rpi-3.11.y.tar.bz2
rm linux
ln -s rpi-3.11.y linux
#
EOL
chmod 750 git3.11.y-update.sh
nohup git3.11.y-update.sh &

お使いのネットワーク環境と SD メモリカードの速度に依存しますが、 2 分から 4 分程度かかります。

あとはカーネルを構築します:

cat << EOL >make-linux.sh
cd /usr/src/linux
kversion=$(make -s kernelrelease)
echo $kversion

#make distclean clean
#make cloneconfig
#make oldconfig
zcat /proc/config.gz >/boot/config-$kversion
## zcat /proc/config.gz >.config
#cp -p /boot/System.map-$kversion /usr/src/linux/System.map

touch /usr/src/linux/include/linux/modversions.h
 nohup make \
 CPPFLAGS="-Ofast -mfpu=vfp -march=armv6zk -mtune=arm1176jzf-s" \
 CFLAGS="-Ofast -mfpu=vfp -march=armv6zk -mtune=arm1176jzf-s" \
 dep zImage modules &
#
EOL
cd linux
make oldconfig
cd ..
nohup make-linux.sh &

お使いのネットワーク環境と SD メモリカードの速度に依存しますが、 30 時間程度程度かかります。 また、少なくとも 512M バイト以上のスワップ領域が必要です (1G バイト以上をお勧めします) 。

構築が完了したら、下記のようにしてインストールします:

cd /usr/src
cat << EOL >installkernel.sh

/bin/sh

D=`date +%Y%m%d_%H%M`
mkdir /boot.old-$D

echo "backing up /boot to  /boot.old-$D"
cp -p /boot/* /boot.old-$D/

cd /usr/src/linux
kversion=$(make -s kernelrelease)

echo "Installing selfcompiled  $kversion kernel"
cp System.map /boot/System.map-$kversion
cp System.map /boot/System.map

make ARCH=arm modules_install INSTALL_MOD_PATH=/

make ARCH=arm INSTALL_PATH=/boot/ install

cp .config /boot/config-$kversion
cp ./Module.symvers  /boot/symvers-$kversion
cp arch/arm/boot/Image /boot/kernel.img

echo "You can reboot now rebooting"
echo " In case of failures , copy back the backup from /boot.old-$D \nwith use of an sdcard reader and an Opensuse Live cd within an OS emulator Like vmware Player"
echo ""

あとは RPi を再起動すれば、新しいカーネルを起動することができます。 何らかの問題が発生した場合は、古いカーネルに戻してください。

RPI 向けの HP hplip Cups ドライバ

RPI 向けにはパッケージが提供されていません。 GITHUB https://github.com/remsnet/OpenSuSE-hplip にある第三者が公開するビルドプロジェクトをお使いください。
RPi 向けの構築済みパッケージ
openSUSE 13.1 RPI arm 向け RPM & SRPM は、下記の DropBox URL で提供しています:
https://www.dropbox.com/sh/ofpzj8u3j2v43zq/mqoFqLLzQB

トラブルシューティング

openSUSE:Raspberry_Pi#トラブルシューティング に移動しました。
TODO