タグ

ブックマーク / syuu1228.hatenablog.com (3)

  • mrubyでブートローダを書けるようにしました - syuu1228's blog

    カーネル/VM@関西7回目でお話したネタです。スライドはこちら: UEFI時代のブートローダ from Takuya Asada 既にmrubyはUEFIへ移植されています(覚え書き: mruby on EFI Shell)。 また、EFI StubカーネルをUEFIアプリから実行するのは非常に簡単であることが分かっています(実際にソースコードを書いて実験しました)。 以上のことから、「mrubyにEFI Stubカーネルのファイル名を指定したら実行するAPIを足せば、mrubyでブートローダが実装可能になるに違いない」と考えました。 ただ面白いというだけでなく、mruby-socket・mruby-simplehttp-socketなどのmrbgemsを移植していけばブート処理を記述したmrubyスクリプトやカーネルそのものをHTTPから取得することが出来るようになり、簡単なスクリプトで

    mrubyでブートローダを書けるようにしました - syuu1228's blog
  • Linux上でオレオレifconfigを作るには - syuu1228's blog

    自分の書いているプログラムからNICの設定を直接弄りたくなった事はないだろうか? プログラム内からifconfigコマンドに引数をつけて実行すれば簡単に実現できるが、それはあんまり格好良くないし、情報を取り出そうとするとifconfigコマンドの出力文字列をパースしたりしなければならなくなって格好悪い。 よりプログラムの書き方として正しいのは、ifconfigコマンドが叩いているAPIを自力で叩いてみる事だろう。 というわけで、ここではifconfigコマンドがNICを操作するために叩いているAPIを自力で叩いてNICの設定を変更してみようと思う。 まずは最も単純なプログラムとして、NICのリンクステータスをUP/DOWNするというのを試してみよう。 ソケットへのioctlによるNICリンクステータス変更 ifconfigコマンドで行われているNICリンクステータスの変更処理を最小限のコー

    Linux上でオレオレifconfigを作るには - syuu1228's blog
  • BIOSとUEFIの歴史 - syuu1228's blog

    BIOSの歴史 BIOSはIBM PC(1981年)と共に登場し、「IBM PC互換機」が普及した事によりパソコンの標準ファームウェアとなりました。 以降、ハードウェアもBIOS自身も当時とは全く異なる姿になるまで大きく拡張・変更され続けていますが、アプリケーション互換性を保たなければならなかった過去の経緯から、未だBIOSは大変古い仕組みを使い続けており、機能の実装に大きな制約があります。 具体的に一番大きい制約は、リアルモード(CPUがオリジナルのIBM PCに搭載されていた8086をエミュレートするモード)で動作しているということです。 これにより、一度にアクセスできるデータサイズは64KBに制限され、メモリ空間全体でも通常1MBまでしかアクセス出来ません。 プロテクトモードやロングモード(64bitモード)でOSを走らせるためには、CPUのモード切替の作業が必要になり、ブートローダ

    BIOSとUEFIの歴史 - syuu1228's blog
  • 1