ZynqBerryまたはGigaZeeにUbuntu Linux 12.11を入れて、リッチなLinux環境の構築をする方法を説明します。
XILINXのWikiにある「RAMDISKで作るLinux」はシンプルすぎます。パッケージも管理できないし、名前解決にnmbdも使えません。この章ではLinaro Ubunuを使用してリッチなLinuxを作る方法を説明します。
なお、ZynqBerryについてはこちらのページをご覧ください。
新しいSDカードの準備
まず、新しいSDカードを用意します。
開発用のホストPC(Linux。仮想マシンで可)でgpartedを実行し、第一パーティションを64MB程度のfat32で、第二パーティションを5GB程度のext4で作成します。
Linaro Ubuntuのダウンロード
次に、下記のURLからLinaro Ubuntuをダウンロードします。
https://releases.linaro.org/archive/12.11/ubuntu/precise-images/
12.11というと少し古いように感じますが、このバージョンが安定しています。Ubuntu-desktopの中のlinaro-precise-ubuntu-desktop-20121124-560.tar.gzをダウンロードします。
第1パーティションに入れるもの
下記のファイルをWindows上でコピーします。
- BOOT.bin (ZynqBerryの場合は不要)
- uImage
- devicetree.dtb
- uEnv.txt
- u-boot.rgba (起動画面を出すための画像ファイル)
第2パーティションに入れるもの
第2パーティションには、ルートファイルシステムを入れます。具体的には、ubuntu-desktopのlinaro-precise-ubuntu-desktop-20121124-560.tar.gzをダウンロードして解凍したものを入れますが、単純にgunzipとtarで解凍するのではなく、下記のようにします。
sudo tar --strip-components=3 -C /(マウント先) -xzpvf linaro-precise-ubuntu-desktop-20121124-560.tar.gz binary/boot/filesystem.dir
インストール後の作業
SDカードが出来上がったら、ZynqBerryを起動します。デフォルトでは基本的に何もないので、いろいろと必要なものをインストールします。
時刻の設定
ただし、その前にZynqBerryを起動したら、ntpdate ntp.nict.jpでネットワーク経由で時刻を合わせるか、date -s “2017-12-29 23:45:00″のようにして時刻を設定します。そうしないと、今後の作業で作るファイルの日付が1970になってしまい、わからなくなってしまいます。
パッケージ情報を最新に
最初に、
apt-get update
apt-get upgrade
apt-get dist-upgrade
を行って、apt-getやパッケージを最新の状態にします。
タイムゾーンの設定
デフォルトではUTCになっているので、
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
とやって、日本時刻が適用されるようにします。
各種ツールのインストール
人によって好みはあると思いますが、
apt-get install ssh
apt-get install emacs
apt-get install httpd
apt-get install samba
などを入れておくとよいでしょう。sambaを入れると、nmbdが一緒に入り、Windowsから容易に名前解決できるようになります。
emacsの設定
また、emacsを入れた直後はバックスペースが効きません。バックスペースが使えるようにするには、.emacsファイルを作成し、
(keyboard-translate ?\C-h ?\C-?)
(global-set-key (kbd "C-h") 'delete-backward-char)
と記述しておきます。
ホスト名の設定
vi /etc/hosts
vi /etc/hostname
でホスト名を設定しておきます。
avahi-daemonのアンインストール
avahi-daemonというパッケージがデフォルトで有効になっています。これはLinux等で使われる名前解決のしくみなのですが、Windowsはこのプロトコルに応答しないため、TeraTermなどでSSH接続する際にとても応答が遅くなってしまいます。
apt-get remove avahi-daemon
module.depの作成
以下のコマンドでmodule.depを作成しておきます。
mkdir /lib/modules/4.9.0-xilinx-00051-gb450e90/
touch /lib/modules/4.9.0-xilinx-00051-gb450e90/modules.dep
apt-keyのインストール
作業をしていると、どこかで
W: There is no public key available for the following key IDs:
というエラーが出ることがあります。以下のコマンド
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
を入力し、鍵をインストールします。
起動の高速化
Ubuntuは起動する際にネットワークがつながっていなかったりすると、
Waiting for network configuration
Waiting up to 60more seconds for network configuration
というメッセージが出て、最初に60秒、そしてまた60秒間、待たされます。
これは/etc/init/failsafe.confというファイルで
# The point here is to wait for 2 minutes before forcibly booting
# the system. Anything that is in an "or" condition with 'started
# failsafe' in rc-sysinit deserves consideration for mentioning in
# these messages. currently only static-network-up counts for that.
sleep 20
# Plymouth errors should not stop the script because we *must* reach
# the end of this script to avoid letting the system spin forever
# waiting on it to start.
$PLYMOUTH message --text="Waiting for network configuration..." || :
sleep 40
$PLYMOUTH message --text="Waiting up to 60 more seconds for network configuration..." || :
sleep 59
$PLYMOUTH message --text="Booting system without full network configuration..." || :
などと、sleepが記述されていることが原因です。
つまり、/etc/init/failsafe.confの中にあるsleep60を短くしてしまえば起動が早くなります。
しかし、このsleepが実行される原因は、/etc/udev/rules.d/70-persistent-net.rulesというファイルにあります。
root@zynqberry:~# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# USB device 0x2019:0xab2a (usb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="**:**:**:**:**:**", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"
のようになっているので、、# USB device以降の部分を消してしまうというのも手です。
Ubuntu 14.04へのアップグレード
Ubuntu12では物足りない、という人はUbuntu14にアップグレードしてください。
上記の作業を行ったのち、
do-release-upgrade
でアップグレードできます。
その後、
apt-get update
apt-get upgrade
を行いますが、依存関係が壊れているので、
apt-get -f install
で修復します。
ここまでの作業でアップグレードは完了です。
Ubuntu14にすると、自動的にいろいろなパッケージがアップグレードされていて、特にPython3がインストールされているなど、好印象です。
しかし、Ubuntu14.04にするとGUI画面でのログインができなくなるため、GUIが重要なアプリケーションを作る場合は避けたほうが良いでしょう。
最近のコメント