ホームページmini2440>その4・Debianをインストールしてみる

その4・Debianをインストールしてみる

目次
 はじめに

 現状手詰まりなのと、システムのリカバリ方法を学習したことで原状復帰のメドが立ったことから、mini2440にDebianをインストールしてみることにしました。

 なお、今回は主にUbuntu 10.04/14.04マシンとWindows XPマシンを使用しました。(Macは開発ツールのテストのみ。)
 また、各バージョンは試行時のもので、最新版とは異なる場合があります。


 方針

 mini2440にDebian 5.0 lennyをインストールする方法については、以下のサイトに詳しく書かれていることから、その通りに進めさせて頂くこととしました。
(その後は例によって、行き当たりばったりで…(笑)

 参考サイト(1):mini2440にDebian環境をインストール


 Debian 5.0 lennyをインストールする

 参考サイト(1)の通りです。
 以下、気になったことのメモなど。
 通常、この手の作業は大抵どこかで引っ掛かるものですが、全く問題ありませんでした。
 高品質の情報を提供頂いている作者様に感謝です。


 使用感

 ディスプレイの表示範囲の確認のため、USBキーボードを繋いでlsとか打ち込んでみましたが、上記の設定値で全面を使い切る感じです。
(実は、上記値に辿り着くまで、嫌という程ソースの書き換え/カーネルの再作成/コピーを繰り返しました。)
 次いで、本題である開発ツールの実行テストを行いました。

 <eclipse>
 <Qt Creator>
 IDE上でソース編集して直ちに実機で動作テスト、というXcode + iOSデバイスっぽいことができるようになったのは魅力があります。
 とはいえ、GUIベースのアプリ作成までは先が長いですが。


 Debian 7.0 wheezyに移行する

 ひとまず動作する環境は入手したので、後継バージョンへの移行を試みることとしました。
 wheezyは(最新ではないが)現行バージョンであり、移行の対象としては妥当と思われます。
 パッケージ化されているものはカーネルが3.2ですが、2.6.26以降であればいいという情報を得たことから、まずはこれまでのカーネル(2.6.32)のままとしました。

 やり方はlennyと同様、ホストマシンでdebootstrapを実行し、その後実機でsecond-stageを実行することになります。
注:debootstrapは、ホスト側のOSのバージョンによって取得できるバージョンが異なるようです。(/usr/share/debootstrap/scripts/で確認可)
メインで使っているUbuntu 10.04はsqueeze迄しか対応していないため、14.04を用いました。
手動でdebootstrapの最新版をインストールすれば、旧OSでもいけるという情報もありましたが、今回それは試していません。
 ただし、ここで気をつけなければならないのが、second-stageのために実機を起動する際、カーネルのオプションを(参考サイト(1)「ボードでの起動実験」における)初回のものにする、という点です。
 これを二回目のものにする(lennyインストール時にsaveenvしてあるので、何もしないと二回目が適用される)と、runlevelの入力を求められ、何を入力しても先に進まないという事態に陥ります。(当初、これに気付かずに、ドツボにはまりました。)
初回  setenv bootargs 'console=ttySAC0,115200 noinitrd root=/dev/mmcblk0p2 rootwait=4 rw ip=dhcp init=/bin/sh'
二回目 setenv bootargs 'console=ttySAC0,115200n8 rootdelay=3 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait'
 second-stageを実行したところ、以下のエラーで止まってしまいました。(ググると、どうもバグっぽいです。)
W: Failure while installing base packages.  This will be re-attempted up to five times.
 ここでバグ対策する手もあったのですが、実は検索の最中に度々「QEMU」なる単語を目にしていて、当初は気に留めていなかったのですが、改めて調べ直してみると、CPUのエミュレータであることが分かりました。
 また、その関連でqemu-debootstrapなるものも知りました。これを使うと、ホスト上でARM用パッケージのインストールが(つまりはsecond-stageをホスト上で)できる、ということのようでした。

 参考サイト(4):qemu-debootstrapを使ってユーザモードQEMUで動くDockerイメージを作ってみる - ももいろテクノロジー

 手間としてはこちらの方が簡便そうだったので、(ダメ元で)qemu-debootstrapを導入して実行してみたところ、インストールまで終了してしまいました。
 なので、このファイルシステムをtarしてSDカードに持って行き、(lennyの時に行った)second-stageは省略することとしました。
(その後の「追加の作業」はSDカード上で行いましたが、ホスト上で済ませておいた方がよかったかも。)

 実機で起動(カーネルオプションは、上述の二回目のもの)してみると、以下のエラーが延々と出続け、仕方なく強制電源offしました。どうもカーネルのバグらしく、patchが公開されていたりします。
udevd[XXX]: unable to receive ctrl connection: Function not implemented
 ですが、以下のサイトに「3分したらプロンプトが」とあったので、待ってみたら本当に出ましたので、現状、ひたすら待つという消極策を取っています。
 参考サイト(5):#648325 - udevd[XXX]: unable to receive ctrl connection: Function not implemented - Debian Bug report logs
 patchの内容は(改めて確認すると)以下のようなシンプルなものだったので、手作業で追加してみたところ、エラーが出なくなりました。(2015.12.26)
 参考サイト(9):[ARM] wire up sys_accept4() on ARM · genesi/linux-legacy@a84fac7 · GitHub

 さて、ログインしようとしたら、パスワードを要求されてしまいました。
 ルートのパスワードは設定していない筈なのに、あれと思ったのですが、パスワードのファイル(/etc/shadow)を書き換えることで入れるようになりました。
 参考サイト(6):第4章 認証

 あと、(実際にはQt実行時に分かったことですが)以下のエラーが出ました。
stdin: is not a tty
 これは、以下のサイトに従って.profileを書き換えたところ、解消されました。
 参考サイト(7):bash - "stdin: is not a tty" mails for running scripts as cron jobs - Unix & Linux Stack Exchange

 また、macからsshしたのですが、以下の警告が出て入れませんでした。これは、mac側の設定をクリアすることで、入れるようになりましたした。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
…
 参考サイト(8):SSHサーバーが変わったら - profaim.jp

 最後に確認として、開発ツールの実行テストをしてみました。
 eclipseは、lenny同様、前回のサンプルが動作することを確認しました。
 Qtは以下の通り出力されました。
bash: line 1:  2755 Illegal instruction     DISPLAY=':0.0' /root/test1
 このことから、libc.so.6の問題は解決したと見てよさそうですが、エラー原因がQt(のビルド)なのかアプリ本体なのかはまだ不明です。

(>その3a・MacでのQtクロス開発できた)(2016.02.10)

 以上、紆余曲折はあったものの、とりあえず動く環境は手に入りました。(本当にこれでいいかは、ちょっと怪しいですが…)


 おわりに

 Debianが動いたことで、拡張性は大幅に向上しました。ソフトウェアの開発環境としても、それなりに使えそうではあります。
 Qtが不完全であることが判明したのは一歩前進ですが、依然、完動までのメドが立っていないのは今後の課題です。
(>その3a・MacでのQtクロス開発できた)(2016.01.02)

 なお、できるだけ整理して書きましたが、実際の作業は手戻りの嵐でした。
 出来上がったシステム(wheezy)は、かなりとっちらかったもので、使っていくうちに問題が出てくるかもしれません。
(まぁ、Linuxのことがよく分からずに、やみくもに手を出しているのがそもそもの問題ですが…)

 時間ができたら、続きをやってみたいです。

 追記:暫くQtのテストを繰り返していたところ、容量が一杯で書き込めない旨のメッセージが出るようになりました。
 変だなと思って調べたら、/var/log/syslogと/var/log/daemon.logが計350MB程度に膨れ上がっていました。
 単純に削除してしまうと問題があるようなので、ひとまず4GBのカード(ファイルシステム領域を3倍ぐらいに取ってある)を新規作成して使うようにしました。
 とはいえ、こちらでもやがて同じ問題に直面することは明らかなので、何らかの対策が必要になりそうです。(2015.12.26)


 お世話になったサイト

 有用なソフトウェアおよび貴重な情報をご提供頂いている皆様に、お礼申し上げます。(以下、順不同)

 参考サイト(1):mini2440にDebian環境をインストール
 参考サイト(2):ARM Cross Compiling with Mac OS X | Wel!s Blog(補足サイト:Illuminux/arm-cross-sysroot · GitHub
 参考サイト(3):Configuring qmake's Environment | Qt 4.8
 参考サイト(4):qemu-debootstrapを使ってユーザモードQEMUで動くDockerイメージを作ってみる - ももいろテクノロジー
 参考サイト(5):#648325 - udevd[XXX]: unable to receive ctrl connection: Function not implemented - Debian Bug report logs
 参考サイト(6):第4章 認証
 参考サイト(7):bash - "stdin: is not a tty" mails for running scripts as cron jobs - Unix & Linux Stack Exchange
 参考サイト(8):SSHサーバーが変わったら - profaim.jp
 参考サイト(9):[ARM] wire up sys_accept4() on ARM · genesi/linux-legacy@a84fac7 · GitHub
 参考サイト(10):[PATCH] arm mach-s3c2440 mach-mini2440: New LCD-W35i support | Linux | Kernel


 更新履歴

 2016.02.10 章番号を変更。
 2016.02.10 「Debian 7.0 wheezyに移行する」のQtについての記述を改訂。
 2016.01.14 「Debian 5.0 lennyをインストールする」に追記を追加。
 2016.01.02 「おわりに」のQtについての記述を改訂。
 2015.12.26 「おわりに」に追記を追加。
 2015.12.26 「Debian 7.0 wheezyに移行する」にpatchのその後と参考サイト(9)を追加。
 2015.12.09 新規作成


[Home]  [MacSoft]  [Donation]  [History]