2013年7月26日金曜日

ls-qlに4TB USB Touro接続 (1)

ls-qlは、2TB以上のUSBに対応していない。以前、パーティションを切らずに、xfsを作成、手動でmountすることで使用できるようにしたが、手動マウントするのは面倒。
直ディスクでできるなら、gptでパーティションきればできるのでは?と思って、試してみた。
USBディスクは、4TB Touro DX3。結果、できた。

partedの準備

ls-qlの付属のpartedを、Touroに対して使用すると、異常終了した。Touroは、4096 bytes/sectorであり、付属のpartedは、これに対応していないと推測。(googleで調査してそう思った)
付属のpartedは、v1.8.8なので、バージョン上げてみる。
parted v3.0のソースをダウンロード。クロス環境でビルドする。
>./configure --prefix=/usr/arm-linux-gnueabi --host=arm-linux-gnueabi --disable-device-mapper --without-readline --disable-shared
>make
>make install

/usr/arm-linux-gnueabi/sbinに、parted, partprobe が、
/usr/arm-linxu-gnueabi/libに、libparted.{a,so}がインストールされる。

隘路

./configureのときに、libuuidがないとおこられる。xaptでインストールした。
>xapt -a armel libuuid

ls-qlへのインストール

>mv /usr/local/sbin/parted /usr/local/sbin/parted.org
>mv /usr/local/sbin/partprobe /usr/local/sbin/partprobe.org
parted, partprobeを、コピー。

libparted, libuuidもコピー。

ls-ql:~# ldd /usr/local/sbin/parted
        libparted.so.1 => /usr/lib/libparted.so.1 (0x40026000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x40081000)
        libc.so.6 => /lib/libc.so.6 (0x40095000)
        libuuid.so.1 => /usr/lib/libuuid.so.1 (0x401c4000)
        libdl.so.2 => /lib/libdl.so.2 (0x401d0000)
        /lib/ld-linux.so.3 (0x40000000)
ls-ql:~# ldd /usr/local/sbin/partprobe
        libparted.so.1 => /usr/lib/libparted.so.1 (0x40026000)
        libuuid.so.1 => /usr/lib/libuuid.so.1 (0x40081000)
        libdl.so.2 => /lib/libdl.so.2 (0x4008d000)
        libc.so.6 => /lib/libc.so.6 (0x40098000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x401c7000)
        /lib/ld-linux.so.3 (0x40000000)

つづく

2013年7月13日土曜日

ls-ql EM

ls-qlにtelnet、find / -type l -exec rm {} \; してしまった。/以下のリンクが消えた。
busybox使っているので、リンク消えると、lsコマンドも使えなくなる。
リンクを作りなおすのが面倒なので、ファームウェアを入れなおすことにする。

buffaloのファームウェアアップデータを使っても更新できず。
ls-qlを再起動したら、EMモードにもならずにハマる。
tftpdでブートできたことを想い出し、tftpd用意したが、再起動してもファイルを取りに来ない。
tftpdがwindows7に対応していない?と思って、更新するが変化なし。

リンクが消えているだけなので、ブートはできてるから、EMにならないのかも。
仕方ないので、データの入っていないdisk2を、usbでwindowsにつないで、パーティションを消す。
その他のディスクは外しておく。
電源入れて、power buttonを押して、橙色が点灯、functionボタンを押したら、tftpdにファイル取りに来て、EMでブートした。
続けて、ファームウェアの更新をfwupdate.iniに、noformat を0→1, debug=1を追加して、fwupdaterを起動、fwの更新を実行したが、途中で失敗。
disk2のスロットを使っているのが悪いかも?disk1のスロットに接続して再度実行して成功。

今度は、linuxにusbで接続して、telnetをenable(①/usr/sbin/telnetdをrcSに追加、②/etc/shadowのrootのパスワードを削除)

RAIDを手動再構成

cat /proc/mdstat
mdadm -D /dev/md1
ディスク4つで、RAID1なので、構成ディスクを2つにする:
mdadm --manage --set-faulty /dev/md1 /dev/sdc1
mdadm /dev/md1 -r /dev/sdc
mdadm --grow --force -n 2 /dev/md1

認識しないディスクをゼロスーパーブロックする
mdadm --misc --zero-superblock /dev/sdc1

構成ディスクを4に戻して、ディスクを追加する:
mdadm --grow -n 4 /dev/md1 ; mdadm /dev/md1 -a /dev/sdc1 ; mdadm /dev/md1 -a /dev/sdd1 ; cat /proc/mdstat

参考

2013年5月6日月曜日

LS-QLで4TBのUSB外付けディスクを使う

4TB USB

TOURO 4TBを購入。partedでみてみると2048byt/sectorなので、AFT。
fdiskでパーティションを作成、mkfs.xfsすると2TBまで。
パーティションを作成せずに、mkfs.xfs -s size=4096 /dev/sde して、マウントすると4TB見える。
ls-qlをリブートすると勝手に上書きされるかもしれないので、リブートしてみたが、勝手に上書きされることはない。
パーティションなしのxfsは、認識されておらずマウントもされないので、mount実行。ファイルは壊れていない。
再起動毎にtelnetしてマウントする必要あるが、4TBの外付けUSBは使える模様。

partedの利用例

http://ahirustudio.sblo.jp/article/57110343.html

2012年11月11日日曜日

arm cross and native compile environment

概要

  • VMware PlayerにDebianをインストールし、armのクロスコンパイル環境を作成。
  • 作成したクロスコンパイル環境で、armのネイティブコンパイル環境を作成。

VMware PlayerへのDebianのインストール

business cardインストーラ(debian-6.0.6-i386-businesscard.iso、47MB)を使ってインストールを開始。しかし、VMware Playerが、該インストーラを認識しない。VMware Playerをバージョンアップ(4→5)したところ、Debian6として認識した。インストール問題なく完了。Debian6にログイン後、VMware Toolsをインストール。CDROMがマウントされるので、tarを展開して、sudoでインストーラを実行。sudoの設定をしていなかった。。。
sudoを設定(/etc/sudoersに、user ALL=(ALL) ALLを追加)して、VMware Toolsのインストーラを実行。
インストーラが、vmware-config-tools.plを続けて実行するか聞いてきたので、実行。
gcc, kernel headersが見つからない、パスを入力せよとのことだが、business cardで最小インストールしてるので、入ってません。空白を入力して続行した。強行すぎるかと思ったが、ウィンドウサイズの変更に対応してXの解像度が変更されるようになったのでよしとする。ユニティも使えるようになった。(ユニティを使っていたら、マウスのクリックが押されっぱなしの状態になる不具合発生。強行したせいかと、コンパイル環境、カーネルヘッダを入れて再インストールしたが、状況は変わらなかった)

gccとカーネルヘッダのインストール

gccを、(心配なので、apt-get -sで確認後、)apt-getでインストール。
$apt-get install gcc-4.4
カーネルヘッダは、インストールされているkernelと同じバージョンでないとvmware-config-tools.plが受け付けない模様。unameでバージョン確認し、apt-getでインストール。
$uname -a
Linux debian 2.6.32-5-686 ...
$sudo apt-get install linux-headers-2.6.32-5-686

はじめから、インストールしてあれば、検出してくれるかもしれないが、vmware-config-tools.plで聞かれるので、メモしておく:
gccへのパスは、/usr/bin/gcc
カーネルヘッダへのパスは、/usr/src/linux-headers-2.6.32-5-686/include

armのクロスコンパイル環境の構築

emdebianを使う。インストールしたdebian6は、squeeze。emdebian-archive-keyringをインストール、aptリポジトリにemdebianを追加、triplet nameのクロスコンパイラをインストールする、下記の通りでOK:
http://wiki.debian.org/EmdebianToolchain

クロスコンパイラ用のライブラリを用意するには、xaptが便利。これもインストールするが、squeezeでは、backportsのため、これもリポジトリに追加(http://backports-master.debian.org/Instructions/)。これも、上記のURLに書いてある通り。

armのネイティブコンパイル環境の構築

http://home1.catvmics.ne.jp/~kanemoto/linux/ls-gl-n.html
を参考にして構築。
binutilsは、書いてある通りでOKとおもわれるが、configureの--buildは指定せず。
gccは、書いてある通りにならず、下記の隘路あり:
  • コンパイルでexceptionを検出できずエラー終了。→gccのconfigureにて、--disable-sjlj-exceptions を追加して解決。
  • コンパイルでgthr-.hのターゲットルールがなくエラー終了。ファイル名がgthr-.hとなっているのがおかしい。gthreadの検出のところで、c++が見つからなくて失敗している様子。g++はインストールされているはずだったが、/usr/binに、c++filtはあるが、c++がない。→g++-4.4をインストールしたところ解決。(configureからやり直し)
gccのconfigureでも、--buildは指定せず。また、--with-cpu=arm9 と指定。

以上