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命令しか無いので書くのはとても大変です。一方、コンパイラやインタプリタを書くのはとても簡単…

shebangの怪

LinuxとMac OS Xではshebangに書いたオプションの扱いが異なるらしい、という話。ちょっと実験してみました。 args.c => gcc -o args args.c でコンパイル #include <stdio.h> main(int argc, char *argv[]) { int i; for (i = 0; i < argc; i++) printf("argv[%d] = </stdio.h>…

SystemTap用のemacsメジャーモードを書いてみた

tokyo-emacsをustreamで眺めていてElispが書いてみたくなり、SystemTapスクリプトを編集&ついでに実行できるメジャーモードを書いてみました。 これを使うと、EmacsからホストのLinuxカーネルをHackして、いろんな情報をとったりできます。 書いたものは本…

ゆの in SystemTap - 応用

id:NeoCat:20080713:1215944362 のようなテクニックを使うと、どんな言語でもソースの読み込み時点で書き変えてしまうことにより、ゆの対応にできる? 例えば % cat yuno.rb puts "x / _ / x < 来週も見てくださいね!" % ruby yuno.rb <= 書き換えられた上で…

ゆの in SystemTap - 解説?

id:NeoCat:20080713:1215944362 の簡単な解説です。まずSystemTapとは、簡単なスクリプトでLinuxのカーネルの動きを解析するためのツールです。 詳しくはRedHatの解説in日本語とか本家サイトとか、man stapとかman stapexとかをどうぞ。 普通は情報をとるだ…

ゆの in SystemTap - ゆの対応カーネルですよ!

Fedora 9のLinuxカーネルをSystemTapでライブに改造して『ゆの』対応にしてみます。x / _ / x #「ゆの in language」の趣旨とは申し訳ないくらいに違うかもだけど。。 元ネタ: ゆの in Ruby - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - s…

ついでにAndroidでネイティブHelloWorld再び

ついでなので、昨日と同様、インストールしたツールチェーンで % cat test.c main(){puts("Hello,World!")} % arm-none-linux-gnueabi-gcc -static test.c -o hello1 として作ったhello1をandroidで動かしてみました。 # /sdcard/hello1 Hello,World! 普通に…

Android用にカーネルビルド

おとなしくLinux(Fedora 9) on Parallelsで。やり方は http://honeypod.blogspot.com/2007/12/compile-android-kernel-from-source.html と全く同じ。CodeSourceryからGNU/Linux用の IA32 GNU/Linux Installerをダウンロード。バージョンは2008q1-126を使い…

Android SDKで遊んでみた

Mac OS X 10.5な環境で試してみます。 とりあえずダウンロード&起動 Googleからダウンロードするといきなり動かせます。この簡単さは偉いなあ。1. http://code.google.com/android/index.html から右のDownload the SDKリンクをたどってダウンロード。 2. …

MacBook Pro + Linuxで3Dデスクトップ

こんな感じにしてみました。透明ターミナルの裏側はブラーまでかかってて妙に良い質感。しかもサクサク動く。さすがはGeForce 8600M。 iTunesやiPod touchのCoverFlowのようなアニメーションでウィンドウを切り替えられたりも。 必要なもの: ネイティブで動…

Fedoraで明るさ調整 for MacBook / MacBookPro

BootCamp環境でLinuxを起動すると、スクリーンが目一杯明るくなってしまうことがあり、眩しくて仕方がない。下のサイトにあるプログラムを使うと、明るさが調整できるようです。http://modular.math.washington.edu/macbook/ http://modular.math.washington…

Fedora9をParallelsで使う

Feodra 9をParallelsにインストールしてみました。 やり方は簡単…とは行かなかった。Xが立ち上がらず、テキストインストールになってしまいました。 同じようにXが立ち上がらないという人はたくさんいる模様。 まあとりあえず画面の指示に従って進めていき、…

ParallelsとBoot CampでのLinuxパーティション共用〜X自動設定編

id:NeoCat:20080421 のエントリで、MacのBoot CampとrEFItを使ってパーティション上にインストールしたLinuxを、Parallelsからも起動できるようにしましたが、ハードウェア構成が変化するため、そのままではXの起動に失敗してしまいます。 そこで、これを自…

Parallelsからトリプルブート環境のLinuxを起動

昨日(id:NeoCat:20080420) rEFItを使って構築したトリプルブート環境(Boot Camp)用のLinuxを、Parallelsから起動できるようにする方法を考えてみました。 Parallels内蔵のBIOSがHDDをうまく読めないため(?)、CD-ROMイメージを使ったhackが必要なようです。以…

Mac OS X + WIndows XP + Linux (Fedora 8)のトリプルブート環境に移行

Boot Campを使うとデュアルブート環境は比較的簡単に構築できますが、3種類以上のOSを同時にインストールする「トリプルブート」はサポートされていません。しかしサードパーティ製のブートローダ「rEFIt」というものが開発されており、これを使えばトリプル…

squidのビルド&インストール

海外の出張先でネットワークの調子が悪く、Webがまともに使えないと言う事態に遭遇しています。orz 何かホテルのtransparent proxy側でDNSが引けてない模様でGoogleさえ「The requested URL could not be retrieved」といわれてしまいます。既にWebは一つの…

Linuxでリアルタイム・プロセスを作るには…?

Linuxにはリアルタイム・プロセスという、他のプロセスよりも優先してCPUスケジューリングを割り当てるプロセスを設定することができます。 詳しくは、このへんとかMANPAGEを見て頂くとして…。お手軽に任意のコマンドをリアルタイム・プロセスにするような方…

emacsのタブキーの挙動

Fedoraを7か8に上げたあたりから、emacsのバージョンアップに伴って、Fundamentalモードでのタブキーの動作が変わってしまいました。タブを押すと、前行の空白位置に合うまで進むようになったんですよね。Text-modeとかならともかく、Fundamentalでやられる…

MediaTombをLS-GLにインストール

LS-GLにMediaTombを入れて、DLNAサーバ化してみました。これでPlayStation3から、いつでもメディアにアクセス可能になります。 関連ライブラリがたくさんありますが、順番に片付けていきます。時間がかかるので、なるべくクロスビルドしますが、うまく行かな…

distccでクロスコンパイル

これまでに母艦のMac、LS-GL本体の環境にコンパイル環境は作ったのですが、やはり母艦の方が速いので、なるべく母艦側でコンパイルを流したいのですが、一方でクロスコンパイルに対応していないソースコードも多くあります。 こんなとき、distccを使って、co…

LS-GLにopensslをインストール

opensslを使った開発に必要なヘッダファイル・ライブラリをLS-GLに入れておきます。 といってもソースCDにバイナリ込みで入っているので、以下のように展開してインストールするだけです。