Linux

コマンドの入出力が繋がった端末を移動させる

時間のかかるコマンドを起動した後、「あ、tmux(とかscreen)の中で実行すればよかった…」と気づくことがたまにあるわけですが、そんな時に強制的に端末を移動させる方法として、gdbをアタッチし、そのコマンドのファイルディスクリプタ(fd)の示す先を変更し…

iPhoneのバッテリー残量を取得

iPhoneのバッテリーがかなりヘタってちょっと使うとすぐに電源が落ちてしまうようになってしまったので、自分で交換してみました。やり方を紹介したページを見つつ、バッテリー\2000 + 工具セット \1000 で無事交換成功し、日中そこそこ使っても丸一日持つよ…

マイナンバーカードでSSHしてみた

マイナンバーカードでSSHする - AAA Blog という記事が出ていたので、マイナンバーカードを使ったSSHログインをLinux上でやってみました。環境は出たばっかりのFedora 24です。カードリーダーは、上記の記事のような非接触式ではなく、接触式のICカードリー…

近接センサでRaspberryPi LCDのバックライトを点灯

Raspberry Pi 2に7インチタッチディスプレイをつけて、パッと見たい情報(天気予報とか時計とかバス時刻表とか)を表示するのに使っているのですが、常時つけっぱなしになっているのが気になっていました。周囲に人がいるときだけオンになったらいいなと思い…

Open vSwitchやNamespaceの関係図をコマンド一つで描く

LinuxでSDNっぽいことをOpen vSwitchでやろうとすると、BridgeやらNamespaceやらInterfaceやらが増えまくって全貌の把握が困難になってきます。また、なぜかpingが通らないときなど、あっちこっちでtcpdumpして回るのは大変です。そこで、コマンド一つでOpen…

FedoraやCentOS 6/7、RHEL 6/7のinitramfsを展開する

FedoraやCentOS 6/7、RHEL 6/7のinitramfsでは、先頭にEarly CPIO image(CPUのmicrocodeなどが入っている)がつくようになり、本体の起動RAMディスクイメージ(圧縮cpio image)はその後に来ます。本体を展開するには、先頭部分を飛ばす必要があるため、dracu…

Linuxカーネル空間で2048で遊ぼう

最近大ヒットしたゲームと言えば2048。上下左右にタイルを動かして数字をくっつけ、2048を作るだけのシンプルなゲームですが、それだけにハマりやすい。 [参考記事: 「2048」:19歳のイタリア人が、ミニゲームでインターネットを征服!|WIRED.jp] 2の累乗…

Raspberry Piで航空機からの位置情報信号ADS-Bを受信してみた

最近ニュースで航空機の捜索が話題になっていましたが、その中でADS-Bという単語が出てきました。ADS-B(Automatic Dependent Surveillance-Broadcast)は、航空機から1090MHzの周波数で発信されている、識別子、GPSによる現在位置、高度、対気速度などを含…

QEMU guest agentを使って仮想マシンのIPアドレスを取得

LinuxのKVMで、ゲストのIPアドレスを取得する方法の覚え書き。 VMのNICの接続先が仮想ネットワークであれば、 /var/lib/libvirt/dnsmasq/virbr0.leases等にDHCPサーバが仮想マシンにリースしたIPアドレスが入っていますので、ここから取得できます。 一方、…

emacs daemonの設定メモ

ちょっと設定を見直したのでそのときのメモです。 拡張をいろいろ追加すると起動に時間がかかるというemacsの欠点を補う方法として、emacs --daemonというものがある。これは要するにemacsをデーモンとしてバックグラウンドで起動しっぱなしにしておき、使い…

iOS7のSiriのMPTCP通信をキャプチャしてみた

iOS7のSiriはMPTCP (Multi-path TCP) に対応しているとのこと。参考: iOS 7は3G・4G通信とWi-Fiなどを同時使用して回線速度を安定させる「MPTCP(マルチパスTCP)」に対応していることが判明 - GIGAZINE 参考: iOS 7でMPTCPがサポートされた話 | nunnun's webl…

kobo touchをWebブラウザからリモート操作

一つ前の記事(kobo touchのスクリーンショットをHTTP経由で取得 - Okiraku Programming)に引き続き、Webブラウザからkoboをリモート操作できるようにしてみました。(正確には画面をタップできるようにしただけ)セットアップ方法は一つ前の記事と全く同様で…

kobo touchのスクリーンショットをHTTP経由で取得

kobo touchを改造して、Webブラウザ等からスクリーンキャプチャを撮れるようにしてみました。 内部的にはカラーで処理されているのが分かりますね。 やり方は以下の通り。0. あらかじめ、telnet/ftpなどを有効化してファイルを転送できるようにしておきます…

Raspberry PiにI2C液晶をつける

Raspberry Piは、GPIOピンの一部をSPIやI2Cインターフェースとして使用できます。 これを利用して、Strawberry Linuxで販売されているI2Cキャラクタ液晶をRaspberry Piに取り付けてみました。 配線 Raspberry PiのGPIOのピン配置は下記で分かります。 RPi Lo…

AdafruitのRaspberry Piケースを購入

Adafruitの通信販売でRaspberry Piケースを購入。お値段 $14.95、送料が$10.28 で合計 $25.23。Pay Palで支払って 2,035円でした。 注文して2日で発送されて、そこから7日で、日本郵便で自宅まで届きました。 開封すると、レーザー加工でアクリルの保護紙が…

単体でも実行可能な共有ライブラリの作り方

Fedora 17に含まれる実行可能な共有ライブラリ - Okiraku Programming の続きです。 さて、前記事で説明した glibc のような実行可能なshared libraryを作るにはどうすれば良いか? が気になるところですね? 基本的にはentry pointを指定して共有ライブラリ…

Fedora 17に含まれる実行可能な共有ライブラリ

一般的な共有ライブラリ(shared library。lib*.so)は実行可能ではありませんが、その構造は実行ファイルと同じELF形式で、大きな違いはありません。( →参考: http://mkosaki.blog46.fc2.com/blog-entry-107.html ) 例外的に、glibc ( /lib64/libc-*.so ) は…

hidden symbolの関数呼び出しをフックする

Linuxでは一般的なライブラリ関数の呼び出しはLD_PRELOADを使ってフックして、別の動作をさせる(オーバーライドする)ことができます。 (参考: LD_PRELOADでBrainf*ck - Okiraku Programming ) しかし、フックできる関数には条件があって、PLT(procedure…

AFPサーバ(netatalk)のLion対応状況

Macとファイルサーバの間でnetatalkのafpdを利用してAFPでファイル共有している場合、Mac OS X 10.7 LionはSnow Leopard以前と対応状況が異り、新しいバージョンが必要になっています。netatalkを使ったNAS製品等でも、Lionだと接続に制限が出たりしています…

LinuxのYUREXドライバ

このエントリはカーネル/VM Advent Calendarの48日目向けです。 2011/1/4にLinuxカーネル2.6.37がリリースされました。BKL(Big Kernel Lock)の除去やファイルシステムのスケーラビリティなど、多くの改善が行われています。 そんな中、カーネルをビルドしよ…

PPTPサーバ立てた

最近カンファレンスなどに出かけてオープンな無線LANアクセスポイントが提供されている場合、よく「セキュリティに気をつけて! VPNを使って下さい」てな掲示を見かけます。 そうだよねーと思って、ARMなLinuxマシン(NAS)をPPTPサーバに仕立ててみた時のメモ…

iPod touch (1G)にAndroidを入れてみた

iPod touch/iPhone向けAndroidである、iDroidを入れてみました。 iPhone 2G/3Gのように、もうすぐCydiaからBootlaceを入れるだけで簡単インストールできるようになるのかもしれないけど、それを待たずに手動で。 参考にしたサイト http://iodonacht.blog90.f…

Logicool MX5500に付属のBluetoothドングルをLinuxで使う

Logicool MX5500等、Logicoolの一部のワイヤレスキーボードやワイヤレスマウスのレシーバー(USBドングル)は、USB Bluetoothアダプタとして使用することができるようになっています。このUSBドングルはちょっと特殊で、単純にPCに接続しただけだとHIDモードと…

1linerでstraceやltrace

だいぶ前に書いた、引数に指定したC言語のコードを実行するスクリプト、ce。 何となく作ってみた。Cでワンライナー(1liner)っぽいものが書けます。 これを拡張して、ltraceやstraceが簡単に実行できるようにしてみました。Binary Hacksのお伴にいかがでしょ…

VMWare FusionでFedora 11のsudoが遅い

VMWare Fusion上でFedora 11をインストールしてみたところ、sudoコマンドが異様に遅い。 tcpdumpしてみたところ、自ホスト名をDNSルックアップに行ってしまい、そのままタイムアウト待ちになるのが原因の模様。 /etc/hosts に 127.0.0.1 localhost.localdoma…

MacBook Pro + Fedora 11で無線LANを使うには

MacBook Pro (15"、Penryn搭載の2008年2月モデル) に Fedora 11をBoot Campでインストールしたときの備忘録。ndiswrapper (Windows用NICドライバのインターフェースをLinux上に実装したもの)を使って、Windows用のドライバで無線LAN(Broadcom 4328を搭載)を…

Linuxのロゴが変わるらしい!?

Linuxのロゴといえば、Tuxというペンギンが有名で、カーネルソースの中にも入っていたのですが、最近こっそり変更されていたようです。LWNの記事: http://lwn.net/Articles/323966/git上でRusty Russelがロゴを差し替えたのを、Linusがマージしています。htt…

LD_PRELOADでBrainf*ck

LD_PRELOADを使って、GNU/Linuxに含まれる(ほぼ)全てのコマンドで、Brainf*ckを実行可能にしてみます。 LD_PRELOADとは Linuxでは、同じ名前の関数(などのシンボル)を持つ複数のライブラリがダイナミックリンクされている場合、最初に見つかった方が使われる…

PIDネームスペースを試してみる

Linux 2.6.24以降には、PIDネームスペースを複数持てるという機能が入っています。(PID = process ID。) 詳しい説明は Process IDs in a multi-namespace world [LWN.net] などに譲りますが、おおまかには、 cloneシステムコールでプロセスを生成する際、CLO…

SystemTapでBrainf*ckを実装してみる

Brainfuckとは + - , . [ ] の8命令だけからなるプログラミング言語です。チューリング完全なので、頑張ればどんなプログラムでも書けるハズですが、なにしろ8命令しか無いので書くのはとても大変です。一方、コンパイラやインタプリタを書くのはとても簡単…