狐の王国


2005年12月11日() [過去の今日]

#2 64bit kernel with 32bit userland

せっかくAthlon64を買ったのに32bitのままで使い続けるのももったいない、というか、違いを確認するための64bitバイナリ実行環境が欲しいというのもあって、いろいろ試行錯誤してみた。

debianのi386 portにも実はlib64*とかlibc6-amd64とかがあって、userland的には64bitバイナリが実行可能だったりする。あとはカーネルが64bit化されれば、64bitバイナリを実行できるはず。

ということでIRCでその筋のエロい人に教えてもらったり、ウェブを検索したりして実際にやってみた。

まずは

# apt-get install libc6-amd64 libc6-dev-amd64 lib64*

で、64bitライブラリを揃える。

それから64bitカーネルをコンパイルするために、クロスコンパイル環境を作る。これがいろいろと曲者だった。

$ apt-get source binutils gcc-3.4

してソースをゲットしたはいいが、これを手makeしなきゃならない。 まずはbinutilsから、gcc-3.4を使ってmakeする

$ CC=gcc-3.4 ./configure --prefix=/usr/local/cross_x86-64 \
  --target=x86_64-linux --host=i686-linux --build=i686-linux
$ CC=gcc-3.4 make
$ make install

そしたら次にgcc-3.4をコンパイルするのだが、これがちょっとめんどう。

# cp -a /usr/include /usr/local/cross_x86-64
# cp -a /usr/src/linux/include/linux /usr/local/cross_x86-64/include/linux
# cp -a /usr/src/linux/include/asm-generic /usr/local/cross_x86-64/include/linux/
# cp -a /usr/src/linux/include/asm-x86_64 /usr/local/cross_x86-64/include/linux/asm
# cp -a /lib64/* /usr/local/cross_x86-64/lib/
# cp -a /usr/lib64/* /usr/local/cross_x86-64/lib/

と、このようにライブラリをまとめて置いといてやらないといけないみたい。

さて、そしてgcc-3.4のコンパイル

$ CC=gcc-3.4 PATH=$PATH:/usr/local/cross_x86-64/bin ./configure \
--prefix=/usr/local/cross_x86-64 \
--target=x86_64-linux --host=i686-linux --build=i686-linux\
--enable-languages=c --with-gnu-as --with-gnu-ld --disable-shared 
$ CC=gcc-3.4 PATH=$PATH:/usr/local/cross_x86-64/bin make 
# make install

ふう、これで準備完了。いよいよカーネルの構築。

$ make HOSTCC="gcc-3.4" ARCH=x86_64 \
CROSS_COMPILE=/usr/local/cross_x86-64/bin/x86_64-linux- oldconfig
$ make HOSTCC="gcc-3.4" ARCH=x86_64 \
CROSS_COMPILE=/usr/local/cross_x86-64/bin/x86_64-linux- menuconfig
$ make HOSTCC="gcc-3.4" ARCH=x86_64 \
CROSS_COMPILE=/usr/local/cross_x86-64/bin/x86_64-linux- vmlinux
$ make HOSTCC="gcc-3.4" ARCH=x86_64 \
CROSS_COMPILE=/usr/local/cross_x86-64/bin/x86_64-linux- install
$ make HOSTCC="gcc-3.4" ARCH=x86_64 \
CROSS_COMPILE=/usr/local/cross_x86-64/bin/x86_64-linux- modules
$ make HOSTCC="gcc-3.4" ARCH=x86_64 \
CROSS_COMPILE=/usr/local/cross_x86-64/bin/x86_64-linux- modules_install

カーネルの設定でIA32 Emulationは必ず入れておくこと。考えたらmake-kpkgを使わずlinuxカーネルを作ったのってはじめてだな。こんなんでいいんだっけ?(わら

ま、とりあえずこれで再起動。すると32bitのmodprobeなんかもちゃんと動いて、モジュールもきちんと組み込まれる。適当なCのソースをcc -m64でコンパイルしても、ちゃんと動く。

よしよし、とりあえずこれで64bitバイナリ実行環境は整ったぞっと。あとはベンチマークに適したソフトを見っけて来るかなあ。

(@707)

む?:

一通りのデバイスが問題なく動いてるので気にならなかったが、チューナカード(saa7130)が動いてなかったようだ。

dmesgをみると、

ioctl32(tvtime:19971): Unknown cmd fd(6) cmd(80685600){00} arg(ffffb288) on /dev/video0
ioctl32(mplayer:19988): Unknown cmd fd(4) cmd(80685600){00} arg(083e98fc) on /dev/video0
ioctl32(mplayer:19998): Unknown cmd fd(4) cmd(80685600){00} arg(083e98fc) on /dev/video0
ioctl32(mplayer:20008): Unknown cmd fd(4) cmd(80685600){00} arg(083e98fc) on /dev/video0
ioctl32(v4l-conf:20011): Unknown cmd fd(4) cmd(80685600){00} arg(ffffb67c) on /dev/video0
ioctl32(xawtv:27124): Unknown cmd fd(4) cmd(80685600){00} arg(080c5188) on /dev/video0
ioctl32(v4lctl:27126): Unknown cmd fd(4) cmd(80585600){00} arg(0806a458) on /dev/video0
ioctl32(v4lctl:27126): Unknown cmd fd(4) cmd(80685600){00} arg(0806a458) on /dev/video0

むう、このへんはPure64じゃないと動かないぜって事なのかな?

(@779)

この記事のURI

#1 ドライバチェックWeb

おお、lspci -nの結果を張ったら、わらわらとデバドラ情報が。

さっそくうちのlspic -nも突っ込んで、Linuxにまだ取り込まれてないNICのドライバ情報も書き込んで来た。こういう情報が集まると、自動認識機構なんかに役立つんだろうなあ。

(@396)

この記事のURI

2004年12月11日() [過去の今日]

#1 朴王路美の書き方

こちらのページ によれば、「朴璐美」と書けばいいらしい。

しかしHNSでは実体参照が使えない罠……

(@809)

この記事のURI

2003年12月11日(木) [過去の今日]

#3 開通記念日

niftyからメールが来て、「入会6周年ありがとうございます」だと。そーいやパソコン通信がやりたくてクレジットカードの手配に手間取ってる間に世の中インターネット時代になってしまったんだったなあ。んで、インターネットとniftyをほぼ同時に始める事になったんだった。ということで、本日12月11日は俺のネット開通記念日。

しかし、たった6年しかたってないとは驚きだ。もっと長くネットにいるような気がする。中身の濃い6年間をすごして来たという事か。

……まてよ。確か97年の7月にIRCを始めた記憶が。ネットに繋いだのはその前年の12月のはずだから、96年だよなあ。だとすると7周年のはずなんだが。1年間違えて記憶してたのかな。

(@428)

この記事のURI

#2 できるシリーズ

本屋でみかけてびっくりしたのだが、あのインプレスの できるシリーズ に、Linux関係の本が存在してるのね。 RedHat6.0を採用してる本 なんかもあるのだから、そうとう昔からやってたのだなあ。全然気付かなかった。

しかし、DNSやらSMTPやらの設定まで載ってたが、内容的に大丈夫なんだろうか。きちんと見てないのでなんとなく不安だ。図書館にでもあれば借りてじっくり見てみるのだが。

(@416)

この記事のURI

#1 説得できるWebデザイン200の鉄則

図書館で見掛けたのでぱらぱらめくってみた本。意外にまともな事が書かれててびっくりした。デザイン手法としては参考になる。

ただ、デザイン手法に対応したCSSやHTMLのコードがまったく無い。こういうふうにしようと思っても具体的なやり方は読者が考えねばならない。CSSやHTMLの技術は持っていてもデザイン手法に疎い、という向き *1 には良書であろう。手元に置いておきたいと思って借りて来なかったのだが、本屋では見付けられず。むぅ。

(@413)


*1: って、それは俺の事か。
この記事のURI

最近の記事

以上、3 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ