電気回路/z-turn/Linuxの設定 のバックアップソース(No.13)
更新[[公開メモ]] #contents * z-turn 付属の SD カードにインストールされている Linux ディストリビューション [#d5836972] 付属の SD カードで z-turn を立ち上げて、 LANG:console $ uname --all Linux localhost.localdomain 3.15.0-xilinx #9 SMP PREEMPT Tue May 26 17:26:14 CST 2015 armv7l armv7l armv7l GNU/Linux $ gcc --version gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ cat /etc/apt/sources.list deb http://ports.ubuntu.com/ubuntu-ports/ precise main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ precise main restricted # deb http://ports.ubuntu.com/ubuntu-ports/ precise-updates main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ precise-updates main restricted # deb http://ports.ubuntu.com/ubuntu-ports/ precise-security main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ precise-security main restricted ふむ。 インストール済みのカーネルバージョンは - 3.15.0-xilinx インストール済みの Ubuntu のバージョンは - precise (12.04LTS, Linux kernel 3.2) カーネルのバージョンはそこそこ高いけれど ディストリビューションのバージョンが低い感じです。 https://ja.wikipedia.org/wiki/Ubuntu によれば precise はまだギリギリサポートは続いているけれど、 それも今年 2017 年の4月までなので、早めに - trusty (14.04 LTS, Linux Kernel 3.13) あるいは - xenial (16.04 LTS, Linux Kernel 4.3) に 上げたいところ。 ちなみに Debian は - wheezy が Linux 3.2 - jessie が Linux 3.16 - stretch が Linux >= 4.8 となっています。 * ゼロから Debian 8 (jessie) を入れる [#l73821e0] Ubuntu のアップグレードも試したけれど、途中で動作が不安定になってしまったのと、 必要のないパッケージやファイルが多数含まれているのとが気になるところ。 そこで、http://www.slideshare.net/shtaxxx/debian-linux-on-zynq-setup-flow-vivado-20154#67 ~ を参考にしつつ、1から Debian 8 (jessie) をインストールしてみました。 GUI を含まない最小構成で、ルートファイルシステムは 420MB 程度になったので、 再インストールしてまっさらから始める場合にもかなり楽にできるようになりました。 (元のディスクイメージは 1.4GB くらいありました) * 作業の流れ [#l324c49f] Debian にはクロス開発用のインストールツールが debootstrap というパッケージとして提供されています。これを使うことで、 ホストPCのファイルシステム上に z-turn で使う SD カード用の ルートファイルシステムを作成し、最後に SD カードにコピーします。 具体的な流れは以下のようになります。 + arm エミュレータおよびツール群をインストール + debootstrap で最小限のファイルを用意する + debootstrap の2段目(arm エミュレータ)を起動 + apt の設定 + 必要最低限のパッケージをインストール + ネットワークとファイルシステムの設定 + ユーザーの作成 + ファイルシステムのコピー ** arm エミュレータおよびツール群をインストール [#j604ed4d] LANG:console $ sudo apt-get install qemu-user-static debootstrap binfmt-support ** debootstrap で最小限のファイルを用意する [#vef75621] LANG:console $ mkdir -p ~/z-turn/rootfs $ export targetdir=~/z-turn/rootfs $ export distro=jessie $ sudo debootstrap --arch=armhf --foreign $distro $targetdir $ sudo cp /usr/bin/qemu-arm-static $targetdir/usr/bin $ sudo cp /etc/resolv.conf $targetdir/etc $ sudo chroot $targetdir $ bash --version GNU bash, version 4.4.11(1)-release (arm-unknown-linux-gnueabihf) Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. 以降は ~/z-turn/rootfs をルートディレクトリとして, arm エミュレータ上で実行されることになります。 ** debootstrap の2段目を起動 [#i0357483] LANG:console $ export distro=jessie $ export LANG=C $ /debootstrap/debootstrap --second-stage ** apt の設定 [#o3545f51] LANG:console $ cat <<EOT > /etc/apt/sources.list deb http://ftp.jp.debian.org/debian $distro main contrib non-free deb-src http://ftp.jp.debian.org/debian $distro main contrib non-free deb http://ftp.debian.org/debian $distro-updates main contrib non-free deb-src http://ftp.debian.org/debian $distro-updates main contrib non-free deb http://security.debian.org/debian-security $distro/updates main contrib non-free deb-src http://security.debian.org/debian-security $distro/updates main contrib non-free EOT $ cat << EOT > /etc/apt/apt.conf.d/71-no-recommends APT::Install-Recommends "0"; APT::Install-Suggests "0"; EOT $ apt-get update $ apt-get install locales dialog $ dpkg-reconfigure locales Generating locales (this might take a while)... en_US.UTF-8... done ja_JP.UTF-8... done Generation complete. $ apt-get install etckeeper # /etc 以下の更新履歴を取る ** 必要最低限のパッケージをインストール [#mbd4f937] - jed は普段使っている emacs ライクなエディタです - aptitude は何らかのパッケージがインストール済みかどうかを調べるのに便利なので LANG:console $ apt-get install openssh-server ntpdate resolvconf sudo hwinfo ntp samba jed aptitude ** 開発用ツールのインストール [#y84f349d] LANG:console $ apt-get install build-essential ** ネットワークとファイルシステムの設定 [#ldbd3b11] - eth0 を DHCP でネットワーク接続 - SD カードのブート領域を /boot にマウント LANG:console $ cat /etc/network/interfaces # interfaces(5) file used by ifup(8) and ifdown(8) # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d $ cat << EOT >> /etc/network/interfaces allow-hotplug eth0 iface eth0 inet dhcp EOT $ echo debian8-zynq > /etc/hostname $ echo "127.0.0.1 debian8-zynq" >> /etc/hosts $ echo "/dev/mmcblk0p1 /boot auto defaults 0 0" >> /etc/fstab ** ユーザーの作成 [#uc191ae6] LANG:console $ adduser osamu $ adduser osamu sudo Adding user `osamu' to group `sudo' ... Adding user osamu to group sudo Done. $ su osamu $ groups osamu sudo $ exit ** 次回以降、ホスト PC のarm エミュレータ上で arm コンソールを起動するには [#icc733a5] LANG:console $ sudo chroot ~/z-turn/rootfs ** ファイルシステムのコピー [#kac02ea1] 以上でファイルシステムは完成しているので、SD カードへコピーすれば終了です。 以下では既存の SD カードのファイルシステムを書き換える形で インストールしたけれど、既存ファイルの消去にとても時間が掛かるので 一旦フォーマットしてから始めた方が手早く済みそう。 SD カードへ書き込む際、 - /lib/firmware/* - /lib/modules/* については、カーネルに合ったバージョンを入れておかなければならないので、 カーネルコンパイル時にホストPC上の上記ディレクトリに始めからインストールしておくか、 あるいは SD カードにインストールしてあるものを残すようにする。 以下ではすでに SD カードにインストールしてあるものとして、 上記ディレクトリのみを残すようにしている。 LANG:console $ exit # chroot から抜ける exit $ ls ~/z-turn/rootfs/ bin dev home media opt root sbin sys usr boot etc lib mnt proc run srv tmp var $ sudo mount /dev/sdf2 /mnt/sdcard2 # SD カードをマウント $ ls /mnt/sdcard2/usr/lib/firmware 3com bnx2 e100 keyspan mts_gsm.fw sb16 ttusb-budget acenic bnx2x edgeport keyspan_pda myricom sun vicam adaptec cis emi26 korg ositech tehuti whiteheat.fw advansys cpia2 emi62 matrox qlogic ti_3410.fw whiteheat_loader.fw atmsar11.fw cxgb3 ess mts_cdma.fw r128 ti_5052.fw yam av7110 dsp56k kaweth mts_edge.fw radeon tigon yamaha $ ls /mnt/sdcard2/lib/modules/ 3.15.0-xilinx 4.6.0+ $ cd /mnt/sdcard2 $ # 以下、現在インストールされているファイルを firmware, modules を除き削除する $ sudo mkdir trash $ sudo mv * trash # 一旦全て rash へ入れて、必要なものだけ救出する mv: `trash' を自分自身のサブディレクトリ `trash/trash' に移動できません $ sudo mv trash/lib . $ sudo rm -rf trash # lib だけ消さない $ cd lib $ sudo mkdir trash $ sudo mv * trash # 一旦全て rash へ入れて、必要なものだけ救出する mv: `trash' を自分自身のサブディレクトリ `trash/trash' に移動できません $ sudo mv trash/firmware . $ sudo mv trash/modules . $ sudo rm -rf trash # lib/firmware, lib/modules だけ消さない $ # ファイルをすべてコピーする $ sudo cp -a ~/z-turn/rootfs/* /mnt/sdcard2 $ cd $ sudo umount /dev/sdf2 $ df /dev/sdf2 ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sdf2 7457484 420292 6635324 6% /mnt/sdcard2 使用領域は 420MB 程度となっています。 * 起動してみる [#va79b2c4] LANG:console Debian GNU/Linux 8 debian8-zynq ttyPS0 debian8-zynq login: osamu パスワード: Linux debian8-zynq 4.6.0+ #1 SMP PREEMPT Thu Feb 2 21:19:10 JST 2017 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. $ uname -a Linux debian8-zynq 4.6.0+ #1 SMP PREEMPT Thu Feb 2 21:19:10 JST 2017 armv7l GNU/Linux $ sudo ifconfig eth0 Link encap:イーサネット ハードウェアアドレス 00:0a:35:00:01:22 inetアドレス:10.225.225.168 ブロードキャスト:10.225.225.255 マスク:255.255.255.0 inet6アドレス: fe80::20a:35ff:fe00:122/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:8798 エラー:0 損失:588 オーバラン:0 フレーム:0 TXパケット:324 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:741578 (724.1 KiB) TXバイト:26614 (25.9 KiB) 割り込み:145 ベースアドレス:0xb000 lo Link encap:ローカルループバック inetアドレス:127.0.0.1 マスク:255.0.0.0 inet6アドレス: ::1/128 範囲:ホスト UP LOOPBACK RUNNING MTU:65536 メトリック:1 RXパケット:776 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:776 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1 RXバイト:61584 (60.1 KiB) TXバイト:61584 (60.1 KiB) $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 7.4G 0 disk tqmmcblk0p1 179:1 0 64M 0 part /boot mqmmcblk0p2 179:2 0 7.4G 0 part / $ date 2017年 2月 6日 月曜日 07:07:16 UTC $ sudo apt-get update ヒット http://security.debian.org jessie/updates InRelease ... 取得:4 http://ftp.debian.org jessie-updates/non-free Translation-en/DiffIndex [736 B] 11.1 kB を 26秒 で取得しました (420 B/s) パッケージリストを読み込んでいます... 完了 $ ls -l /usr/bin/qemu-arm-static -rwxr-xr-x 1 root root 2898728 2月 6 04:53 /usr/bin/qemu-arm-static $ sudo rm /usr/bin/qemu-arm-static Shinya Takamaeda-Y さんのおかげで あっけないほと簡単にインストールできました。 * その他設定 [#m176c9ad] ** samba を入れて /boot を共有してしまう [#q478491b] [[管理者/smbd の設定]] も参考にしつつ LANG:console $ apt-get install samba $ sudo jed /etc/samba/smb.conf [global] + # プリンタ関連の警告が出ないようにする + printing = bsd + load printers = no + printcap name = /dev/null ... [homes] ... - read only = yes + # ホームディレクトリを書き込み可能にする + read only = no ... + # /boot 以下を共有する + [boot] + path = /boot + force group = root + force user = root + create mode = 600 + directory mode = 755 + valid user = osamu + writable = yes $ # samba インストール前に作られた既存ユーザーについては $ # 別途 samba に登録してやる必要がある $ sudo pdbedit -a -u osamu new password: retype new password: これで Windows から //debian8-zynq/boot としてブート領域にアクセスが可能となり、 ネットワーク越しに内容を書き換えたい放題になります。 ロジック (*.bit) やデバイスツリー (*.dtb) を書き換えるのに SD カードを抜き差ししなくてよくなるのでとても楽です。 * ちょいメモ [#f293e538] 手動でインストールしたパッケージを一覧する $ apt-mark showmanual * コメント・質問 [#x541d936] #article_kcaptcha
Counter: 5489 (from 2010/06/03),
today: 1,
yesterday: 0