So-net無料ブログ作成
検索選択
プログラム 記事一覧(10件ずつ)

cpコマンドの-Pと--parents [プログラム]

cpコマンドに、確か、ツリーでなく単一ファイルの場合でも

ソース同様のディレクトリを作ってコピーする

という機能があったはずだ、と思って探しました。

cp そのオプション a/b/c existing_dir

とすると、 existing_dir/a/b/c が作られるというオプションです。

で、man cpすると、以下のとおり。

$ man cp
       -P, --parents
              コピー先のファイル名の作り方を  「コピー先ディレクトリにスラッシュ (/) とコピー元ファイルの名前を加える」 とする。 cpの最後の引き数は既に存在するディレクトリでなければならない。 たとえば、
              cp --parents a/b/c existing_dir
              というコマンドは `a/b/c'というファイルを `existing_dir/a/b/c' に (途中のディレクトリがない場合はそれも作って) コピーする。

GNU fileutils 4.1           18 June 2002                       CP(1)

ところが、cp -P しても、この日本語のman cpにあるような動作をしてくれません。
そんなバカな!? cpコマンドのオプションに「こんなあからさまなバグ」があるという確率は1%以下でしょう。
となると、「日本語のman cpにバグがある」という確率が99%です。
$ LANG=C man cp
       -P, --no-dereference
              never follow symbolic links in SOURCE
       --parents
              use full source file name under DIRECTORY

GNU coreutils 8.5            April 2010                        CP(1)


なるほど。英語のman cpによると、-Pと--parentsは「まったく別物」ですね。
manの日付から推測すると、2002年当時は-Pと--parentが同一機能だったのですが、その後のある時点から、-Pと--parentが「別機能」になった、ということのようです。

その「英断」は、ちょっと疑問ですね。
lsの「混乱したオプション」や、topの「BSD形式、sysV形式オプション」などが、どうして今の今まで残っているのか、なぜ変えられなかったのかを考えれば、すぐわかることでしょう。



共通テーマ:パソコン・インターネット

起動後毎回fsckが実行される [プログラム]

以前、「ext3のリカバリ後に常にfsckを要求される」ということでその対策をしました。

今度は先ほどの修正を入れていない別のマシンで「起動後にext4で常にfsckを要求される」ということが起こりました。

… もういいや、わかった、あんたの勝ちだ。RTCを、ロカールタイムじゃなくてUTCに変えてやるよ、この野郎。

というわけで、まず、念のため、GPartedLiveでfsckをかけて(もちろん、エラーはありません)、起動し直します。
その後、root
# hwclock -w -u
で、UTCで書き込みます。/etc/adjtimeの中の1行が、LOCALからUTCに書き換わったはずです。
起動し直して確認します。

不本意ですが、これで問題は消えたようです。

共通テーマ:パソコン・インターネット

HDDが何度もremountされる [プログラム]

数ヶ月くらい前から、次のようなメッセージがでて、何度もrootfs (sda5)がremountされます。
ひどいときは、うまくリマウントできずに、rootfsがReadOnlyになってしまったこともあります。
[   44.800073] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[   47.657573] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro,data=ordered,commit=0
[  100.544381] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro,data=ordered,commit=600
[  109.273810] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[  109.520745] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro,data=ordered,commit=0
[  171.059881] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro,data=ordered,commit=600
[  179.703594] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[  179.951929] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro,data=ordered,commit=0
[  217.335418] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro,data=ordered,commit=600

HDDがおかしいのかと思って別のメーカーのものに交換したのですが、同じエラーが出つづけます。

EXT4-fs: re-mounted. Opts: errors=remount-ro,data=ordered,commit=0
でググってみても、意味のない情報ばかりでした。ひょっとして
NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
が関係あるかも?と思って調べましたが、それは単にそのメッセージを出さないように、NMI watchdogを停止するだけのものでした。
ふと、psでプロセスをみると、
/bin/sh /usr/sbin/laptop_mode auto
がたくさん走っています。なんじゃこりゃ。それらのプロセスをkillして
laptop_mode status
してみると、
Mounts:
   /dev/sda5 on / type ext3 (rw,relatime,errors=remount-ro,data=ordered)
と、先頭に表示されています。ははーん、なるほど。どうやら
NMI watchdog発生 -> laptop_mode再起動 -> なにかエラーで止まってる -> NMI watchdog発生 -> laptop_mode再起動 -> ...
のようです。

ほほぅ。となると、もともとも原因は、このノートPCが古くて、バッテリーがダメになっていることのようです。バッテリーを買おうにも、このメーカーはモデルチェンジが激しくてすぐにPCもサプライも廃品にしてしまいます。そのため、バッテリーを交換しなければならない時期には、すでにバッテリーの入手ができません。これで満足度がどうとか言われてもなー、という感じです…。仕方ないので互換バッテリーを買ったのですが、半年程度でダメになり、交換してもらってもやはり同じく、ダメになりました。結局、ノートPCは、AC必須になってしまいました。持ち出すにもACアダプタが必須です。PCの寿命って、このように本体よりも周辺で決められるのです。必要なタイプのRAMがもう売ってないとか、容量やインターフェースの問題でHDDがつながらないとか、…。

話が逸れましたが、対策としては、
  • NMI watchdogを止める
    https://bbs.archlinux.org/viewtopic.php?id=159733
    に、何通りかの方法があります。が、私の所ではNMI watchdogを止めることができませんでした。
  • laptop_modeを止める
    パッケージを削除するか、起動(/etc/init.d/laptop_mode)を止めるか、など、いくつかの方法が考えられます。私はこの方法をとりました。
が考えられますが、ほんとうは
  • バッテリーを交換する
が正しいのです。ただ、その対策は今や不可能です。


共通テーマ:パソコン・インターネット

仮想ディスクを圧縮して分割する [プログラム]

もらった仮想環境のディスクイメージ(debian)が、5GB強もありました。
まず、ファイルサイズが大きすぎて、DOSフォーマットされたUSBメモリに書き込めません。
それに、仮想環境内で作業ファイルを削除したところ、実際の使用量は1GB程度少なく、4GBを下回っているようです。

仮想ディスクを圧縮してみましょう。そして、仮想ディスクを「2GBごとに分割したタイプ」に変更しましょう。

まず圧縮ですが、
VMwareでは、VMware toolsをインストールすれば
vmware-toolbox-cmd disk shrink /
で圧縮できたはずです。が、うまくVMware toolsがインストールできませんでした。

ならば、VirtualBoxのツールでなんとかしましょう。しかも、VirtualBoxを起動することなしに、です。
VirtualBoxのツールであるvboxmanageは機能が豊富で、いろいろな仮想ディスクイメージの操作ができます。これを使います。

しかしながら、VirtualBoxのツールでは、直接仮想ディスクイメージを圧縮する方法は提供されていないようです。一度、未使用領域を0クリアする必要があり、少々手順が煩雑です。

ということで、以下は、その備忘録です。

流れとしては、
  1. 仮想ディスクをRAWイメージに変換する
  2. RAWイメージ内の各パーティションをマウントして、未使用領域を0クリアする
  3. RAWイメージを2GBごとに分割したタイプに変換する(このときに圧縮される)
となります。


1. 仮想ディスクをRAWイメージに変換する

次のコマンドを使います。infileには、元の仮想ディスクイメージのファイルを指定します。
vboxmanage clonehd infile outfile.raw --format RAW

ただし、VirtualBoxを使っている場合には、もし、infileと同じUUIDの仮想システムを登録していたら、「同じUUIDがすでにある」と言われて実行できません。この場合には、
vboxmanage list hdds
で、登録している仮想システムのUUIDをチェックします。必要ならば、同一のUUIDを持つ仮想システムを削除するなどで対応します。

できたRAWイメージを確認します。
file outfile.raw
すると、まさにhddのrawイメージになっているのが確認できるでしょう。

次に、パーティションを確認します。
fdisk -lu outfile.raw
正しくパーティションが表示されていればOKです。


2. RAWイメージ内の各パーティションをマウントして、未使用領域を0クリアする

以下は、losetupを使う方法ですが、kpartxを使ったほうが簡単そうです(実際に試したわけではありません)。

直接mountする方法もあります。
mount outfile.raw /mnt -o loop,offset=オフセットバイト
しかし、ここでは安全のため、それを手動で行ないます。
まず、マウントしようとするパーティションをloopデバイスに割り当てます。
losetup /dev/loop0 outfile.raw -o オフセットバイト
ここで、loop0は未使用のループデバイスを指定します。
また、オフセットバイトは、マウントしようとしているパーティションが 2048(セクタ)からなら、2048*512=1048576です。

割り当てができれば、
file -s /dev/loop0
として、マウントしようとしている目的のファイルシステムであることを確認します。
そして、念のため、ファイルシステムをチェックしたほうがよいでしょう。
fsck -f /dev/loop0
異常がなければ、マウントします。
mount /dev/loop0 /mnt

マウントしたら、未使用領域をゼロクリアします。bsは指定しないほうがよいです。
dd if=/dev/zero of=/mnt/.zero.fill bs=4k
パーティションを埋め尽くしたらエラーで終了しますので、それまで待ちます。

ディスクへちゃんと書き込んだあと、ゼロクリアに使用したファイルを削除します。
sync; sync; sync
rm /mnt/.zero.fill

マウントを解除し、ループデバイスへの割り当てを解除します。
umount /mnt
losetup -d /dev/loop0


3. RAWイメージを2GBごとに分割したタイプに変換する(このときに圧縮される)

次のコマンドを使います。分割(2GBごとに)の指定もします。

vboxmanage convertfromraw outfile.raw outfile.vmdk --format VMDK --variant Split2G
.vmdkは圧縮されたファイルになります。

最後に、出来上がったファイルが問題ないか、VitrualBoxなどで新しい仮想マシンを作ってHDDとして指定して、確認します。


共通テーマ:パソコン・インターネット

xfce上のKateのメニューフォントが異常 [プログラム]

1週間ほど前のことです。
急にKate テキストエディタのメニューが筆記体の小さな文字に切り替わってしまいました。

qt-font-default.jpg

 

あー、そういえば、apt-get upgradeしたっけ… あーあ。


今は、xfceを使っています。GNOMEは「捨てました」。理由は簡単です。「立ち上がらなくなったから」。
何か変です、って言われても、とにかく立ち上がるだけはしてくれないと、何もできないんですがね。
以前も同じトラブルがあって、そのときは、ずーっと追っていったのですが、もうそんな「無駄」な時間はとれません。xfceに乗り換えるほうが早いのですから。

で、GNOME2時代にずーと使っていたgeditは? というと、実はこいつもはっきり言って使えねー奴で、だましだまし使っていたんですが、Kateというのを見つけてそっちに乗り換えたのです。geditの何が悪いって、文字のエンコーディングで誤りを見つけると絶対に開けない、ということです。viみたいにユーザの責任で「無理やり開く」のは、できて当然と思っていたのですが、そうではないようです。nkfを2回使って直すのも面倒ですし(必ず直るわけでもないですし)、他のテキストエディタ、Kateに乗り換えました。

GNOME3は言うに及ばず、初期のころから、geditやnautilusなどの「問題が多すぎるプログラム群」が気になって、いくつかは自分で「直していた」のですが、もういいでしょう。他のマネージャ、xfceに乗り換えました。


で、今日(1週間前)、立ち上げると、急にメニューが筆記体の小さな文字に切り替わってしまいました。Kateだけ。
あぁ、KateはKDEのアプリだから、KDEの何かがアップデートされて、フォントの設定を初期化しやがったんだな、aptさんよ、と思い、KDE System Settingの中で、フォント設定を探して(筆記体の小さな文字だから、読みにくくて読みにくくて、一瞬、KDEのフォントメニューから普段使う1つを除いて全部削除してやろうかと思ったくらいです)、VL Pゴシックに設定しました。
が、変わりません。Xを再起動しても変わりません。あれ?

どうしたものか…と思っていたとき目に止まったのが、Qt4設定です。あぁ、こっちですね。早速開いて、フォントの設定を変えます。あれれ、ApplyもOKボタンもないんだけど…。メニューの中のファイルの「保存」でした。なんじゃこりゃ。直感的じゃないですねー。ちゃんとヒューマンインターフェースガイドラインを読んで、再考をお願いしたいです。



共通テーマ:パソコン・インターネット

Haswell i5マシン組立て [プログラム]

安く、かつ、適度な性能を、を目標にマシンを組み立てることにしました。マシンは、主にサーバ用途で、運用時にはディスプレイは接続しません。
CPU、マザーボード、メモリ、電源、ファンを新規購入し、ケースとHDDは再利用します。
また、今回は、通販で品揃えとし、さらに、送料と受け取りの関係で、可能なら1店だけで揃えます。

まず、どんなマシンにするかを考えます。OSはlinux (Debian)です。
  • CPU 4コア〜
  • メモリ 4GB〜
  • 大きめのCPUクーラー (メンテナンスフリーとするため)
それから、
  • マザー 特にこだわらず
  • 電源 問題なさそうなもの
という感じです。メモリは、今回の用途では4GBでも十分です。価格次第というところでしょう。
CPUの種類を決めたら、他が自動的に決まってきそうです。

まず、CPUの選定です。
AMDは選択肢にはありません。私の用途ではFX-8300が大ハズレで、それ以外に使ったことのあるAMDもやはりどれも「私の用途では遅い」ためです。Intelとなると、XeonはゴツすぎでCeleronとi3は非力すぎです。i5かi7かの選択ですが、実際にi7を使った場合の性能はというと、私の用途では、実質4.3コア程度の性能しかありません。よって、i7とi5の性能差(0.3コア分)が、その価格差に見合うものか?という判断になります。つまり、1割未満の価格差ならば検討の余地があるわけですが… 現在の価格差は論外ですね。
ということで、CPUはi5(4コア)となりました。さて、IvyかHaswellか、ですが、消費電力も性能も価格差も目立った違いはありません。しかしながら、大問題が。i5は「入手可能」なものが限られているのでした。Ivyはかなり入手が難しくなっています。
ということで、「入手可能」なi5から選ぶこことにします。さて、クロックはというと、Intelではオーバークロックの必要性も低いので、オーバークロックなしでクロックの高いもの、となります。
ということで、i5-4670に(仮)決定です。

次にマザーボードです。
一番安いものからチェックします。... 気になったのは、RAMスロットが2つしかない、PCI-eが2つしかない、ですが、今回の用途では特に問題ありません。PCI-eは、せいぜいネットワークボードを追加する程度でしょうから。
ということで、MSI H81M-P33を選択し、この時点で、CPUが(仮)決定から、決定となりました。

次はメモリです。
CPUで速いものを選んだから、メモリも速いほうがいいかなと思ってチェックすると… 4GB(2GBx2)は売り切れでした。容量と価格差を考えると、8GB(4GBx2)のほうがビット単価が安かったのと、RAMスロットが2つなので、それらを勘案して、8GB(4GBx2)としました。
ということで、メーカー問わずの8GB(4GBx2)となりました。

次は電源です。
Haswellは、Haswell対応の電源が必要です(やや高い)。が、新設された省電力モードを使わないのであれば必要ありませんし、従来の電源でも問題なく動作するものも多いです。そもそも、CPUをスリープさせることがないサーバなので、Haswell対応の必要はありません。また、このマシンでは、グラフィックボードは接続しませんから、電源も大きくなくて大丈夫です。入手可能なものから、メーカーのサイトを調べて、Haswellでも「一応」動作可ということでしたので、それに決定しました。念のため500W品にしました。

次はCPUクーラーです。
適価で冷却性能が高いもの。ファンは12cm以上。メンテナンスフリーとするためです。
i7でリテールクーラーだと、常に70度という「冷えてない」状況です。さらに、そのi7よりもTDPがちょっとだけ大きいので、クーラーを買うことにしました。

以上は、もちろん、いくつかの通販ショップのWebページを見ながら決めていったわけですが、いくつかの要素を考慮した結果、最終的にTSUKUMOにしました(次点はAmazonでしした)。翌日出荷にならないと言われながらも結局翌日出荷でした。

組み立て自体は特に問題なくすんなりあっさりと動きました。
  • CPUクーラーは、少し背が高すぎでした。ほぼケースの幅いっぱいです。側面パネルを外したまま使う予定だったから問題はなかったのですが、注意が必要です。
  • 電源が上下逆さまになりました。ケースの電源取り付け穴がそうなっていたためです。今はケースの天板を取り外していますが、ケースを加工して、普通につけられるようにする予定です(GWの予定)。

さて、マザーボードの起動を確認しましたので、2TBのWDのHDDを接続してlinuxをインストールしようとしたら、インストール途中でエラーが出ます。だめじゃん。WDのGreenのトラブルです。何台目だよ!? 外しておいても生じるエラーは本当に困ります。バックアップの役もできない。WDのツールで再生(remap)するとしても、信頼性が低くなるので、このまま使うのは考えものです。
しかたないので、追加で別メーカーの3TB、買ってきました。そのため予算をはるかにオーバーしてしまいました。とほほ。


今回のマシンのまとめ:
  • マシンの構成は「入手可能性」により、制限されてしまいます。今回ではCPUとメモリでした。型落ちがすぐに入手できなくなるようです。
  • 予定していた性能は出ています。
  • CPU温度は50度でした。i7の70度と比べてかなり低いのは、CPUクーラーの性能差かもしれませんし、CPUの省電力性能が上がったのかもしれません。
  • 4コアのため、負荷が4を越えると、思った以上に処理速度が低下するような感じがあります。これは、CPUが悪いのでもなく、linuxが悪いのでもないでしょう。基本的にキャッシュの効きが処理速度に影響しますので、プロセスがCPUから追い出されるとキャッシュからも追い出されてしまうからでしょう。CPUがi7の8スレッドであれば、プロセスが追い出されないため、キャッシュ上に残りますから、そのままキャッシュの効きが維持される、ということと思われます。


共通テーマ:パソコン・インターネット

そしてeth0がいなくなった [プログラム]

はい、例によってdebianのsidでdist-upgradeしたらトラブル発生です。
そして、いつものように再起動するまで問題が発覚しませんので、「あれっ!?」です。

ネットワークがつながりません。
ネットワークの物理的な接続は問題なしでしたので、OS側の問題です。

    # ifconfig -a
あれれ、eth0がありません。
じゃぁ、Ethernetのチップは見えているのかというと
    # lspci
この中に
    Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02)
があるので、ふむ、そこまではよしと。
なら、ドライバは?
    # lsmod |grep 8
? なにも出てきません。どゆこと? こいつは、8168のドライバだったんじゃなかったっけ? 8169だっけ?
ドライバはどこ?
    # ls -F /lib/modules/3.13-1-686-pae/kernel/drivers/net/ethernet/realtek/
    8139cp.ko 8139too.ko r8169.ko
!!! 8138のドライバがないじゃん。でも、前はr8169のドライバだったような気がする…
    # cat /etc/modprobe.d/r8168-dkms.conf
    # blacklisted by r8168-dkms
    blacklist r8169
なんか知りませんが、blacklist入りしてます。
記憶が確かならr8169で代用がきいたはず。えーい。
    # modprobe r8169
    # ifup eth0
とりあえずは、これでネットにつながるので、やっと検索ができるようになりました。
ググると、8168はバグがあるからデフォルトでインストールを止めたみたいです。
でも、必要な人がいるから(当たり前だ、ばかたれ)、ソースで供給してたらしいです。
で、debianはというと、それを自動化してaptパッケージで出したようです。
    # apt-get install r8168-dkms
あれ、エラーしますね。ひょっとして、kernel headerがない?
    # apt-get install linux-headers-3.13-1-686-pae
はい、そのとおり。じゃ、も一度。
    # apt-get install --reinstall r8168-dkms
いろんなメッセージを出してきますね。
ともあれ、
    /lib/modules/3.13-1-686-pae/updates/dkms/r8168.ko
がビルドされました。
一度rebootしてみます。さっきのメッセージに、
    ブートに失敗したら、initrd.img-3.13-1-686-pae.old-dkmsを使ってね
って書いたありましたが…
おお、問題なく立ち上がりますよ。
    # lsmod | grep 81
    r8168 246337 0
ちゃんとr8168のドライバが入ってます。

さて、今回の問題は何だったのかなー。
  • 8168をr8169のドライバで代用するのを止めるようになった
  • dist-upgradeでkernelのアップデートのときに、kernel headerがインストールされなかった(なぜかいつもインストールされないので、手動でインストールしてます=面倒)
  • r8168ドライバ(ソースからコンパイルする)のモジュールはアップデートで自動的に選択されてインストールされた(しようとした)
  • しかし、r8168ドライバ(ソースからコンパイルする)はインストールに際してkernel headerを必要とする

ということで、dist-upgradeしたら、kernel headerがないので、r8168ドライバをビルドできなかった、ということみたいです。r8168ドライバのモジュールがkernel headerに依存しているのに、kernel headerをインストールするように設定されないのが問題だったのでしょう。そしてeth0がいなくなった、と。


タグ:Debian

共通テーマ:パソコン・インターネット

iMX6のAndroidの電卓アプリにとんでもなく驚かされた [プログラム]

Freescaleのi.MX6の評価ボードをちょっと触ることができたのですが、その付属のデモとしてAndroidが動くようになっていました。
そこに電卓アプリがあったので起動してみると、…

まず驚いたのが、
sin(正弦)、 cos(余弦)、 tan(正接)、 ^(べき乗)、 !(階乗)、 √(平方根)、
定数として e(自然対数の底) と π(円周率)
のボタンがあったのです。これ、理数系用の計算機?

で、いくつか試してみました。
sin(π)、 √2、 10!
などを。
で、次に驚いたのが、度数法でなく、弧度法(ラジアン)でした。これ、理数系用の計算機!
ただ、桁数は多くなく、むしろ、少ない感じでした。こりゃfloat演算かなと思いましたが、まぁ、電卓としては普通です。

そして、私が一番驚いたのが、
e^(π×√-1)
の答えが「ちゃんと」出ることでした。おぉ、オイラーの公式、This is our jewelを知ってるのか、こいつはっ!!!
これには、本当に驚かされました。これ、理数系用の計算機!!!を越えてるのでは?

え?、ということは、この電卓、複素数計算ができるのでしょうか? 試してみましょう。
e^(π÷3×√-1)
… エラーでした。手元にあるソーラー電卓なら複素数計算ができるんですが、さすがにそこまではできないか…。


冷静になって考えると、ひょっとすると、この電卓の作者としては、イースター・エッグとして仕込んで置いたものなのかもしれませんね。
でも、センスあるなぁ。さすがFreescale。Coolです。


共通テーマ:パソコン・インターネット

gnome-panelが空になる [プログラム]

debianのsidで、GNOME 3のfallbackモード(GNOME Classic)を使っています。

gnome-panelが更新されたのだと思います。
起動したら、画面上部にあるパネル(GNOMEメニューとランチャーなど)が空になっています。
ターミナルを含めすべてをそこから起動しているため、Ctrl-Alt-BackSpaceでXを強制終了させて、なにはともあれ .config/, .gconf/, .gconfd/ をバックアップしました。.config/gnome-panel/launchers/*.desktopは、以前のまま、ちゃんと残っています。あれ?
(あとで知ったのですが、ファイルマネージャが動いているなら、ファイルマネージャから/usr/bin/xtermなどを起動すればターミナルが動きます)
で、rootでログインしなおしてみると、パネルは正常です。おや? まぁ、最悪、rootの.config, .gconfなどをコピーして設定しなおせば復旧できそうです、面倒ですが。
まず、gnome-panelをreinstallします。それから、パッケージがないとエラーが出ていた gnome-menu-extended を削除します。
.xsession-errors をみると、

  (gnome-panel:4653): Gtk-WARNING **: FIXME: assigning images is not implemented

のようなエラーがでていましたので、アイコンがなくなっているのかもしれないと、アイコンをreinstallしました。

で、再起動してログインしましたが、まだパネルが空です。うーむ。

パネルのところで、Alt-右クリックして、「新しいパネル」を追加(画面右側に追加)して、そこで、Alt-右クリックして「パネルへ追加…」して、ターミナル(端末内で起動する、名前:bash、コマンド:bash)を追加してみます。アイコンが出ません。でも、.config/gnome-panel/launchers/bash.desktopは追加されています。あれ?

試行錯誤の挙句、Alt-右クリックして「プロパティ」の「全般」の「隠すボタンを表示する」にチェックを入れて、さらに「隠すボタンに矢印をつける」にチェックを入れて、「背景」タブで「なし」と「単色」を切り替えて戻すと、表示されました。あれ?

パネルの中身が表示されたので、「隠すボタンを表示する」のチェックをオフにして、再起動してみると… パネルがまた空です。あれ?

「隠すボタンを表示する」のチェックを入れたまま再起動します。今度はちゃんとパネルが表示されます。うーむ。

私のパネルは、ランチャーなどが大量に登録されており、uimが起動してパネルに設定などが並ぶと、画面の幅よりも長くなることがあります。
推測ですが、

  • 新しい gnome-panel では、画面幅を越えている場合、「隠すボタンを表示する」や「隠すボタンに矢印をつける」がオフのとき、エラーが起こって表示しないようになっているのではないか?
  • 最初に表示するパネルでエラーが起こると、以降のパネルも一切表示しないようになっているのではないか?

という感じです。ユーザとしては、少なくとも、表示できる分は表示してくれないと困りますし、関係のない別のパネルは正常に表示されるべきです。このあたり、ユーザが求めているもの「〜であって当然、〜であるべき」が、開発者には分かっていないのでしょう。開発者自身がgnome-panelを使ってないからかもしれません。開発者=ユーザであれば、ユーザが求めているもの、やろうとすることもわかるはずです。GNOMEのユーザインターフェースが、過去の某GUIで到達し得たレベルにさえ全然到っていないと思うのはそのあたりです。自分で作れ、という批判は甘んじて受けますが、それをGNOME上で作るべきなのか、KDE上で作るべきなのか、xfce上で作るべきなのか、etc.,と考えると、現状での安定性と将来まで見越さなければならないので、二の足を踏んでしまうのです。

なお、新しい gnome-panel では、ツールチップが2重枠で表示されるようになり、その表示位置がアイコンの下に正しく表示されるようになりました。以前の gnome-panel では、ツールチップの表示位置が大きくずれることがたびたびありましたが、それが修正されていました。



共通テーマ:パソコン・インターネット

ODROID-U2を使ってみる (その5) [プログラム]

ubuntuを捨ててDebianをODROID-U2にインストールします。

(e) Debianのインストール

今回、絶賛推奨のページは
  http://odroid.us/
です。多くの情報が得られます。そして、debianのイメージファイルがあります。
イメージファイルをダウンロードして、SDカードに書き込みます。

  xz -d <odroidu2_20130205-debian-wheezy-devel.img.xz | dd of=/dev/sdb bs=2048c

が、8GBのSDカードだったのに、「容量が足りない」と言われました。fsck -f /dev/sda2 (SDカードは私のところでは/dev/sdaになっています)で調べてみると、問題ありません。なので、SDカードは8GBで十分です。というか、パーティションサイズをみると約5GBです。どうやら、元のイメージファイルの作成時にサイズの指定をしなかったため5GB以上の部分のゴミが含まれてしまっているようです。ですので、このエラーは気にする必要はありません。

SDカードを挿してODROID-U2を起動します。すんなりとDebianが動き出しました。
あとは、いつもの設定を行ないます。network, sshd, aptのupgradeなどです。
もし、シリアルコンソールを使わずに行なうのであれば、SDカードをPCでマウントして、第2パーティション(rootfs)のetc/ssh/sshd_configを修正して、ネットワークからsshでログインできるようにします。なお、必要なら、etc/network/interfacesも修正します。


(f) unionfs-fuseの設定
Debianの方でも確認しましたが、fsprotectは使えませんでした。aufsモジュールがありません。
代わりに、Raspberry Piと同じくunionfs-fuseの方を使うことにします。
Raspberry Piと同じスクリプトを同じようにインストールしました。
そして、ODROID-U2を再起動したら… なんとそのまま使えました。
そしてunionfs-fuseもすんなりと動きました。

これがdebianのすごいところです。Raspberry PiでもODROID-U2でも同じに使える(バイナリは除く)ところがよいのです。こっちで作ったスクリプトや設定ファイルがそのまま他のCPUで使えるわけですから。手間いらず。私が欲しかったのはこんなディストリビューションだっ!!! なお、スクリプトや設定ファイルは、たとえばsshやopenvpnなどの設定ファイルは、x86でもARMでも全く同じように使えます(使えました)。だから、まずx86で組み上げて、ARMへ移すということもできるのです。作る方としては楽ですよね。


さて、あとはどうするか。

(g) sshfsの設定
まず、リモートファイルシステムとして何を使うかです。NFSクライアントとなるとiptablesが面倒ですし、pNFS(NFS 4.1)はまだ資料が不十分みたいですし、…。sshfsってのがあります。これはどうでしょう?
  # apt-get install sshfs
で、/etc/groupで、自分をfuserグループに追加して、shellを再起動します。あれ、リブートしなけりゃならなかったっけか?
まぁ、とにかく
  $ sshfs user@remotehost:remotedirectory mountpoint
でマウントできちゃいます!!! すごい。あれ、umountはどうやるのでしょう? rootでumountか、
  $ fusermount -u mountpoint
だそうです。ちょっとaliasしておきましょう。
  $ alias fuserumount='fusermount -u'


ということで、ネットワークファイルシステムとしてsshfsを使えばsshだけでOKみたいです。当面は、2台8コアで実証システムを作って、あとはODROID-U2を買い増すだけ(笑)。夢は25台100コア。しかも250W+sshサーバーマシン分。これは省エネでしょう。100倍速い…。うわぁい。

で、現実的なところを考えると、台数が増えるとネットワークがネックになってきます。これはサーバに複数枚ネットワークカードを挿して、適当に分散させるしかないでしょうね。ハブも必要です。それに、i7-3770比だと4CPU分=16コア程度の速度なので、消費電力以外ではローコストとは言えないでしょうが。


ともあれ、2台のODROID-U2を設定し、動作開始しました。ODROID-U2の2台の計8コアは、24時間100%で動作しています。今のところ問題なしです。停止・再開も問題ありません。

ODROID-U2の2台の計8コアは、24時間100%で動作しています。

これで、(一応の)目標に達しました。
本来なら、資金に余裕があれば、Google Compute Engineを使って実行するのがよいのでしょう。時間に余裕があるなら、本格的にBOINCシステムを使ってサーバ/クライアントを作成すべきなのでしょう。まぁ、それはいずれ。


タグ:ODROID U2

共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。