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にバイナリ込みで入っているので、以下のように展開してインストールするだけです。

LS-GLにncursesのインストール

というわけで、ncursesのクロスコンパイル&インストールに再挑戦します。実は最初にzshを入れたときにも、ncursesでハマっていたのでした。 ソースはLS-GLのソースコードCDのsrpmをを使用。手順は次の通り。

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

引き続き、makeをインストール。 せっかくセルフコンパイラを入れたので、セルフで作りたくなりますが、makeをビルドするにはmakeが必要なので、まだクロスコンパイルしかできません。 以下、やり方。

LS-GL用セルフコンパイル環境(gcc)を構築

以前(id:NeoCat:20070819)構築した、LS-GL用のクロスコンパイル環境を使って、LS-GL本体で動作するセルフコンパイル環境を作りました。やはりネイティブ環境でしかビルドできないソフトもあるので。 やり方は以下の通り。

LS-GL向けにscreenをコンパイル

シリアルを付けてちょっとカスタマイズを加えたLS-GL上で、perlで書いたデーモンを常駐させています。 が、このデーモンが、たまに落ちているようなので、エラーメッセージなどがコンソールに出ていないか記録するためにscreenをLS-GLに導入します。 やり方…

gnuplotのクロスコンパイル for LS-GL

シリアルをつけ、クロスコンパイル環境を作ったLS-GL(id:NeoCat:20070808, id:NeoCat:20070819あたりを参照)ですが、引き続きいくつかソフトをクロスコンパイルしました。というわけで、クロスコンパイルmemo、gnuplot編。ちなみに、導入の目的はとあるセ…

Brainf*ck 小さなインタプリタ〜アセンブラバージョン

書かないと言っていたのに書いてしまいました。へたれなのでNASMじゃなくgasです。i386。

小さなBrainf*ckインタプリタに挑戦

Brainf*ck(何となく伏せ字)という言語があるそうな。たった8つの命令しかないのに、(理論上)あらゆるプログラムが書ける(というかチューリング完全な)言語です。詳しくは Wikipediaの記事などを。8つしか命令がない、引数もないので、コンパイラやイン…

LS-GL向けにzshをクロスコンパイル

テスト&クロスコンパイルの練習がてら、zshをコンパイルしてLS-GLにインストールしてみます。 4. zshのビルド zsh-4.2.6のソースをゲット&ダウンロード ncursesのコンパイルがうまく行かないので、本体の/usr/lib を/usr/local/arm/arm-none-linux-gnueabi…