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

システムコールと特権管理などを追加しました

メモリ管理を追加しました - へにゃぺんて@日々勉強のまとめこちらの記事からの続きで、OSづくりの記事です。 今回は以下の機能を追加しました。 # といっても、まだまだ「一応」な機能ですが。。 ロック機能 省電力機能 システムコール 特権管理 (機能を実…

Linuxカーネル4.3をビルド・起動確認してみました

昨日(11/2)、Linuxカーネル4.3がリリースされましたので、 例によって、ビルド・動作確認とバージョン間の変更差分を簡単に見てみました。 ビルド・起動確認 ビルド環境は、前回同様、以下のとおりです。 マシン: ThinkPad E450 CPU: Intel Core i7-5500U Me…

メモリ管理を追加しました

タスク管理を追加しました - へにゃぺんて@日々勉強のまとめこちらの記事からの続きで、OS作りについての記事です。 今回は見た目の差分は無いので、いつものGIFアニメは無いです。 ついに、メモリ管理機能を追加しました。 ソースコード いつもどおり、以…

Kprobesの使い方

Kprobesは、レジスタ情報ダンプなど任意の処理を、アセンブラの命令単位で実行できる機能です。 利用するにはカーネルモジュールを作成する必要はありますが、 カーネルの再ビルド無しで、カーネル内のすべての命令をデバッグできます。

ftraceの使い方

ftraceの使い方については、以下の記事でも紹介しましたが、 ftraceを試してみました - へにゃぺんて@日々勉強のまとめ 過去には紹介しなかった使い方も分かったので、あらためてまとめます。 過去に紹介したときは、 「関数単位でカーネルの実行状況のトレ…

dyndbg(dynamic debug)の使い方

printk()はデバッグ出力無効化の際には、コメントアウトするなりして再ビルドする必要があります。 何度もビルドを繰り返すのは面倒なので、デバッグ出力の有効/無効を実行時に動的に切り替えられるようにする機能が dyndbg(dynamic debug)です。

Linuxカーネル4.2をビルド・インストール

昨日(8/30)、Linuxカーネル4.2がリリースされましたので、 例によって、ビルド・インストールしてみました。 なお、やっと64ビットマシンを購入しましたので、 今回からは、X86_64でビルドします。

タスク管理を追加しました

x86(32ビット)用OSを作っています - へにゃぺんて@日々勉強のまとめ こちらの記事から引き続き、OS作りを少しずつ進めていました。 一応、「タスク管理」と呼べるものが実装できたので、記事にしておきます。 ソースコード 前回の記事と同じくGitHub上で開…

Linuxカーネル4.1をビルド・インストール

Linuxカーネル4.1が公開されましたので、 さっそく、ビルド・インストールしてみました。 毎度のことなので、ビルドまでを行うシェルスクリプトを作ってみました https://github.com/cupnes/sandbox/blob/master/build_kernel.sh 「初期設定(ここから)」から…

シグナルの使い方と実装について

今回は、Linuxのシグナルについて、自分なりにちゃんと調べてみましたので、 記事にまとめてみます。ほとんどUNIXシグナルと変わらない話だとは思いますが、ソースコードは Linuxのものを参照しているので、Linuxに限った話も混じっているかと思いま す。

Linux 4.0ビルド・起動確認と、ライブパッチソースの在り処

今日(4/13)、Linux 4.0がリリースされました。 LKML: Linux 4.0 released https://lkml.org/lkml/2015/4/12/178 何度かこういうネタを記事にしていますが、 今回も、自分のマシンでビルドと起動を試してみました。 また、それだけだと記事としてあんまりなの…

x86(32ビット)用OSを作っています

少し前から、x86(32ビット)用OSを作っています。(64ビットじゃないのは、今だにx86マシンしか持っていないからです。。。) シェルみたいなものが動くところまで来たので、記念に記事にしてみます。 できることは、上のGIFアニメの通りで、echoコマンドしか無…

USB FDDのmountで"can't read superblock"と言われるときは

USB FDDは/dev/fd0ではなく、/dev/sdbのように認識されます。 なので、 $ sudo mount -t vfat /dev/sdb /mnt/storage などのようにマウントすることになるのですが、 "can't read superblock" とのメッセージが出てマウントできないことがあります。 そんな…

プロテクトモードへ移行し、C言語のmain()実行までのサンプルプログラム

x86のOSを作る際には、プロテクトモードへの移行など、やらなければならないことがあります。 考え方にもよりますが、この部分は、ソースコードを理解した上で、既存のものを流用して済ましてしまいたい箇所です。 そこで、Linux-0.01-rmのソースコードを元…