約 2,401,420 件
https://w.atwiki.jp/aerocats/
Linux初心者が玄箱PROで勉強しています。 日々の細かい内容は「玄箱Pro、直します。」というブログで綴っていますが、ここではブログでは表現の難しい「修正したまとめ」を書きためていこうかと思います。 基本的にはLinux、玄箱PROが中心ですが、WindowsPCでのデュアルブート環境、仮想化等の内容にも触れたいと思っています。 あくまでも備忘録であり、自分自身(もしくは同じような初心者の方)が学習するためのメモです。 凍結ページはありませんが、全ページが編集途中ですので、間違いを正していただける方、エラー報告していただける方からの編集は大歓迎です。ご自由に編集してください。 玄箱PROのこと玄箱PROの概要Marvell 88F5182 各種メモリDDR2メモリ フラッシュメモリ カーネル U-Boot 玄箱PRO固有 標準Linux標準Linuxの構造 標準Linuxを使って各種プログラムを作動 開発用Linux開発用Linuxの構造 開発用Linuxを使って各種プログラムを作動 開発用Linuxへ各種ソースをビルド 外部との接続設定 LinuxのことLinuxとは Linuxの仕組み各ディレクトリの意味 Debian GNU/Linux 4.0Debianの構造 Debian特有のコマンド群 Debian環境を整える開発環境を万全にする 日本語環境の構築 玄箱PROの時計を合わせる Debian玄箱PROで各種プログラムを動かすリモートログイン環境の構築 webサーバの構築 ftpサーバの構築 iTunesサーバの構築 DLNAサーバの構築 FedoraCore6 コマンドコマンド一覧 シェルスクリプトシェルスクリプト一覧 エラー事例集 玄箱PROのこと 玄箱PROに関するページは以下。 玄箱PROの概要 玄箱PROの説明。玄箱PROは通称で、玄人志向の正式な商品名は KURO-BOX/PRO。 あわせて採用されているカーネルについても触れる。 玄箱PROとは 玄箱PROのスペック Marvell 88F5182 CPUとMPU ARMとは 各種メモリ 玄箱PROには2種3品の「メモリ」が搭載されている。 メインメモリとしてDDR2-SDRAM、記憶装置としてフラッシュメモリを搭載している。 特にフラッシュメモリは扱いに様々な制限やルールがあるので注意が必要。 DDR2メモリ DDR2メモリとは フラッシュメモリ フラッシュメモリとは NORフラッシュ? NANDフラッシュ カーネル OSの核を成すカーネルについて。 Linux全体の理解と玄箱PROでの振舞いを検証する。 カーネルとは? uImage.buffalo U-Boot シリアルコンソールを接続しなければ縁のない(とは言い切れないが)U-Bootという機能について。 LinuxOSとして玄箱PROが起動できるための「玄箱PRO版BIOS」だ。 U-Bootとは 環境変数について U-Bootでのコマンド 玄箱PRO固有 玄箱PROには様々な固有コントローラーが搭載されているが、それらを動作させるには汎用的なプログラムではなく、標準Linux(NANDメモリというべきか)にあらかじめインストールされている機能を流用した方がスムーズだ。 そのシステムを検証する。 シリアルコンソールとは miconaplコマンド nvramコマンド RESETボタン 標準Linux もっとも基本的で誰もが最初にお世話になるモード。 特別に何かに優れているわけではないが、コンパクトで過不足なくまとまっているがクセのあるMontavistaLinuxを検証する。 (標準Linux)標準Linuxとは 標準Linuxの構造 (標準Linux)起動メッセージ (標準Linux)各種情報 (標準Linux)ルート直下のディレクトリツリー一覧(標準Linux)binディレクトリ (標準Linux)sbinディレクトリ (標準Linux)usrディレクトリ (標準Linux)devディレクトリ (標準Linux)procディレクトリ (標準Linux)etcディレクトリ (標準Linux)varディレクトリ (標準Linux)終了メッセージ 標準Linuxを使って各種プログラムを作動 開発用Linux 新しいプラグラムを導入するなら添付CD-ROMに収められている開発用Linuxを使えばいい。 必ずしも「標準Linux<開発用Linux」ではないところがおそらく楽しくさせるポイントだろう。 (開発用Linux)開発用Linuxとは 開発用Linuxの構造 (開発用Linux)起動メッセージ (開発用Linux)ルート直下のディレクトリツリー一覧 開発用Linuxを使って各種プログラムを作動 開発用Linuxへ各種ソースをビルド (開発用Linux)lighttpdの導入 外部との接続設定 外部と接続する仕組み 外部と接続する Linuxのこと 玄箱PRO上でのLinux全般に関するページは以下。 Linuxとは 書籍やネットでたびたび耳にする「Linux」。 初心者にはなじみの薄い「ルール」や「しきたり」などにも触れつつ検証する。 Linuxとは ディストリビューションとは Linuxの仕組み ファイルシステム 各ディレクトリの意味 etcディレクトリとは Debian GNU/Linux 4.0 玄箱PROへの導入ディストリビューション実績は間違いなくNo.1だろう。 そもそもなぜDebianでなければいけないのか、また、Debianにすることでどのような恩恵にあずかれるのかを検証する。 Debianとは Debian化する理由 Debian化の方法 Debianの構造 Debian特有のコマンド群 dpkgコマンド apt-getコマンド Debian環境を整える 開発環境を万全にする 日本語環境の構築 (Debian玄箱PRO)日本語環境とは (Debian玄箱PRO)localesの導入 玄箱PROの時計を合わせる Debian玄箱PROで各種プログラムを動かす リモートログイン環境の構築 (Debian玄箱PRO)リモートログインとは (Debian玄箱PRO)telnetdの導入 (Debian玄箱PRO)sshdの導入 webサーバの構築 (Debian玄箱PRO)webサーバとは (Debian玄箱PRO)apatchの導入 ftpサーバの構築 (Debian玄箱PRO)ftpサーバとは (Debian玄箱PRO)proftpdの導入 iTunesサーバの構築 (Debian玄箱PRO)iTunesサーバとは (Debian玄箱PRO)mt-daapdの導入 DLNAサーバの構築 (Debian玄箱PRO)DLNAサーバとは (Debian玄箱PRO)mediatombの導入 FedoraCore6 コマンド WindowsPCでのGUIに慣れている人たちには敷居の高いコマンドを用いたCUI環境。 そのCUI環境を驚くほど便利に感じることができるのも、優れたコマンド群とそれをCPUに仲介するシェルのおかげだろう。 シェルとは コマンドとは BusyBoxとは コマンド一覧 ddコマンド hexdumpコマンド mountコマンド シェルスクリプト シェルスクリプトとは シェルスクリプト一覧 Fand InitDisk1.sh Kevent.sh Keventd KeventHandller.sh kuro_lib networking.sh PlayBeep.sh rcS SetupDevEnv.sh エラー事例集 (エラー)960BA8C0.img (エラー)disk is already mounted! (エラー)disk is already formatted! (エラー)RESETボタンでの初期化中、INFO LEDが点滅して作業が中断する (エラー)wget SITE NAME Unknown host (エラー)Invalid tar magic (エラー)configure error C preprocessor "/lib/cpp" fails sanity check
https://w.atwiki.jp/aerocats/pages/12.html
「玄箱PRO」とは「くろばこプロ」と読み、玄人志向というメーカーから販売されている「組込LinuxBOX」というジャンルの製品。 玄箱PROは通称で、玄人志向の正式な商品名は KURO-BOX/PRO。 2007年2月から発売されている。2013年現在は流通在庫のみとなっている。 製品紹介サイトはこちら。 Linuxベースで起動するNASだが、最初からtelnet?接続が可能となっており、ユーザーが個々にハックすることが前提となっているような商品でもある。 また、CPU?にARM?を採用しており、Linuxを熟知している人たちからすれば適度な難易度がありハック意欲をそそる。 様々な用途 玄箱PROは、特別な設定も特に必要なく、購入してすぐにNASとして使用できる(ただし、HDDは別売りなので、未装着の場合の記録先は内蔵フラッシュメモリ)。 また、書籍やネット上で様々な拡張方法が紹介されており、web、ftp、メール、iTunes、DLNA(メディア)などの各種サーバーに仕立てることも可能だ。 あとは現実的にはふさわしくはないだろうが、ARMアーキテクチャー用のプログラム開発に使うこともできる。 とにかく、スペックが低めだが静音で省電力なプラスワンPCとして使用することに優れている。 扱いやすいHDD装着方法 玄箱PROに装着可能なHDDはSATA方式で、特別なケーブルやケースも当然不要。 たちまちの拡張を考えていないのならば玄箱PROとHDDを同時に買っていればあとは何もいらない。 HDDの装着もドライバー1本あれば可能であり、電子工作などに不慣れでも購入してすぐに作業できる。 拡張のためのハードル 純粋にNASとして使用するのであればLinuxの知識はほぼ不要だが、ひとたび拡張を目指すのであればLinux初心者には恐ろしく高いハードルが待っている。 しかしそれも発売当初、まだ先人たちのハック記録が充実していない頃の状況であり、今現在は初心者でも比較的安心して目的の拡張ができるようになっている。 しかし「シリアルコンソールの半田付け」という点だけは(愚直に行けば)避けては通れない。
https://w.atwiki.jp/aerocats/pages/11.html
玄箱PROのスペックを、ハード・ソフト両面で検証する。 ハードウェアコントロール部 ネットワークインターフェイス部 SATAインターフェイス部 HDD USBインターフェイス部 LED部 その他I/F ソフトウェア ハードウェア 「KUROBOX/PRO製品仕様書」から抜粋。 コントロール部 項目 内容 CPU Marvell 88F5182 (400MHz) メモリ 128MB (32Mbits × 16bits × 2) データストレージ NOR Flash 256KiB - Buswidth 8bit(u-boot 格納用) NAND Flash 256MiB - Buswidth 8bit(rootfs用) インターフェイス - ネットワークインターフェイス部 項目 内容 インターフェイス (10BASE-T) IEEE802.3 (100BASE-TX) IEEE802.3u (1000BASE-T) IEEE802.3ab準拠 コネクタ形状 RJ-45型8極コネクタ(NICモード)×1 結線図 伝送路符号化方式 (10BASE-T) マンチェスターコーディング (100BASE-TX) 4B5B + MLT-3 (1000BASE-T) 8B1Q4 + PAM5 アクセス方式 CSMA/CD 伝送速度 (オートセンス、オートMDIX) 10Mbps 半二重/全二重 100Mbps 半二重/全二重 1000Mbps 全二重 ケーブル形状 (10BASE-T) カテゴリ3、4、5の2対又は4対UTPケーブル (100BASE-TX) カテゴリ5 2対又は4対UTPケーブル (1000BASE-T) エンハンストカテゴリ5の4対UTPケーブル SATAインターフェイス部 項目 内容 インターフェイス SATA1.0準拠 データ転送速度 最大転送速度 3Gbps HDD 項目 内容 ユニット なし(3.5inch SATA HDD 取り付け可能) USBインターフェイス部 項目 内容 インターフェイス USB2.0/1.1 データ転送速度 480Mbps コネクタ形状 シリーズA リア×2 LED部 項目 内容 PowerLED 緑色 LINK/ACT LED 緑色(100Mbps接続時),青(1000Mbps接続時) INFORMATION 黄色 ERROR 赤色 その他I/F 項目 内容 SATA(フロント) ×1(CN1) I2C ×1(CN2) PCI Express ×1 ×1(CN5) UART ×1(CN6) GPIO(09、10) ×1(CN7) マイコンポート ×1(SW3) ソフトウェア 主要ソフトウェアバージョン。「KUROBOX/PRO製品仕様書」から抜粋。 カーネルバージョン 2.6.12.6 gccバージョン 3.4.4(CodeSourcery ARM 2005q3-2) glibc 2.3.6 但し、インストールされているのは下記のライブラリのみ ld-2.3.6.so libBrokenLocale-2.3.6.so libSegFault.so libanl-2.3.6.so libc-2.3.6.so libcidn-2.3.6.so libcrypt-2.3.6.so libdl-2.3.6.so libm-2.3.6.so libnsl-2.3.6.so libnss_compat-2.3.6.so libnss_dns-2.3.6.so libnss_files-2.3.6.so libnss_hesiod-2.3.6.so libnss_nis-2.3.6.so libnss_nisplus-2.3.6.so libpthread-2.3.6.so libresolv-2.3.6.so librt-2.3.6.so libutil-2.3.6.so busybox 1.4.1 下記appletが有効になっている。 ・archival utilities ar、buzip2、cpio、gunzip、gzip、rpm2cpio、rpm、tar、uncompress、unlzma、unzip ・coreutils basename、cal、cat、catv、chgrp、chmod、chown、chroot、cksum、cmp、comm、cp、cut、date、dd、df、diff、dirname、dos2unix、du、echo、env、expr、false、fold、head、hostid、id、install、length、ln、logname、ls、md5sum、mkdir、mkfifo、mknod、mv、nice、nohup、od、printenv、printf、pwd、realpath、rm、rmdir、seq、shalsum、sleep、sort、stat、stty、sum、sync、tail、tee、test、touch、tr、true、tty、uname、uniq、usleep、uudecode、uuencode、watch、wc、who、whoami、yes ・console utilities chvt、clear、deallocvt、dumpkmap、loadfont、loadkmap、openvt、reset、resize、setconsole、setlogcons ・debian utilities mktemp、pipe_progress、readlink、run_prrts、start_stop_daemon、which ・editors awk、ed、patch、sed、vi ・finding utilities find、grep、xargs ・init utilities init、reboot、halt ・login/password management utilities addgroup、delgroup、adduser、deluser、getty、login、passwd、su、sulogin、vlock ・ext2 fs progs chattr、fsck、lsattr ・linux system utilities dmesg、fbset、fdflush、fdformat、fdisk、freeramdisk、fsck.minix、mkfs.minix ・minix filesystem support getopt、exdump、hwclock、ipcrm、ipcs、losetup、mdev、mkswap、more、mount、pivot_root、rdate、readprofile、setarch、swaponoff、switch_root、umount ・miscellaneous utilities adjtimex、bbconfig、crond、crontab、dc、eject、last、less、hdparm、makedevs、mountpoint、mt、nmeter、raidautorun、readahead、runlevel、rx、strings、setsid、taskset、time、watchdog ・networking utilities arp、arping、dnsd、ether-wake、fakeidented、ftpget、ftpput、hostname、httpd、ifconfig、ifupdown、inetd、ipaddr、iplink、iproute、iptunnel、iprule、ipcalc、nameif、nc、netstat、nsloohup、ping、route、telnet、telnetd、tftp、traceroute、vconfig、wget、zcip ・process utilities free、fuser、kill、killall、killall5、pidof、ps、renice、bb_sysctl、top、uptime ・shells ash ・runit utilities chpst、setuidgid、envuidgid、envdir、softlimit mtd-utils 1.00 bash 2.05b xfs-progs 2.5.6 e2fsprogs 1.27 samba 3.0.21c libtermcap 2.0.8 libncurses 5.2 sl --
https://w.atwiki.jp/aerocats/pages/23.html
ddコマンドとは、「ファイルを形式制御しながらコピーする※1」コマンドである。 cpコマンド?もコピーのためのコマンドだが、ddコマンドはcpコマンド?と違い「デバイス対デバイス」でもコピーが可能となっている。 この「直接デバイスへのコピー機能」を利用し、rmコマンド?では不十分な「HDDなどのデバイスの内容を消去(0をコピー)する」という使い方もある。 標準Linuxでのddコマンド 概要 helpを表示してみる。 ~ # dd --help BusyBox v1.1.1 (2007.04.06-12 02+0000) multi-call binary Usage dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N] [conv=notrunc|noerror|sync] Copy a file, converting and formatting according to options if=FILE read from FILE instead of stdin of=FILE write to FILE instead of stdout bs=N read and write N bytes at a time count=N copy only N input blocks skip=N skip N input blocks seek=N skip N output blocks conv=notrunc don t truncate output file conv=noerror continue after read errors conv=sync pad blocks with zeros Numbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024), MD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824) ~ # BusyBoxのコマンドのようだ。 ※1引用:「玄箱PROで遊ぼう!!(48ページ)」(ラトルズ)
https://w.atwiki.jp/anthony/pages/17.html
玄箱PRO-Apache Tomcat4と連携するApache1.3を導入する手順を紹介します。Tomcat4とはlibapache-mod-jkで行います。 ※事前に玄箱PRO-Java、玄箱PRO-Tomcatで導入が済んでいることが前提です。 apt-getでapacheとlibapache-mod-jkを導入します。 # apt-get install apache libapache-mod-jk /etc/libapache-mod-jk/workders.propertiesにJAVA_HOMEを設定する。 デフォルトで/usr/lib/j2sdk1.4-sunが設定されているので/usr/lib/fjsdkに修正する # vi /etc/libapache-mod-jk/workders.properties workers.java_home=/usr/lib/fjsdk /etc/apache/modules.confにLoadModule jk_moduleを追加する # vi /etc/apache/modules.conf LoadModule jk_module /usr/lib/apache/1.3/mod_jk.so /etc/apache/httpd.confにjkの設定を追加する # vi /etc/apache/httpd.conf IfModule mod_jk.c JkWorkersFile /etc/libapache-mod-jk/workers.properties JkLogFile /var/log/apache/mod_jk.log JkLogLevel info JkMount /manager/* ajp13_worker JkMount /examples/* ajp13_worker JkMount /tomcat-docs/* ajp13_worker /IfModule apacheを再起動してwgetで確認する # /etc/init.d/apache restart Restarting apache 1.3 web server.... # wget http //localhost/tomcat-docs/ --14 14 33-- http //localhost/tomcat-docs/ = `index.html Resolving localhost... 127.0.0.1 Connecting to localhost|127.0.0.1| 80... connected. HTTP request sent, awaiting response... 302 Moved Temporarily Location http //localhost/tomcat-docs/index.html [following] --14 14 35-- http //localhost/tomcat-docs/index.html = `index.html Connecting to localhost|127.0.0.1| 80... connected. HTTP request sent, awaiting response... 200 OK Length 11,916 (12K) [text/html] 100%[============================================== ] 11,916 --.--K/s 14 14 35 (2.51 MB/s) - `index.html saved [11916/11916] JK2とApache2の連携に比べたら非常にシンプルな設定で完了です。 Apache-SSL接続経由でTomcat4と連携する 玄箱PROを使って商用環境を作ることはないとは思いますが、一応試したので残します。 ※関連パッケージ7個で11.6M使用します apt-getでapache-sslとlibapache-mod-jkを導入します。 KUROBOX-PRO ~# apt-get install apache-ssl libapache-mod-jk 導入時に Country-Name の問い合わせには「JP」(国) State or Provience Name の問い合わせには「Tokyo」(県) Locality Name の問い合わせには「chuo-ku」(市) Organisation Name の問い合わせには「hogehoge Group」(組織名) Organisational Unit Name の問い合わせには「hogehoge」(部署名) Host Name の問い合わせには「www.hogehoge.com」(フルドメイン名) Email Address の問い合わせには「webmaster@mail.hogehoge.com」(Web管理者のメールアドレス) とでも回答しておきます。 でもこれだと1ヶ月で証明が切れてしまうので、別途再作成します。 KUROBOX-PRO ~# cd /etc/apache-ssl KUROBOX-PRO /etc/apache-ssl# openssl genrsa -des3 -out server.key\ -rand rand.dat 1024 KUROBOX-PRO /etc/apache-ssl# openssl req -new -key server.key -out server.csr KUROBOX-PRO /etc/apache-ssl# openssl rsa -in server.key -out server.key KUROBOX-PRO /etc/apache-ssl# openssl x509 -in server.csr -out server.crt\ -req -signkey server.key -days 3650 KUROBOX-PRO /etc/apache-ssl# openssl x509 -in server.crt\ -out server.der -outform DER KUROBOX-PRO /etc/apache-ssl# vi httpd.conf SSLCertificateFile /etc/apache-ssl/server.crt SSLCertificateKeyFile /etc/apache-ssl/server.key /etc/libapache-mod-jk/workders.propertiesにJAVA_HOMEを設定する。 デフォルトで/usr/lib/j2sdk1.4-sunが設定されているので/usr/lib/fjsdkに修正する # vi /etc/libapache-mod-jk/workers.properties workers.java_home=/usr/lib/fjsdk /etc/apache/modules.confにLoadModule jk_moduleを追加する(もしくはあるかを確認) # vi /etc/apache-ssl/modules.conf LoadModule jk_module /usr/lib/apache/1.3/mod_jk.so /etc/apache/httpd.confにjkの設定を追加する # vi /etc/apache-ssl/httpd.conf IfModule mod_jk.c JkWorkersFile /etc/libapache-mod-jk/workers.properties JkLogFile /var/log/apache/mod_jk.log JkLogLevel info JkMount /manager/* ajp13_worker JkMount /examples/* ajp13_worker JkMount /tomcat-docs/* ajp13_worker /IfModule apacheを再起動します 関連パッケージ KUROBOX-PRO ~# apt-get install apache-ssl libapache-mod-jk Reading package lists... Done Building dependency tree... Done The following extra packages will be installed apache-common lynx mime-support openssl ssl-cert Suggested packages apache apache-perl apache-doc libapache-mod-jk-doc ca-certificates The following NEW packages will be installed apache-common apache-ssl libapache-mod-jk lynx mime-support openssl ssl-cert 0 upgraded, 7 newly installed, 0 to remove and 15 not upgraded. Need to get 4335kB of archives. After unpacking 11.6MB of additional disk space will be used. Do you want to continue [Y/n]? 最終更新日:2007-06-05
https://w.atwiki.jp/aerocats/pages/22.html
玄箱PROの本体背面にある赤いボタンがRESETボタンだ。 動作内容 HDDの初期化シリアルコンソールでのログ telnetでのログ パーティションの状態 動作を追跡する エラー 動作内容 標準Linuxでのこのボタンの動作順序は以下となる。 システム起動時に/etc/init.d/rcSが/etc/init.d/Kevent.shを実行する /etc/init.d/Kevent.shが/usr/local/sbin/Keventdを起動する /usr/local/sbin/Keventdはデーモンとして常駐しカーネルイベントを参照、変化があっても無くても常にその結果を/usr/local/bin/KeventHandller.shに渡す その都度呼び出された/usr/local/bin/KeventHandller.shはLANの状態と、miconaplコマンドで電源ボタン・RESETボタンを監視しており、RESETボタンを押されたことを認識すると/usr/local/bin/InitDisk1.shを実行する これらの動作は標準Linuxで完備されており、独自にユーザーランドを構築した場合はこの機能は失われる。 必要であれば導入するしかない。 HDDの初期化 Linuxの形式に初期化されていなければRESETボタンの長押しでHDDの初期化が開始される。 シリアルコンソールでのログ ~ # SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back sda sda1 SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back sda sda1 XFS mounting filesystem sda1 ~ # telnetでのログ telnetではコンソール上には何も表示されない。ある程度のタイミングを見計らってmountコマンドででも確認すればいいだろう。 パーティションの状態 fdiskコマンド?で確認してみる。 ~ # fdisk /dev/sda The number of cylinders for this disk is set to 9729. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help) p Disk /dev/sda 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 9729 78148161 83 Linux Command (m for help) パーティション?は1つだけ切られている。デバイス名は「/dev/sda1」となる。 次にmountコマンドで確認する。 ~ # mount | grep sda1 /dev/sda1 on /mnt/disk1 type xfs (rw) ~ # xfs形式で/mnt/disk1にマウントされている。 動作を追跡する エラー RESETボタンを長押しすることで発生するエラーには以下のパターンがある。 KeventHandller.sh(InitDisk1.sh)が反応する既定のエラーだけを列記するので、独自に記述したシェルスクリプトなどは考慮しない。 (エラー)disk is already mounted! (エラー)disk is already formatted! (エラー)RESETボタンでの初期化中、INFO LEDが点滅して作業が中断する
https://w.atwiki.jp/anthony/pages/13.html
玄箱PRO-Java 玄箱PROはarmアーキテクチャなので利用できるJava環境の選択肢が少ない。 まず、今まで当たり前のように使用してきたSunのJDKがありません。さらに玄箱で使用していたPowerPC用のIBM-JDKも使えません。 (2007.12.25追記) Sunから評価版のARM/Linux版のJREが提供されています。説明を追加しました。 SunのJREを使う JDKはありませんが、SunからJREの評価版(http //java.sun.com/javase/embedded/index.jsp )を入手できます。(2007.12.25時点) ARM - Headless をクリックして幾つかの質問に答えたあと、ダウンロードすることができ、90日間の試用が可能です。 デフォルトでは使用可能文字コードが限られているので、x86版のJRE1.4.2に付属しているcharsets.jarを/opt/j2re1.4.2/libに追加するとほとんどの文字コードが使用できるようになります。 私の環境ではWindowsでダウンロードしたj2re-1.4.2_11-eval-b06-min-linux-arm.tar.gzをFTPで玄箱PROに転送して/optに展開しました。一緒にi386版のJRE1.4.2_12からcharsets.jarも/optに転送しています。 KUROBOX-PRO ~# cd /opt KUROBOX-PRO /opt# tar zxvf j2re-1.4.2_11-eval-b06-min-linux-arm.tar.gz KUROBOX-PRO /opt# cp charset.jar j2re1.4.2/lib KUROBOX-PRO /opt# export PATH=$PATH /opt/j2re1.4.2/bin KUROBOX-PRO /opt# java -version java version "1.4.2_11-eval" Java(TM) 2 Runtime Environment, Standard Edition for Embedded (build 1.4.2_11- eval-b06, headless) J2SE (build 1.4.2_11-b06, mixed mode) Evaluation version, 90 days remain in evaluation period ※2日間使用した後、java -versionで確認したら KUROBOX-PRO /opt# java -version java version "1.4.2_11-eval" Java(TM) 2 Runtime Environment, Standard Edition for Embedded (build 1.4.2_11- eval-b06, headless) J2SE (build 1.4.2_11-b06, mixed mode) Evaluation version, 88 days remain in evaluation period となりましたが、再び入手したtar.gzのファイルを展開したら90 daysに戻りました。どうやって残りの日数をカウントしているのでしょうか。 私は一度セットアップしてあったfree-java-sdkは削除しました。 かなり沢山のモジュールが導入されているので、すっきりきれいになりました。 SunのJREの使用感ですが、free-java-sdkで使用していたよりもストレスなく動作するようになった感じがします。 これに伴いJREだけで動作するTomcat5.5に移行しましたが、もったり感がなくなっています。 Sun以外のJDKを使う Debianのapt-getで入手できるarm対応Java環境で私が唯一Tomcatでの利用を確認できたのはfree-java-sdkだけです。 ※free-java-sdkの実体はSableVM ※関連パッケージ51個で83.7M使用します まずJava導入時の/etc/apt/sources.listの内容を確認 KUROBOX-PRO ~# vi /etc/apt/sources.list deb http //ftp.jp.debian.org/debian etch main contrib non-free deb-src http //ftp.jp.debian.org/debian etch main contrib non-free deb http //security.debian.org etch/updates main contrib non-free deb-src http //security.debian.org etch/updates main contrib non-free etchのmain contrib non-freeがあれば良いでしょう。 次にapt-getでfree-java-sdkの内容を確認 KUROBOX-PRO ~# apt-get update KUROBOX-PRO ~# apt-cache search free-java-sdk free-java-sdk - Complete Java SDK environment consisting of free Java tools KUROBOX-PRO ~# apt-cache depends free-java-sdkfree-java-sdk Depends jikes-sablevm Depends fastjar Depends sablevm Depends classpath-tools Suggests gjdoc Recommends libgnujaxp-java Conflicts sablevm 気になるならapt-cache show free-java-sdkで確認してみても良いです。 最後にapt-getでfree-java-sdkを導入する KUROBOX-PRO ~# apt-get install free-java-sdk KUROBOX-PRO ~# java -version SableVM version 1.13 - compile date and time 2006-09-09 15 34 20 UTC - gcc version 4.1.2 20060901 (prerelease) (Debian 4.1.1-13) - real life brokenness features enabled - signal based exception detection - copying garbage collection - bidirectional object layout - direct-threaded interpreter Tomcatから利用されるときはjava-sablevm経由になります。 引数やオプションはman java-sablevmで確認してください。 VMヒープサイズ指定がSunと異なるので気をつけましょう。下のは最大ヒープサイズ64Mを指定する場合の引数指定です。 java-sablevm -Dsablevm.heap.size.max=64000000 Class-Name 関連パッケージ ここまでの手順で導入されたパッケージを忘れないようにするためにここに残します。 あとで何に必要で、何で必要だったか分からなくなってしまうことが多かったのでメモは残すほうがいいですね。 KUROBOX-PRO ~# apt-get install free-java-sdk Reading package lists... Done Building dependency tree... Done The following extra packages will be installed classpath-tools defoma fastjar file fontconfig fontconfig-config java-common jikes jikes-sablevm libatk1.0-0 libcairo2 libexpat1 libffi4 libfontconfig1 libfreetype6 libglib2.0-0 libgtk2.0-0 libgtk2.0-common libice6 libjpeg62 libltdl3 libmagic1 libpango1.0-0 libpango1.0-common libpng12-0 libsablevm-classlib1-java libsablevm-native1 libsablevm1 libsm6 libtiff4 libx11-6 libx11-data libxau6 libxcursor1 libxdmcp6 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxtst6 perl perl-modules sablevm ttf-dejavu ucf unzip x11-common Suggested packages defoma-doc psfontmgr x-ttcidfont-conf dfontmgr gjdoc equivs libfreetype6-dev ttf-kochi-gothic ttf-kochi-mincho ttf-thryomanes ttf-baekmuk ttf-arphic-gbsn00lp ttf-arphic-bsmi00lp ttf-arphic-gkai00mp ttf-arphic-bkai00mp libsablevm1-dev libterm-readline-gnu-perl libterm-readline-perl-perl zip Recommended packages libft-perl libgnujaxp-java libatk1.0-data libglib2.0-data hicolor-icon-theme libgtk2.0-bin perl-doc debconf-utils The following NEW packages will be installed classpath-tools defoma fastjar file fontconfig fontconfig-config free-java-sdk java-common jikes jikes-sablevm libatk1.0-0 libcairo2 libexpat1 libffi4 libfontconfig1 libfreetype6 libglib2.0-0 libgtk2.0-0 libgtk2.0-common libice6 libjpeg62 libltdl3 libmagic1 libpango1.0-0 libpango1.0-common libpng12-0 libsablevm-classlib1-java libsablevm-native1 libsablevm1 libsm6 libtiff4 libx11-6 libx11-data libxau6 libxcursor1 libxdmcp6 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 libxtst6 perl perl-modules sablevm ttf-dejavu ucf unzip x11-common 0 upgraded, 51 newly installed, 0 to remove and 15 not upgraded. Need to get 1434kB/26.6MB of archives. After unpacking 83.7MB of additional disk space will be used. Do you want to continue [Y/n]? 最終更新日:2007-12-25
https://w.atwiki.jp/anthony/pages/30.html
玄箱PROのDebian化
https://w.atwiki.jp/anthony/pages/12.html
玄箱PRO-Debian化 準備中 準備中 最終更新日:2007-05-02
https://w.atwiki.jp/aerocats/pages/53.html
RESETボタンを押しHDDに開発用Linux(あるいは何らかのディストリビューション導入キット)を導入しようとした際、コンソール上では何も進まなくなりINFO LEDもオレンジの点滅が止まる気配がない、といったエラーが起こることがある。 この時mountコマンドで確認してもHDDはマウントされておらず、ただfdiskコマンド?で確認すると4つのパーティション?に切られていることがわかっている。 そして開発用Linuxのhddrootfs.tar.gzも展開されていないはずだ。 原因HDDの取り付け後 パーティションを切る 各パーティションをフォーマットし、開発用Linux導入完了 fdiskコマンドでパーティション解放 InitDisk1.shのチェックを抜ける パーティションを切る 各パーティションをフォーマットする /etc/melco/infoを用意する 対処 原因 一度、開発用Linuxを導入し何らかの事情で再度開発用Linuxを導入する際によく見受けられるエラーだ。 この時、共通して見られる行為は 標準Linuxからのブートになっている HDDはfdiskコマンド?でパーティション?を解放している dd if=/dev/zero /dev/sda bs=1M count=1と実行している場合もある などだろう。 ここで玄箱PROのHDDがどのように処理されているのか追ってみる。 HDDの取り付け後 まずは未フォーマットのHDDがある。 もちろんこのままではHDDとして機能はしない。(必要に応じて)パーティション?を切り、ファイルシステムを導入(フォーマット)しないと役に立たない。 パーティションを切る /usr/local/bin/InitDisk1.sh内の処理で、 fdisk ${DISK1_DEV} /usr/local/bin/PartitionDefinition を実行しパーティション?を4つに切る。 HDDの先頭512バイトにパーティションテーブルを含むMBRが確保される。 各パーティションをフォーマットし、開発用Linux導入完了 続けて/usr/local/bin/InitDisk1.shが呼び出した/usr/local/bin/kuro_lib内のFormat_EXT3関数、Format_XFS関数、そしてmkswapコマンド?でそれぞれのパーティション?を適宜フォーマットしていく。 この際に重要なのは、各パーティション?の先頭512バイトにブートセクターが置かれることだ。 ext3形式のブートセクターには何も記録されていないが、xfs形式のブートセクターの先頭3バイトには「XFS」という文字列が入る(余談だが、このためxfs形式の上からext3形式をフォーマットしても先頭の「XFS」という文字列が残る)。 この後、各種ファイルの展開などがあり開発用Linuxの導入も終わる。 fdiskコマンドでパーティション解放 HDDのマウントをはずし、fdiskコマンド?でHDD先頭のパーティションテーブルを書き換え(消去し)、各パーティション?の「壁」を取り払う。 しかしこのままであれば、基本領域であったパーティション?の中のデータそのものはフォーマットされない限り消えることはない。 ここで重要なのは「パーティション?は存在しないがsda2とsda4の先頭領域だった場所には「XFS」という文字列はそのまま残っている」という点だ。 そしてこの状態で再度の開発用Linuxの導入をするため、RESETボタンを押すとどうなるか続けてみる。 InitDisk1.shのチェックを抜ける /usr/local/bin/InitDisk1.shのXFSフォーマットチェックの方法は以下だ。 XFS_FORMATTED=`dd if=${DISK1_DEV} bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted XFS_FORMATTED=`dd if=${DISK1_DEV}1 bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted XFS_FORMATTED=`dd if=${DISK1_DEV}4 bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted つまり、/dev/sda、/dev/sda1、/dev/sda4の先頭に「XFS」という文字列がなければ「フォーマットされていない」と見なされる。 この時のHDDの状態は下のようになっている。 /dev/sdaは存在するが先頭に「XFS」という文字列はなく、/dev/sda1、/dev/sda4に関してはそもそもそのようなデバイスが存在しない。 よってこの状態のHDDは/usr/local/bin/InitDisk1.shの初期チェックを通過してしまう。 パーティションを切る その次に待っているのはパーティション?を切る処理だ。 fdisk ${DISK1_DEV} /usr/local/bin/PartitionDefinition この処理後、HDDは以下のようになる。 /usr/local/bin/PartitionDefinitionを変更して実行しない限り、以前とまったく同じパーティション?の切り方になるはずだ。 各パーティションをフォーマットする 次に/usr/local/bin/InitDisk1.shはFormat_EXT3関数とFormat_XFS関数を呼び、それぞれext3形式とxfs形式にフォーマットを始める。 Format_EXT3関数にはチェック項目はないため、/dev/sda1は問題なくext3形式でのフォーマットが完了する。 しかしFormat_XFS関数は再度ここでxfs形式フォーマットのチェックを行う。 KEY=`dd if=$1 bs=1 count=3` if [ "${KEY}" = "XFS" ] ; then チェック対象デバイスの先頭3バイトを読み込み、それが「XFS」であれば別の処理が待っている。 この時、HDDは以下のようになっている。 /dev/sda1、/dev/sda3はフォーマットする、という意味で空白にしている。 /dev/sda2、/dev/sda4は、ちょうど先頭3バイトに「XFS」が入る形になっている。 よって次の処理を実行する。 . /etc/melco/info /etc/melco/infoというファイルを開く、という意味だが、このファイルは標準では存在しない。 製品仕様書にもあるが、 内蔵HDD(/dev/sda)が既にxfs形式でフォーマットされている場合、フォーマットは行われない。但し、/etc/melco/info内、 force_format=yesとすることで、xfsでフォーマットされている/いないにかかわらず、フォーマットを行うようにすることができる。 とのことで、任意のファイルだ。 このファイルがないため、多くは内部的にここで止まっている。 これが処理が止まり、INFO LEDが点滅しつづける原因だ。点滅を止めるmiconaplコマンドに到達していないのだ。 この図のような状態に、実際は/dev/sda1のext3形式でのフォーマットが済んでいるため、/dev/sda3以外のパーティション?はすべて手動でマウントできる。 その後で、INFO LEDを止めるため miconapl -a led_set_code_information clear とすればいい。 /dev/sda3は mkswap /dev/sda3 swapon /dev/sda3 でswapを有効にできる。 ただし、開発環境はHDDに一切展開されていないので注意が必要だ。 /etc/melco/infoを用意する これを回避するため/etc/melco/infoを用意した場合、次の処理を通る。 if [ "${force_format}" = "yes" ] ; then 確認のため10秒間のタイマーが始動 else return 0 fi (略) dd if=/dev/zero of=$1 bs=512 count=1 mkfs.xfs $1 -f /etc/melco/infoに「force_format=yes」と記述していれば、先頭の512バイト(つまりブートセクター)を消去しxfs形式でのフォーマットが始まる。 しかし、/etc/melco/infoが「force_format=no」あるいは記述がない場合、elseを通りreturn 0、つまりFormat_XFS関数を抜けさせられ、あとに続くmkfs.xfsコマンドは実行されない。 つまり、/dev/sda2、/dev/sda4にフォーマットは施されないのだ。 この時のHDDは以下。 パーティション?を切る前のファイルシステムがそのまま使えてしまうため、一見mkfs.xfsが処理されたように思えるためわかりにくいが、/dev/sda2と/dev/sda4は実は前回の開発用Linuxのままなのだ。 そこにデータが残っていれば扱うことができる。 対処 /etc/melco/infoを用意し、force_format=yesと記述しておけばいい。 ~ # mkdir /etc/melco ~ # echo force_format=yes /etc/melco/info これでFormat_XFS関数を通過できる。 現時点でINFO LEDが点滅している場合、fdiskコマンド?で全パーティション?を解放し、上の/etc/melco/infoを用意して一度再起動し、再度RESETボタンを押せば開発用Linuxを導入できるだろう。 また各種Debian化キットなどもシリアルコンソールの世話になることなく導入できるのではないだろうか。