Edisonにubilinuxを入れたらRead-Only file systemで困った話
Edisonをそのまま使おうとしたが少し使い勝手が悪いためubilinuxを入れました。
起動してssh越しにログインしてapt-get update
すると
W: Some index files failed to download. They have been ignored, or old ones used instead.
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt/
E: The package lists or status file could not be parsed or opened.
と出て、パッケージの更新ができませんでした。 chmodやremountも意味なしで困っていたところ、解決方法はRead-only file system | Intel Communitiesにありました。
e2fsck /dev/root
実行するとインタラクティブにいくつかの質問に答えることになります。自分の環境にあわせて質問に答えます。
(おそらく全部yでも問題ないと思います。僕はlost+foundだけnにしました)
その後rebootして無事パッケージ更新ができるようになりました。やったぜ。
Linuxで特定のIPへの通信に特定のインタフェースを使う
Rasberry PiでEthernetで繋いだネットワークとUSB Ethernetアダプタで繋いだネットワークを別々のセグメントに接続し、いざ通信しようとするとうまく行かないことがありました。
状況は、
- eth0はグローバルへ出るためのIFでIPはDHCPで取得
- eth1は特定機器との通信用でありIPは静的かつグローバルに出られない
この状態でブートすると、ping 8.8.8.8
等グローバルの通信ができず。eth1がホストに到達できないと答える。
route -n
で調べてみるとデフォルトゲートウェイがeth1とその所属するセグメントに取られていた。
調べてみると解決法はいくつかあるようですがディストリビューション特有のものもある……、今回は自分の機材ではないのでわかりやすくしたい。
ということで、一つのファイルを見ればわかるよう/etc/network/interfaces
をいじって解決しました。
sudo vim /etc/network/interfaces
auto lo eth0 iface io inet loopback iface default inet dhcp iface eth0 inet dhcp allow-hotplug eth1 iface eth1 inet static address 172.31.40.24 netmask 255.255.255.0 network 172.31.40.0 broadcast 172.31.40.255 gateway 172.31.40.254 up route add -net 172.31.40.19/32 gw 172.31.40.19 dev eth1 up route del default gw 172.31.40.254
下2行が問題解決のために記述した設定です。
up route add -net XXX.XXX.XXX.XXX/ZZ gw YYY.YYY.YYY.YYY dev [Interface]
1行で特定機器への通信のためにeth1を使用するようにしました。XXX/ZZはどのnetwork宛の通信にInterfaceを使うかで、YYYはそのInterfaceのデフォルトゲートウェイのIPです(自分の場合はeth1)。
up route del default gw QQQ.QQQ.QQQ.QQQ
2行でおそらくdhcpでIPをもらう前に定義されてしまったであろうデフォルトゲートウェイを削除しました。 完璧にデフォルトゲートウェイを更新するのであれば新しいデフォルトゲートウェイを書いてやる必要があるかと思いますが、今回はせっかくDHCPでIPを取得しているので、放置することで正しいルートを見つけ出してくれることを期待して祈りながらリブートしました。 無事eth0がデフォルトゲートウェイとして使われるようになり問題は解決。やったぜ。
Ubuntu14.04でgem install rmagickが出来ない
aptでimagemagickを入れたのにgemでrmagickを入れようとするとエラー
```
sudo apt-get install pkg-config
sudo apt-get install libmagickwand-dev
```
いつも忘れてしまう…
VimでRubyのリファレンスを引く
今日はCPS Lab(ラボライフ!) Advent Calendar 2014 - Adventarの10日目の記事です。
身内だから軽い気持ちでエントリしたけどこんなに遅れるとは…まったくアドベントカレンダーの体をなしていない…… いやほんとすいませんでした。
前日はイウィ問題の解き方 - えるざっぷむーぶめんとでした。
僕はJavaを書く以外ではVimを使っているので、設定ファイルであるvimrcをいじったりします。 今回はVimを使って、Rubyのリファレンス(ri)を便利に引く方法を紹介します。
Vimにおけるプラグイン
最近のエディタはもとから高機能ですが、簡単に機能が拡張できるようになっています。atomであればapm、emacsであればpackage.el等、パッケージマネージャを用いることで、設定やコマンドを少し記述するだけですぐに機能の拡張が利用できます。 Vimにおいてもプラグインは存在し、操作性をさらに拡張できます。便利。
プラグインマネージャ
プラグインの導入・管理に使います。 Vimにおけるプラグインネージャは複数あります。オススメは高機能なneobundleです
上記のURLに導入方法とサンプルのvimrcも書いてあります。 他にも
プラグインの導入
unite.vim
汎用的多機能インタフェースを使えるようになる
vim-ref
リファレンスを引くためのプラグイン
vim-ref-ri
vim-refのri用ソース
導入用vimrc
filetype off if has('vim_starting') set runtimepath+=~/.vim/bundle/neobundle.vim/ call neobundle#begin(expand('~/.vim/bundle')) endif NeoBundleFetch 'Shougo/neobundle.vim' if !has('Kaoriya') NeoBundle 'Shougo/vimproc', { \ 'build' : { \ 'windows' : 'make -f make_mingw64.mak', \ 'unix' : 'gmake', \ 'cygwin' : 'make -f make_cygwin.mak', \ 'mac' : 'make -f make_mac.mak', \ 'linux' : 'make', \ }, \} else NeoBundleFetch 'Shougo/vimproc' endif NeoBundle 'Shougo/unite.vim' NeoBundle 'thinca/vim-ref' NeoBundle 'yuku-t/vim-ref-ri' call neobundle#end() NeoBundleCheck filetype plugin indent on syntax enable
neobundleを導入してvimrcに記述することでプラグインを簡単に導入できます。
:Ref ri Net::HTTP(調べたいもの)
:Unite ref/ri
(絞り込み検索)
このほかにも適当にキーにマッピングすることで快適な環境ができます(・ω<)
お茶を濁しつつLinuxでwpa_supplicant
備忘録続きませんでした。
今日はCPS Lab(ラボライフ!) Advent Calendar 2014 - Adventarの4日目です。
昨日の記事は論文読み始めました - Rashimaiのブログでした。
VagrantやらVimあたりでちょっと書こうと思ったんですが間に合いそうにないので過去のものでお茶を濁します。
Linuxボードで無線LANに接続するためのwpa_supplicant - Qiita
明日は Naoya Kinoshita さんです。
すまない…すまない……
備忘録したい
続きますよう.