Debian でパッケージ導入時のダイヤログを抑制する

Debian でmysql-server 等を導入するとパスワード設定ダイヤログが出てくる.
Screenshot from 2014-05-30 06:20:11
これを抑制できないか試してみた.

microHOWTO: Perform an unattended installation of a Debian package

export DEBIAN_FRONTEND=noninteractive
apt-get update -q
apt-get install -q -y -o Dpkg::Options::=”—force-confdef” -o Dpkg::Options::=”—force-confold” apache2 mysql-server

これを参考に

% sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server

でダイヤログ出さずに導入できた.
でもmysql-server の場合パスワード設定しないと結構まずい.
即パスワード設定するとか

% mysqladmin -u root password ‘password’

daemon止めるとかしないとだと思う.

% sudo /etc/init.d/mysql stop

「赤城さんのお風呂タイマー @艦これ」をDebian jessie で試す

赤城さんのお風呂タイマー @艦これ というソフトを見つけて,Linux でも動作するよと書かれていたので気になっていました.
これをDebian jessie 環境でビルドしてみました.(が,動作していませんorz)

ソースコードからビルドすれば、Linux や Mac でも動作することを確認しています。

クリーンな環境でビルドしてないので足りないものもあるかもしれませんが,こんな感じで必要なパッケージを導入します.

% sudo apt-get install liblua5.1-0-dev libyaml-cpp-dev libboost1.53-dev libopencv-highgui-dev libluabind-dev doxygen xdot libcsnd-dev lua5.2 mercurial build-essential

bitbucket からsource を貰ってきます.

% hg clone https://bitbucket.org/satofumi/bath_timer

make します.

% cd bath_timer
% make

実行ファイルを叩いてみます.

% bath_timer/bath_timer
zsh: segmentation fault  bath_timer/bath_timer

orz
カレントディレクトリで実行したりテーマファイルをコピーしたりしてみましたがうまく行きませんでした><
テーマはディレクトリ構成とかがよくわからなかったのでWindows のものをCP したりしてみました.

ということで,とりあえずいつものkoedoyoshidaさんの艦これタイマーに戻ります….

ちなみに,どうやってブラウザと通信しているんだろうと疑問だったのですが,こちらに解説が.通信しているわけではなくOCR で読み取っているんですね.眼から鱗.

Kobo Debian で dist-upgrade 後にもタッチパネルが使えるようにする

marekさん謹製のKobo Debian でapt-get dist-upgrade してxorg を更新するとタッチパネルが利用できなくなります.

原因は,marekさん謹製のマルチタッチドライバ(Kobo オリジナルはシングルタッチ)がxorg のバージョンに追従されないため.
解決するためにドライバをビルドしなおしてインストールする必要がある.

手順

apt-get dist-upgrade を行った後, /home/marek/src/xorg-input-kobomultitouch に移動し,ビルド&インストールを行う.
次回起動時に認識するようになる.

# cd /home/marek/src/xorg-input-kobomultitouch
# make clean
# make
# make install

開発環境は導入済みなので開発環境を導入する必要はない.

以前紹介した

を使ってもOK

ユーザーモードエミュレーションqemu を使って Kono on Debian のイメージを Host PC で apt-get とかする

Kobo on Debian ですが,ストレージがmicroSD のせいかよくイメージが壊れてしまいます.そのたびに書き込みなおして設定を行ってというのは大変です.ということで Kobo on Debian のイメージをホストのLinux マシンでマウントしてユーザーモードqemu を利用して apt-get したりする方法の紹介です.

ここではhost pc に Debian jessie を利用していますが,wheezy や Ubuntu 13.10 なんかでも全く同じように動作しそうです.
(他のディストリビューションでも大丈夫でしょうがパッケージ名などが異なると思われます.)

qemu-user-static パッケージを導入

先ず,ユーザーモードqemu のパッケージを導入します.これで,別のアーキテクチャのバイナリをユーザーモードで動作させることが出来ます.

% sudo apt-get install qemu-user-static

パッケージの中を見ると以下のアーキテクチャが動作するようです.

% dpkg -L qemu-user-static
/usr/bin/qemu-mipsn32-static
/usr/bin/qemu-or32-static
/usr/bin/qemu-mips-static
/usr/bin/qemu-m68k-static
/usr/bin/qemu-ppc64-static
/usr/bin/qemu-sparc-static
/usr/bin/qemu-i386-static
/usr/bin/qemu-armeb-static
/usr/bin/qemu-mipsn32el-static
/usr/bin/qemu-ppc-static
/usr/bin/qemu-ppc64abi32-static
/usr/bin/qemu-mipsel-static
/usr/bin/qemu-arm-static
/usr/bin/qemu-x86_64-static
/usr/bin/qemu-sh4-static
/usr/bin/qemu-mips64el-static
/usr/bin/qemu-sparc64-static
/usr/bin/qemu-unicore32-static
/usr/bin/qemu-sh4eb-static
/usr/bin/qemu-microblazeel-static
/usr/bin/qemu-microblaze-static
/usr/bin/qemu-mips64-static
/usr/bin/qemu-cris-static
/usr/bin/qemu-sparc32plus-static
/usr/bin/qemu-alpha-static
/usr/bin/qemu-s390x-static

ディスクイメージをマウント

Kobo on Debian のイメージを loopback mount します.イメージは複数パーティションなので,fdisk コマンドでパーティション情報を確認して mount 時に offset を指定します.

% /sbin/fdisk -l -u ./2013-08-17_kobo_debian.img

Disk ./2013-08-17_kobo_debian.img: 8014 MB, 8014266368 bytes
255 heads, 63 sectors/track, 974 cylinders, total 15652864 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000aad1a

                       Device Boot      Start         End      Blocks   Id  System
./2013-08-17_kobo_debian.img1           19456    10506239     5243392   83  Linux
./2013-08-17_kobo_debian.img2        10506240    14698495     2096128    b  W95 FAT32
./2013-08-17_kobo_debian.img3        14698496    15652863      477184   82  Linux swap / Solaris

今回利用したいのは1つめのパーティションの ./2013-08-17_kobo_debian.img1 19456 10506239 5243392 83 Linux 部分です.
先頭ブロックは 19456 で,ブロックサイズは 512 なので, 19456*512 = 9961472 が offset になります.(若しくは expr 19456 \* 512 とかしても判りやすいかもです.)

% sudo mount -o loop,offset=9961472 ./2013-08-17_kobo_debian.img /mnt

これで 2013-08-17_kobo_debian.img の第1パーティションが /mnt にマウントされました.

ユーザーモードエミュレーションQEMU コマンドをコピーする

Kobo on Debian 部分を chroot で利用したいので,ユーザーモードエミュレーションQEMU コマンドをイメージ内にコピーします.
マウント時に /usr/bin になる部分にコピーします.

% sudo cp -p /usr/bin/qemu-arm-static /mnt/debian/usr/bin

chroot してapt とかする

イメージを chroot して apt とかしてみます.

% sudo chroot /mnt/debian /bin/bash
# vi etc/apt/sources.list

名前解決に失敗するので,nameserver を設定します.以下は Google の 8.8.8.8 を指定した時の例です.chroot 前に host のresolv.conf を cp しておいてもいいかもしれません.

# cat <<__EOF__> /etc/resolv.conf
> nameserver 8.8.8.8
> __EOF__
# apt-get update
  :

後は普通に設定していきます.
設定が終了したらexit コマンドで chroot を抜け,umount コマンドでアンマウントします.

RaspberryPi の Rasbian イメージでも行けるだろうと思って試したのですが,失敗してしまいました.解決したいところです….

ADD: その後やり直したらうまく行った

Debian wheezy/jessie で mikutter する(2014/01/15版)

2014/01/15現在 mikutter は wheezy-backports と sid にあります.

先日までjessie にもあって利用していたのですが(kobo とかで)移動してしまいました.ということで jessie で sid から借りてくる方法とついでに wheezy で backports から借りてくる方法を書いておきます.
jessie の方は多分また状況が変わるかもです.

※/etc 以下のファイルを編集します.etckeeper などを使ってバージョン管理しておくと便利&安心です.

jessie

/etc/apt/sources.list に sid を追加

以下の行を追加します.

# sid
deb http://ftp.jp.debian.org/debian/ sid main

source.list のurl は wheezy に合わせて下さい.(deb http://ring.ix.oita-u.ac.jp/archives/linux/debian/debian sid main contrib non-free の場合 deb http://ring.ix.oita-u.ac.jp/archives/linux/debian/debian sid main)

/etc/apt/preferences の編集

アップデートを有効にするために /etc/apt/preferences を編集します.
以下の行を追加します.

Package: *
Pin: release a=sid
Pin-Priority: 200

#これは設定しないで手動のほうが良い場合も?

前のフィールドがあったら1行開けること.行が開いてないとうまく認識しません.

アップデート

$ sudo apt-get update

mikutter 導入

$ sudo apt-get install mikutter/sid

or

$ sudo apt-get install -t sid mikutter

wheezy

/etc/apt/sources.list に backports を追加

以下の行を追加します.

# wheezy-backports
deb http://ftp.jp.debian.org/debian/ wheezy-backports main

source.list のurl は wheezy に合わせて下さい.(deb http://ring.ix.oita-u.ac.jp/archives/linux/debian/debian wheezy main contrib non-free の場合 deb http://ring.ix.oita-u.ac.jp/archives/linux/debian/debian wheezy-backports main)

/etc/apt/preferences の編集

アップデートを有効にするために /etc/apt/preferences を編集します.
以下の行を追加します.

Package: *
Pin: release a=wheezy-backports
Pin-Priority: 200

前のフィールドがあったら1行開けること.行が開いてないとうまく認識しません.

アップデート

$ sudo apt-get update

mikutter 導入

$ sudo apt-get install mikutter/wheezy-backports

or

$ sudo apt-get install -t wheezy-backports mikutter

[告知]日経Linux 2014年2月号に Kobo on Debian/Android の記事が載ります

今回ご縁があって1/8発売の「日経Linux2014年02月号」に記事を書かせてもらいました.内容は Kobo でDebian/Android を動かすものです.

元々関西オープンフォーラム2013opencocon@shimadah君と話していて「kobo でDebian 動かしてる人居るよ.調べてみる価値はあると思う.」と聞いたのがきっかけでした.
その後 オープンソースカンファレンス2013福岡に現物を持って行ったら結構手遅れ界隈を中心に受けたのでその次の週のオープンソースカンファレンス2013大分のLT で発表したのでした.(こっちにはLT が下手なせいかLT は受けなかったorz)

このLT 資料を見た @emasakaさん経由で執筆依頼を頂き記事を書きました.

#最後の校正はTakashi.Yamanoue先生の「鹿児島組み込みシステム推進協議会懇談会」の最中にやってました><

校正時から変わっていなければ pp.75-79 に掲載されます.
内容は以下のWiki のものですが,校正も入り解りやすくなっています.

ただ,この記事執筆時から状況が変わった部分が有ります.

  • apt-get dist-upgrade した後Debian で起動するとタッチパネルが認識しなくなる.
  • mikutter のパッケージがJessie から無くなったのでapt-get install だけでは導入できなくなった.
  • Kobo mini でも動作確認が取れた.

タッチパネルが認識しなくなる問題はとりあえず dist-upgrade を避ければ大丈夫です.xorg 関連だと思うのですが,パッケージを割り出してpin を挿してそのパッケージを自動アップグレードされないような設定をすればいいと思うので調べているところです.
解決しました -> Kobo Debian で dist-upgrade 後にもタッチパネルが使えるようにする | matoken’s meme

mikutter はsid にはあるので,そちらから貰ってくることで動作すると思うので検証してまとめたいと思います.(多分 /etc/apt/sources.list, /etc/apt/preferences の書き換えで… )
とりあえずこんな感じで -> Debian wheezy/jessie で mikutter する(2014/01/15版) | matoken’s meme

その他,apt-get update Host 側で先に行ってから書き込む方法を見つけたのでこれも手順を書きたいと思っています.
書きました -> ユーザーモードエミュレーションqemu を使って Kono on Debian のイメージを Host PC で apt-get とかする | matoken’s meme

Kobo mini でも Debian したい

先日秋葉原に行ってきました.するとKobo Touch/glo が一台も見つかりませんでした><





ということで,mini を買ってしまいました.
一度も起動しないままmicroSD を差し替えようとすると….ネジ止めorz


ねじ回しを求めて


コミケ打ち上げ中にやったー!


てことで,前のエントリの e-Ink 電子書籍端末のKobo Touch にDebian を入れて遊ぶ方法 | matoken's meme と同じ手順でKobo mini でもDebian が動作するのを確認しました.解像度もKobo Touch と同じです.ホームボタンはありません.
ただ,ねじ回しが必要です><

e-Ink 電子書籍端末のKobo Touch にDebian を入れて遊ぶ方法

このエントリは,「Debian/Ubuntu JP Advent Calendar 2013」 18日分です.

オープンソースカンファレンス2013 福岡/オープンソースカンファレンス2013 大分で見かけた方が居るかもしれませんが,最近電子書籍端末のKobo Touch にDebian を導入して遊んでいます.
といってもmarekさんという方がDebian 導入済みのイメージを公開してくれているのでこのイメージを突っ込んでるだけです.
ここでは,Kobo Touch でDebian が起動できるようになるイメージの導入方法を説明します.

必要なもの

  • Kobo Touch(N905B)
  • 8GB 以上の容量のmicroSD card(出来ればClass10 等速度の速いもの)
  • 母艦
    ここではDebian Jessie の入ったLenovo X220 を利用しています.#このKobo のイメージもJessie なので丁度いい?

失うもの

  • 保証
    分解時にメーカー保証がなくなります><

Kobo の分解とmicroSD のバックアップ

スイッチの辺りを押して出来た隙間からパキパキ爪を外していきます.プラスチック製のポイントカードなどを使うと傷がつきにくいです.
裏蓋を外すとmicroSD にアクセスできるようになります.スイッチを上にした状態でmicroSD の上のカバーを右にスライドさせるとロックが外れます.

取り出したmicroSD を母艦に接続してdd コマンドでバックアップします.

$ sudo dd if=/dev/mmcblk0 of=kobo_touch.img bs=4M

※/dev/mmcblk0 部分は環境により変わります.microSD 接続時にdmesg 等で確認してください.

バックアップ完了後このmicroSD は保管しておきましょう.
ちなみにこの元々ついていたmicroSD を戻すと保証を除き元の環境に戻せます.

Kobo用Debian イメージの入手と書き込み

次のページの
Kobo as a Linux tablet – mgibek
Sample image can be downloaded from here: というところから
2013-08-17_kobo_debian.part01.rar
2013-08-17_kobo_debian.part02.rar
2013-08-17_kobo_debian.part03.rar
を入手します.

用意しておいた8GB 以上のmicroSD に書き込みます.

% sudo sh -c "unrar p -inul 2013-08-17_kobo_debian.part01.rar > /dev/mmcblk0"

ここでは /dev/mmcblk0 が書き込み先のmicroSD のデバイス名です.自分の環境に合わせて修正してください.

※ここで書き込み先のデバイスを間違えるととても悲しいことになるので注意しましょう!

hw_configの書き換え

実は配布されているイメージはN905C 用です.今回はN905B で動かしたいのでhw_config を書き換えます.

hw_config というのは私よくわかっていないのですが(誰か教えてくださいorz),恐らくhw 初期化時にこの値を参照してデバイスを有効化したりしてるのかなと思っています.
hw_config を修正しないとタッチドライバが読み込まれなかったりします.(スイッチボタンでシャットダウン走ります)

hw_config はオリジナルKobo イメージから書き出して今回の新しいmicroSD に書き込みます.初めのほうでバックアップしたイメージファイル(kobo_touch.img)から該当場所をglo_hwconfig.bin として抜き出し,Debian イメージの書き込まれたmicroSD Card に書き込みます.

% sudo dd if=kobo_touch.img of=glo_hwconfig.bin bs=512 count=1 skip=1024 count=2
% sudo dd if=./glo_hwconfig.bin of=/dev/mmcblk0 bs=512 count=1 seek=1024 count=2

swap 作成

このイメージには3番目のパーティションにswap が設定されていますが,私の環境ではswapon しても認識されませんでした.恐らく利用したmicroSD が8GB より少し小さく壊れているのでしょう.mkswap しておきます.

% sudo mkswap -c /dev/mmcblk0p3

起動選択画面

これでとりあえず準備は完了です.microSD をKobo に接続して電源を入れます.
起動すると起動選択画面が表示されます.
それぞれのアイコンをタップすることによりそれぞれのモードに移行できます.

  • コンピュータアイコン -> Debian イメージが起動.
  • 本アイコン -> 通常の kobo イメージが起動(海外版)
  • WiFi アイコン -> 診断モード(ftp/telnet)

IMG_20131112_214839

診断モード

診断モードは,telnet/ftp が利用可能です.
id:root
password:無し
で接続でき,ホームボタンでシャットダウンされます.
環境をカスタマイズするときなどに利用できます.

WiFi の設定

このDebian イメージはchroot で動作します.chroot 時にネットワーク周りの設定をroot 側の設定からコピーしてくるので,WiFi を利用するには先ずKobo を起動してWiFi の設定をしておきます.

その後,Debian で起動しなおし,左下のメニューから[Config]->[Wi-Fi]->[Start]でWiFi に接続できます.
WiFi 接続時にsshd/ftpd が起動します.id:marek / password:abc123 で接続できます.

awesome のメニュー登録方法

このDebian 環境はタイル型WM のawesome を利用しています.
この環境ではapt でアプリケーションを導入しただけではメニューに登録されないようです.

以下のファイルを編集することで登録が可能でした.
* ~/.config/awesome/rc.lua
* ~/.config/awesome/debian/menu.lua

以下は, ~/.config/awesome/rc.lua を編集して, Apps -> mikutter を登録する例です.

  menuapps = {
     { "Firefox", "firefox" },
     { "FBReader", "fbreader" },
-    { "Calculator", "xcalc" }
+    { "Calculator", "xcalc" },
+    { "mikutter", "mikutter" },
  }

Debian で遊ぶ

後は基本的に普通のDebian Jessie です.普通に遊べます.
実は実用的な利用方法が思いつかず,ほぼmikutter 表示専用マシンとなっています.面白い活用方法を思いついたら教えてください.

その他

以下のページに小ネタをまとめています.

IMG_20131120_222854 VNC 経由で艦これ
IMG_20131114_190530 xload
16 - 1 mikutter を表示しながらXrdp

追記)
Kobo mini でも動くようですが,手元にないので試せていません.Kobo glo でも動きますが,そのままでは解像度が違う(ハードコーディングされている)ので操作が難しいです.

IMG_20131115_022044
IMG_20131115_023206

20140103追記)

  • Kobo mini を入手したので試してみると同様の手順で動作しました.
  • 現在 apt-get dist-upgrade をするとDebian 上でタッチパネルが利用できなくなるようです.apt-get update までにしておいたほうがいいです.
  • mikutter のパッケージはjessie から無くなっているようです.

Kobo mini on Debian

Debian/Ubuntu に Arduino IDE を導入する

今度の日曜日にフィジカルコンピューティングワークショップ Arduinoで遊んでみよう【定員20名】 に参加予定ですが,Linux での導入手順がないので.

実はパッケージが用意されています.
なので,

% sudo apt-get install arduino

で導入完了です.

しかし,このままではArduino に接続する際にroot 権限が必要になって面倒なので,Arduino のデバイスが自分のユーザで利用できるように dualout グループに登録しておきます.

% sudo addgroup user dialout
ユーザ `user’ をグループ `dialout’ に追加しています…
ユーザ user をグループ dialout に追加
完了。

※user 部分は自分のユーザに置き換えてください.

もし,以下のように表示されたら既に登録済みなので問題ありません.

% sudo addgroup mk dialout
ユーザ `mk’ はすでにグループ `dialout’ のメンバーです。

– ドライバは?
自動認識するので特に導入の必要はありません.Arduino  をPC に接続すると /dev/ttyUSB0 や /dev/ttyACM0 などとして認識されます.このデバイスをArduino IDE のポートに設定します.
#最後の0部分はデバイスが増えると1,2,3…と増えていきます.dmesg 等で確認できます.

– おまけ

最新のArduino IDE が使いたい!

例えばDebian Stable のWheezy ではArduino 1.0.1 ベースですが,公式サイトを見ると1.0.5 がリリースされています.
Debian — wheezy の arduino パッケージに関する詳細
Arduino – Software
新機能を使いたい場合やBETA版を使いたい場合などは標準パッケージのままでは利用できません.

以下はArduino IDE BETA を ~/opt 以下に導入する例です.
Arduino IDE をダウンロードします.32bit/64bit は uname -m 等で確認できます.以下の例では64bit になります.

% uname -m
x86_64
% wget http://downloads.arduino.cc/arduino-1.5.5-linux64.tgz

~/opt 以下に展開します.

% tar xvzfC arduino-1.5.5-linux64.tgz ~/opt

シンボリックリンクを貼っておく.(バージョンアップ時にリンクを貼り直して何時も同じパスで利用できるように)

% ln -s ~/opt/arduino-1.5.5 ~/opt/arduino-beta

起動しやすいようにメニューに登録しておく.(シンボリックの方を登録する)
Screenshot-ランチャのプロパティ
Screenshot-メイン・メニュー

Ardublock や Fritzing もお勧めです :-)
Getting Started with ArduBlock | Ardublock
Download – Fritzing

VirtualBox 上のWindows 8 をWindows8.1 に更新できるようにする

Screenshot from 2013-11-01 22:21:10
VirtualBox 上のWindows8 をWindows8.1 に上げようと思ったら

「お使いのコンピューターの CPU でサポートされていないため、この更新をインストールすることができません。」

と言われてしまいました.
CMPXCHG16b を以下のようにして有効にしてアップデート出来ました.

# 仮想マシン名確認(何故末尾にスペースがorz)
% VBoxManage list vms|grep -i win
"Windows8 Pro 64bit " {aef046b2-e82e-428b-b65f-8ab01fa489fe}

# 仮想マシンのCMPXCHG16b 有効化
% VBoxManage setextradata "Windows8 Pro 64bit " VBoxInternal/CPUM/CMPXCHG16B 1

VirtualBox 4.2.16 以降で新規マシンだとこの手順は要らないようです.(既存環境で作成した仮想マシンでは必要)