2011-01-01から1年間の記事一覧

getrusage

Linux kernel 2.6.38.7で時間を計測する必要があり、多少調べたソースはMANPAGE http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/time.7.htmlgetrusageを使うとtickよりも高い精度で時間測定ができるらしいので使ってみた 結果は以下のようになった …

.configファイルの生成方法

Linuxカーネルを構築する上で最も苦労するのは.configを生成するところじゃないだろうか? make oldconfigでインストール時の.configを使い回すのは楽ちんだが、大量の不要なドライバが入っていてコンパイルに時間がかかる 手動で.configをつくる場合、デバ…

Kernelの初期化について

x86_64のカーネル初期化ルーチンを追ってみた マルチコアは最初に起動するコアをBSPと呼び、それ以外をAPと呼ぶ BSPはBIOSとブートローダを経て、カーネルの入り口であるstartup_64にたどり着き、 その後INITプロセスを実行するまでハードウェアの初期化を中…

/proc/interrupts

Linuxにおける割り込み処理について調べている /proc/interruptを表示していみて気づいたことを書いてみる CPU0 CPU1 0: 51 13 IO-APIC-edge timer 1: 1671 1363 IO-APIC-edge i8042 8: 1 0 IO-APIC-edge rtc0 9: 0 0 IO-APIC-fasteoi acpi 12: 3 1 IO-APIC-…

kexecのpurgatory

kexecはメモリ上にカーネル一式(カーネル本体、コマンドライン引数、initrdなど)を展開する また同時に特別な領域としてpurgatoryというものを展開するpurgatoryはカーネルに入る前の代替初期化ルーチンらしい cold bootの場合、CPUのモードの初期化などが…

kexec、kdump[2]

kexecの各セグメント(bzImageとか)の展開先の指定方法について調べている。 (1)kexec-toolsのオプションであるmem-minとmem-maxで指定可能だとか あと(2)カーネルオプションのcrashkernel=ss@nnでも可能である (1)(2)の方法で試しにやってみる 前提としてK…

kexec、kdump

kexec/kdumpについて調べている。 Kexecはウォームブートといって電源を落とさずに再起動するツール。Linuxカーネルのメインラインに入っている。 Kdumpはカーネルクラッシュの際にkexecで新しいカーネルを起動して、ダンプ内容からデバッグを行うツール。Ke…

拡張機能を公開してみた

以前から少し拡張機能を作っていたのだが、それを思い切って公開してみた https://chrome.google.com/webstore/detail/cmoeidhkjfldpenpckoddbelajajjncl# 公開するのに$5かかるとはね・・・何ができるのかというとCtr-cでコピーした文字列をバッファーに蓄…

newlibの導入(2)

前回newlibの導入はできたと思って記事を書いたけれど、間違いだった 今回はgcc4.2.3をコンパイルできたのでnewlibのコンパイルにも成功した newlibをコンパイルしてインストールするとインストール先にlib/とinclude/フォルダができる lib/にはcygmon-crt0.…

newlibの導入

newlibというのは軽量なライブラリです。 libc,libmなどをユーザプロセスが使うために導入します。newlibを作成する環境はi686なんですが、自作OSはi486なので、合わせないといけない(多分。実際は分からないだけ//) なのでconfigure --target=i386-elfし…

文字列表示

先日、画面の解像度を1024x768に変更した それまではキャラクタディスプレイだったので 文字の表示はハードウェア任せだったそこで文字列を表示する関数およびフォントが必要となった そこでフォントは30日OSから持ってきたもの(hankaku.bin)を使った hankak…

今後の予定

これまで今までやってきたことの中で30日OSとの違うところ 開発環境をLinuxに移した C++,nasm GRUBで起動できるようにした 仮想メモリ IPC メモリ管理(kmalloc,new,delete) IDEドライバ fork Ext2 elfローダ exec プロテクトモードでの画面モード切り替え …

画面の解像度を上げる

今まで解像度を320x200のまま使ってきた 簡単に文字が表示できるのでいいのだが、表示できる文字数が少ないのがネックそこで解像度を上げる 30日OSの方法をパクろうかと思ったが自作OSは現在GRUBを使っているのでBIOSを使ってビデオモードを変更できな…

exec実装

execが実装できた(かなり適当なものだけど) そのためにやったことは まずelf形式ファイルの扱い型の勉強 リンカスクリプトを書いて、自作OSのメモリマップに合わせる elfヘッダの指示どおりのアドレスに実行ファイルの内容を読み込む エントリポイントへジ…

execの実装計画

ハードディスクからファイルを読めるようになったので execを実装して、実行ファイルからプロセスを起動できるようにするローダは実行ファイルの各セクションをメモリ空間に配置する 実行ファイルの形式はELFフォーマットにするローダ以外に必要なのこと普通…