UEFIベアメタルプログラミング - Hello UEFI!(ベアメタルプログラミングの流れについて)

わんくま同盟 札幌勉強会 #1OSC 2017 Tokyo/SpringのLTでは発表していましたが、
最近、自作OSをUEFI+x86_64でやるために、まずはUEFIの勉強をしています。


UEFIの勉強として、UEFIの機能を呼び出すプログラム(UEFIアプリケーション)を、
EDK2やgnu-efiといった開発環境やツールキットを使わずにフルスクラッチで作ってみています。


■ Bare Metal Samples (UEFI application) - GitHub


今回は最初の記事として、Hello worldプログラムを作りながら、ベアメタルプログラミングの流れを説明します。

続きを読む

ファイルシステムでマルチブロックに対応しました

自作OS(OS5)の紹介とユーザーランド周りの機能追加について - へにゃぺんて@日々勉強のまとめ
こちらの記事の続きで、自作OS(OS5)のアップデートについてです。


今回はファイルシステムでマルチブロックに対応しました。
これまで、ファイルシステムの仕様上、各ファイルには「ブロックサイズ(4KB)以下」の制限がありました。
マルチブロックに対応したので、今後、この制限は無くなります。


コミット数としては11コミットと、いつものアップデートに比べるとコミット数は少ないですが、
カーネル周りについては一段落ついたかなというとことで、この段階でリリースします。

続きを読む

chrootとunshareを使い、シェル上でコマンド7つで簡易コンテナ

コンテナ型仮想化であるDockerは、様々な名前空間の分離やcgroupなどのLinuxの機能を使用して実現されています。


ここでは、簡易的に機能を「ルートディレクトリとPID名前空間も分離されている」と限定し、シェル上で7つのコマンドでコンテナを立ち上げてみます。


最終的な目標は、立ち上げたコンテナ上でpsを実行し、以下のようにPIDが1から割り振られていることを確認することです。

bash-4.3# ps
  PID TTY          TIME CMD
    1 pts/1    00:00:00 bash
    7 pts/1    00:00:00 ps
bash-4.3#
続きを読む

自作OS(OS5)の紹介とユーザーランド周りの機能追加について

本記事は、「自作OS Advent Calendar 2016 - Adventar」の12/13(火)の記事です。


自作OS(OS5)について改めての紹介と、今回のリリースで追加した機能の紹介です。

続きを読む

libcgroup無しで、cgroupによるプロセスへのCPU割り当て制限

LinuxカーネルにはCPUやメモリといったリソースをプロセス単位で制限できるcgroupという機能があります。


cgroupの使い方を紹介する多くの記事ではaptやyumでlibcgroupをインストールしていますが、
組み込みなどでは、apt/yumを使えず、ライブラリの追加が容易ではない環境もあります。


そこで、libcgroupを使わずにcgroupによるCPU割り当て制限を試してみました。

続きを読む

out of treeでライブパッチを試す、/dev/nullへのパッチ紹介

Linuxカーネルのバージョン4.0から追加されたライブパッチ(Livepatch)機能を今更ながら、試してみました。
(Linux4.0の記事でライブパッチに触れていますが、32bitのマシンしか無く、試せなかったんですね。。)


なお、本記事は「CLR/H #clrh101」のLTで発表させていただいた内容のまとめです。

続きを読む