1.インストールで発生した問題
OSのインストールは完了したけれど、その後のオーディオ処理になって関連ライブラリーが動作しない(音が出ない)という問題が発生しました。何度もインストールをやり直した結果、インストール時に「sudo apt-get upgrade」を実行すると、その後の再起動で、サウンドカードの認識が変わってしまうのが原因であることわかりました。
通常は、サウンドカードの認識状態を確認すると次のように表示されます。
$ cat /proc/asound/cards |
0 [ALSA ]: bcm2835_alsa - bcm2835 ALSA |
bcm2835 ALSA |
それが次のように変わってしまうのです。
$ cat /proc/asound/cards |
0 [Headphones ]: bcm2835_headphonbcm2835 Headphones - bcm2835 Headphones |
bcm2835 Headphones |
対処方法がわからず、結局、手元で安定運用ができているRaspbian Busterの最終バージョン「February 2020」を、upgradeすることなくインストールすることで解決しました。
すでにOSをインストール済みであれば、上記のコマンドでALSAが正しく認識できているかどうかを確認してください。
2.OSのダウンロードとSDカードへの焼き付け
(1)OSのダウンロード
今、Raspberry PiのOSは変革期を迎えています。OSのダウンロードページのタイトルが「Raspberry Pi OS (previously called Raspbian)」と変わりました。現時点の内容はRaspbian Busterの最終バージョンの改名版と思われますが、一方で64ビットベータ版の提供が開始され、1プロセスで8GBの大容量メモリーのハンドリングが可能になるなど、期待が膨らみます。
ここではRaspbian Busterの最終バージョンをインストールしますが、通常のダウンロードページには最新のものしかありません。そのため、下記のリンクから旧バージョンのdeskop版一覧にアクセスします。
https://downloads.raspberrypi.org/raspbian/images/![](photo/instos_1.jpg)
一番最終行の「raspbian-2020-02-14」を選択します。構成一覧が表示されるので「2020-02-13-raspbian-buster.zip」を選択してダウンロードします。
![](photo/instos_2.jpg)
ダウンロードファイルを解凍するとフォルダー「2020-02-13-raspbian-buster」が現れます。これをRaspberry Pi用のマイクロSDカードに焼き付けます(書き込みます)。
(2)SDカードの初期化
プロジェクトの第2章で準備したmicroSDカードをマルチカードリーダー・ライターにセットして、Windows PCのUSBポートに接続します。メディアの初期化をするために、インストール済みの「SD Card Formatter.exe」を起動すると下の画面が開きます。必要ならボリュームラベルを入力して、[フォーマット]ボタンをクリックします。
![](photo/instos_3.jpg)
(3)OSの書き込み
次に、インストール済みの「Win32DiskImager.exe」を起動します。下の画面が表示されるので、まず「Device」にSDカードが選択されていることを確認します。画面のフォルダーアイコンをクリックして、先に解凍した「2020-02-13-raspbian-buster」フォルダー内の「2020-02-13-raspbian-buster.img」ファイルを指示して[Write]ボタンをクリックします。SDカードへの書き込みが始まります。
![](photo/instos_4.jpg)
(4)インストール準備処理
書き込みが完了するとSDカードの内容がエクスプローラーに表示されます。SDカードを取り外す前にテキストエディタ-を使って、インストール時にWi-Fi接続とSSHの有効化ができるように、SDカードに2つのファイルを作成します。
①ファイル「wpa_supplicant.conf」を作成して、つぎの内容を書き込みます。
ここでSSID名と暗号化キーを設定しておくことで、Raspberry Pi起動時にWi-Fiに自動接続されます。
country=JP |
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev |
update_config=1 |
network={ |
ssid="SSID名" |
psk="暗号化キー" |
} |
②SDカードのbootに、内容が空のファイル「ssh」を作成します。このファイルが存在するとSSHが有効になります。
以上でインストール用のSDカードが完成しました。安全にSDカードを取り外して、Raspberry Pi Zeroに装着します。
3.環境設定とIPアドレスの固定化
(1)Raspberry Piへのコンタクト
Windows PCでSoftPerfect Network Scannerを起動してネットワークスキャンを実行しておきます。Raspberry Pi Zeroの電源を入れてしばらく待ち、再度ネットワークスキャンを実行してみます。新たな接続が現れるのでIPアドレスをメモします。
[例] 192.168.0.31 raspberrypi.local
(2)Raspberry Piへのログイン
Poderosaを立ち上げて、先に控えた192.168.0.31にログインします。
ユーザー: pi
パスワード: raspberry
(3)環境設定
Poderosaの画面で「sudo raspi-config」と入力して環境設定処理を起動します。
![](photo/instos_5.jpg)
この設定はいつでもできるので後回しにしてもかまいませんが、「1」のユーザーpiのパスワード変更、「2」のネットワークオプションからできるホスト名の変更などはここでやっておきましょう。ちなみにホスト名は「RASPZ1」と設定しました。
画面操作は、[Tab]キーでカーソル移動、[Enter]キーで項目選択ができます。それぞれの項目の入力指示に従って設定します。設定の終了は<Finish>を選択します。終了後は「sudo reboot」と入力して再起動します。
(4)IPアドレスの固定化
IPアドレスを「192.168.0.38」に固定するケースで説明します。Poderosa画面から「sudo nano /etc/dhcpcd.conf」と入力して、etc/dhcpcd.confファイルの終端に以下の内容を追加します。なお、static routersにはDefault Gateway、domain_name_serversにはDNS ServerのIPアドレスを設定します。
interface wlan0 |
static ip_address=192.168.0.38/24 |
static routers=192.168.X.XXX |
static domain_name_servers=192.168.X.XXX |
static domain_search= |
noipv6 |
(5)設定の確認
再起動のために「sudo reboot」と入力して起動の完了を待ちます。Poderosaから、先に設定したIPアドレス「192.168.0.38」と新パスワードで接続できればOKです。さらにSoftPerfect Network Scannerで再スキャンして、変更したホスト名が表示されていることを確認します。
4.M抜きLAMPのインストール
LAMPは「Linux + Apache + MySQL + PHP / Perl / Python」といったオープンソースソフトウェア群です。今回はデータベースソフトのMySQL(Mariadb)は対象外とします。すでにRaspbian BusterをインストールしているのでLinuxはインストール済み。またPerlとPythonも同時にインストールされているので、残すはApacheとPHPだけです。
なお、すでにインストールされているPythonとPerlのバージョンは次の通りです。
・Python : Python 2.7.16
・Python3 : Python 3.7.3
・Perl : v5.28.1
(1)Apache2のインストール
次のコマンドでインストールします。
$ sudo apt-get -y install apache2 |
$ apache2 -v |
Server version: Apache/2.4.38 (Raspbian) |
Server built: 2019-10-15T19:53:42 |
(2)PHP7のインストール
次のコマンドでインストールします。
$ sudo apt-get update |
$ sudo apt-get -y install php php-dev php-fpm php-gd |
$ php -v |
PHP 7.3.14-1~deb10u1 (cli) (built: Feb 16 2020 15:07:23) ( NTS ) |
Copyright (c) 1997-2018 The PHP Group |
Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies |
with Zend OPcache v7.3.14-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies |
5.FTPサーバーの構築
FTP(File Transfer Protocol)を利用してファイル送受信を行うために、セキュリティが高く安全性に優れたvsftpd(Very Secure File Transfer Protocol Daemon)を組み込みます。
(1)vsftpdの導入
次のコマンドでvsftpdをインストールします。
$ sudo apt-get install vsftpd |
(2)設定ファイルの編集
①/etc/vsftpd.confの編集
1)nanoエディターで編集します。
$ sudo nano /etc/vsftpd.conf |
|
②ローカルユーザー制限リストの作成
1)ホームディレクトリより上の階層に移動できるローカルユーザーを設定します。
$ sudo nano /etc/vsftpd.chroot_list |
pi |
ホスト名やIPアドレス単位でのアクセス制限は、/etc/hosts.allowと/etc/hosts.denyで行います。
3)設定を有効にするためにvsftpdをリスタートします。
$ sudo service vsftpd restart |
(参考) vsftpdはマシン起動時に自動起動するようになっているので特に指定は不要です。
$ sudo reboot |
$ ps agx | grep vsftpd |
----------------------------------------- |
13348 ? Ss 0:00 /usr/sbin/vsftpd /etc/vsftpd.conf |
13353 pts/0 S+ 0:00 grep --color=auto vsftpd |
6.Sambaファイルサーバーの構築
Sambaは、マイクロソフトのWindowsネットワークを実装したフリーソフトウェアです。 LinuxなどUNIX系のOSで、Windowsのファイル共有機能を提供します。
(1)SAMBAの導入
次のコマンドで sambaをインストールします。
$ sudo apt-get install samba |
(2)SAMBAの設定
①共用フォルダーの確保
共用フォルダー(ディレクトリー)shareを確保してパーミッションを読み書き・実行ができるように設定します。
$ sudo mkdir /home/share |
$ sudo chmod 777 /home/share |
②設定ファイルの編集
1)Sambaの設定ファイルsmb.confの最終行に以下を追加します。
$ sudo nano /etc/samba/smb.conf |
[share] path = /home/share writable = yes force create mode = 0777 force directory mode = 0777 guest ok = yes guest only = yes share modes = yes |
次のようにsmbdとnmbdを個別にリスタートさせます。
$ sudo service smbd restart |
$ sudo service nmbd restart |
$ sudo service smbd status |
![](photo/instos_6.jpg)
(3)動作確認
Windows PCのSoftPerfect Network Scannerを起動します。
スキャンすると192.168.0.38 コンピュータRASPZ1が見え、これを展開するとshareフォルダーが表示されます。
![](photo/devenv2.jpg)
7.その他のインストール
(1)管理者権限の設定
リモートデスクトップを管理者権限で起動するには、管理者権限でログインする必要があります。rootを管理者にする場合は、次のようにしてrootパスワードを設定します。
$ sudo passwd root |
新しいパスワード: |
新しいパスワードを再入力してください: |
passwd: パスワードは正しく更新されました |
![](photo/instos_7.jpg)
ログイン画面が表示されるので、usernameにroot、passwordに先に設定したパスワードを入力して[OK]をクリックします。
![](photo/instos_7a.jpg)
しばらくするとRaspberry Piのデスクトップ画面が表示されます。この状態では、テキストエディターを立ち上げてシステム情報ファイルの内容を書き換えたり、ファイルやフォルダーの複写や削除ができます。便利ですが、誤操作によってシステムを破壊する危険な状態です。必要な場合だけ限定的に使用して、その他でGUIを必要とする場合は、piなどの一般ユーザーでログインしましょう。
![](photo/instos_7b.jpg)
$ su |
パスワード: |
# |
(2)日本語環境の設定
Raspbian Busterでは日本語がインストール済みですぐに使用できるとのレポートもありますが、うまく動作しなかったので、「VLゴシック」フォントと、インプットメソッドに「iBus-Anthy」を設定しました。
sudo apt-get install fonts-vlgothic |
sudo apt-get install ibus-anthy |
sudo reboot |
8.設定の確認とバックアップ
これでOSと基幹ソフトの設定が完了です。インストール後のソフトウェアのバージョンなどを確認しておきましょう。
・ハードウェア
$ cat /proc/device-tree/model
Raspberry Pi Zero W Rev 1.1
・ホスト名
$ hostname
RASPZ1
・OS
$ cat /proc/version
Linux version 4.19.97+ (dom@buildbot) (gcc version 4.9.3
(crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1294 Thu Jan 30 13:10:54 GMT 2020
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
・Cコンパイラー
$ gcc --version
gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
$ g++ --version
gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
・その他
$ apache2 -v
Server version: Apache/2.4.38 (Raspbian)
Server built: 2019-10-15T19:53:42
$ php -v
PHP 7.3.14-1~deb10u1 (cli) (built: Feb 16 2020 15:07:23) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.14-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies
$ python --version
Python 2.7.16
$ python3 --version
Python 3.7.3
続いて、それぞれのソフトの機能や動作などを確認してみましょう。問題がなく納得できるようであれば、この時点のSDカードの内容をバックアップすることをお勧めします。これから先のインストールや開発過程で問題が発生したときに、システムを最初からインストールし直すのは大変手間がかかります。バックアップしておけば、SDカードを初期化して書き戻すだけでこの時点の状態に容易に復帰できます。
バックアップは、SDカードにシステムを書き込むときに使ったWin32DiskImager.exeで行います。
![](photo/instos_8.jpg)
microSDカードをマルチカードリーダー・ライターにセットして、Windows PCのUSBポートに差し込みます。Win32DiskImagerを起動して、バックアップ用のWindows PCのフォルダーを指定し、バックアップファイル名を入力します。[Read]ボタンをクリックすると、SDカードの内容がファイルに書き込まれます。
バックアップはイメージデータとして処理されるので、SDカードに書き込まれている容量でなく、カードの物理容量(16GB/32GBなど)に相当するファイル容量が必要になるので注意してください。
バックアップからの復元は、初期化したSDカードをセットして復元対象のファイルを指定した後、[Write]ボタンをクリックするだけです。
次回では、音声信号処理の中核であるALSAと、フリーの音声処理ライブラリーPortAudioについてとりまとめ、必要なインストールを行います。お楽しみに!