Skip to content

Instantly share code, notes, and snippets.

@mzp
Last active December 26, 2015 16:19

Revisions

  1. mzp revised this gist Oct 27, 2013. 1 changed file with 35 additions and 1 deletion.
    36 changes: 35 additions & 1 deletion nexus7.md
    Original file line number Diff line number Diff line change
    @@ -134,4 +134,38 @@ Debianだと幅が80文字で固定なので、なんとかします。
    $ sudo chown mzp:mzp /home/mzp/cabal/cabal
    $ ln -s ~/cabal/cabal ~/.cabal

    参考: [技術的雑談-Linuxでのディスクイメージファイルのマウント](http://www.himajin2001.com/fswiki/wiki.cgi?page=%B5%BB%BD%D1%C5%AA%BB%A8%C3%CC-Linux%A4%C7%A4%CE%A5%C7%A5%A3%A5%B9%A5%AF%A5%A4%A5%E1%A1%BC%A5%B8%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%A5%DE%A5%A6%A5%F3%A5%C8)
    参考: [技術的雑談-Linuxでのディスクイメージファイルのマウント](http://www.himajin2001.com/fswiki/wiki.cgi?page=%B5%BB%BD%D1%C5%AA%BB%A8%C3%CC-Linux%A4%C7%A4%CE%A5%C7%A5%A3%A5%B9%A5%AF%A5%A4%A5%E1%A1%BC%A5%B8%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%A5%DE%A5%A6%A5%F3%A5%C8)

    ## Haskell環境の構築

    ### Cabal
    Cabal 1.18.0.2をいれようとしたら、エラーがでてしまいました。

    ```
    $ cabal install cabal-install
    (snip)
    Linking dist/build/cabal/cabal ...
    /usr/lib/ghc/libHSrts.a(OSThreads.o): In function `getNumberOfProcessors':
    (.text+0x8): multiple definition of `getNumberOfProcessors'
    dist/build/cabal/cabal-tmp/cbits/getnumcores.o:getnumcores.c:(.text+0x0): first defined here
    collect2: ld returned 1 exit status
    World file is already up to date.
    cabal: Error: some packages failed to install:
    cabal-install-1.18.0.2 failed during the building phase. The exception was:
    ExitFailure 1
    ```

    マクロの定義がまちがってるっぽかったので、cabal-install.cabalにパッチあてて、手動でインストールしました。

    ```diff
    --- cabal-install.cabal.old 2013-10-02 03:50:10.000000000 +0000
    +++ cabal-install.cabal 2013-10-27 08:22:47.259204164 +0000
    @@ -144,7 +144,7 @@

    if arch(arm) && impl(ghc < 7.6)
    -- older ghc on arm does not supprt -threaded
    - cc-options: -DCABAL_NO_THREADED
    + cc-options: -DCABAL_NO_THREADED -DHAS_GET_NUMBER_OF_PROCESSORS
    else
    ghc-options: -threaded
    ```
  2. mzp revised this gist Oct 27, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion nexus7.md
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    # Nexus7買いました
    åあるいは、Nexus7上にDebian環境を構築するときのメモ。
    あるいは、Nexus7上にDebian環境を構築するときのメモ。

    ## TODO

  3. mzp created this gist Oct 27, 2013.
    137 changes: 137 additions & 0 deletions nexus7.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,137 @@
    # Nexus7買いました
    åあるいは、Nexus7上にDebian環境を構築するときのメモ。

    ## TODO

    だれかおしえてください。

    * キーボードの配列変更(Dvorak配列 + Ctrl-CapsLock入れ替え)
    * 画面幅が80文字に固定される
    * スワップを有効にしたほうがいい?
    * ちょうどいいサイズのカバン(シザーバッグ?)

    ## 購入
    Nexus7とケース一体型のキーボードを買ったら、Nexus7(2013モデル)とケース(Nexus7 2012用)が届きました。注意しましょう。

    ## Ubuntu touch導入(失敗)
    [Ubuntu touch](https://wiki.ubuntu.com/Touch/Install)をインストールしようとしたら、うまく動きませんでした。

    よく読んだら

    > Note: We currently do not support the newer '2013' Nexus 7. -
    >
    > (訳: 新しいNexus7(2013)はまだサポートしてません。)
    と書いてありませんでした。

    ## Debian kitの導入
    Ubuntuはあきらめて、Debianを入れることにしました。手順は技評の[第256回 新春特別企画・Android上でUbuntu…ではなくDebianを使う](http://gihyo.jp/admin/serial/01/ubuntu-recipe/0256)を参考にしました。

    ざっくり言うと

    1. Bootloaderのアンロック & Root化(参考: [簡単にできる nexus7 2013 日本版のroot化手順について ](http://www.tsurezure.org/2013/08/nexus7-2013-root.html))
    2. [Android Terminal Emulator](https://play.google.com/store/apps/details?id=jackpal.androidterm)のインストール
    3. debian-kitの実行(イメージサイズ:2GB、Debian squeeze)
    4. `deb` の実行
    5. `adduser mzp` したのち、mzpを `/etc/sudoers` に追加
    6. `apt-get update; apt-get upgrade; apt-get install andromize`

    このときDebian squeezeをいれてしまったけど、wheezyにしとくべきだった。

    ## Wheezy化
    sequeezeをいれてしまったので、/etc/apt/source.list.d/sources.listをwheezy用に書き換えた。

    ### sources.listの更新
    souces.listは [Debian Sources List Generator](http://debgen.simplylinux.ch/)で生成しました。

    Debian kitでいれたままだとドイツのミラーサイトを使うので、いずれにせよ作り直したほうがいいかも。

    ついでに[Debian Backports](http://backports.debian.org/)もいれた。

    ### アップグレード
    同じみのコマンドをたたいて、しばらくほっておきました。

    # aptitude update
    # aptitude upgrade
    # aptitude full-upgrade

    ## Dropbox
    Dropboxで管理している設定ファイル群が欲しかったので、(Drop Sync)[https://play.google.com/store/apps/details?id=com.ttxapps.dropsync&hl=ja]を入れました。

    このときは、Debian側からSDカード内のファイルを見る方法がわからなかったので、

    1. Dropboxの中身をSDカードに同期
    2. ホームディレクトリにコピー

    というまわりくどい手を使いました。

    たぶん

    # mount --rbind /mnt/sdcard/Dropbox /home/mzp/Dropbox

    でできるし、そっちのほうがよさそう。

    ## ホスト名の変更
    よくわからない連番のホスト名がイヤになったので、変更しました。

    $ sudo echo "nexus7" > /etc/hostname && hostname $(cat /etc/hostname)

    ついでにsudoするたびに「ホスト名が解決できなかった」という警告がでるのがイヤだったので、 `/etc/hosts` に追記しました。

    127.0.0.1 nexus7

    せっかくのNexusだし、ホスト名を[レプリカント](http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AC%E3%83%BC%E3%83%89%E3%83%A9%E3%83%B3%E3%83%8A%E3%83%BC)にしようかなー、とか考えてたんですが、アルファベットにしたら長くてつらかったのでやめました。

    ## 各種ソフトの導入

    `aptitude` がうごくので普段使ってるソフトウェアをインストールした。

    * zsh
    * tmux
    * vim-full
    * git
    * haskell-platform

    特にエラーもでず普通に動いてる。 `screen` がうまく起動しないけど、普段は `tmux` を使ってるので深追いはしていない。

    ## 画面幅の調整(作業中)
    Debianだと幅が80文字で固定なので、なんとかします。

    1. Android Terminal Emulatorの設定を変更して"ターミナルタイプ"をlinuxにする(別になんでもいい)

    ルートになって、terminfoの該当エントリをいじります。

    # infocmp linux > linux.ti
    # vi linux.ti (適当な場所に `cols#100` を挟む)
    # tic linux.ti

    でもtmux上だとこれが使えないので、まだ解決してないです。

    ## ループバックデバイスの追加
    せいぜい2GBしか使えないので、だんだんと容量が足りなくなってきます。 とりあえず `~/.cabal` があふれてきたので、これを別のデバイスに逃がします。

    まず、SDカード上にイメージを作ります。(今回は500MB)

    # cd /mnt/sdcard
    # dd if=/dev/zero of=cabal.img bs=500M count=1 seek=2048

    ループバックデバイスとして登録します。 空いているループバックデバイスの番号はlosetup -Fでわかります。

    # losetup /dev/loop1 /mnt/sdcard/cabal.img

    フォーマットします。 理由はわからないですが、ext4でないとマウントできません。

    # mkfs -t ext4 /dev/loop1

    マウントします。

    # mkdir /home/mzp/cabal
    # mount -t ext4 /dev/loop1 /home/mzp/cabal

    あとは `~/.cabal` をシンボリックリンクに置き換えます。

    $ sudo mkdir /home/mzp/cabal/cabal
    $ sudo chown mzp:mzp /home/mzp/cabal/cabal
    $ ln -s ~/cabal/cabal ~/.cabal

    参考: [技術的雑談-Linuxでのディスクイメージファイルのマウント](http://www.himajin2001.com/fswiki/wiki.cgi?page=%B5%BB%BD%D1%C5%AA%BB%A8%C3%CC-Linux%A4%C7%A4%CE%A5%C7%A5%A3%A5%B9%A5%AF%A5%A4%A5%E1%A1%BC%A5%B8%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%A5%DE%A5%A6%A5%F3%A5%C8)