QemuのソースをXcodeでデバッグ

Qemuをハックするために,QemuをXcode上コンパイル,実行出来るようにする. 以下が手順.

  1. XcodeでCreate a new Xcode Projectを選択
  2. Emptyを選択
  3. プロジェクト名を決める
  4. プロジェクトのメタ情報を格納する(.xcodeprojファイル)を選択
  5. Xcode上でQemuのディレクトリごと,Drag & Drop
  6. 上部メニューのqemu-1.7.0(Drag&Dropしたフォルダ名)から,Edit Schemeを選択
  7. InfoタブのExecutableで,Runボタンを押したときに実行するバイナリを指定.今の場合qemu-system-x86-64
  8. 同画面のArgyumentsタブの”Arguments Passwd On Launch”で,実行ファイルに与える引数を指定.例えば「-fda helloos.img」

このままだと,OSのシグナルでブレイクしてしまい,起動するまでひたすらクリックを繰り返すことになるので,Symbolic Breakpointを設定する.

  1. 上部メニュから,Debug->BreakPoints->Create Symbolic BreakPointを選択.
  2. Symbol名にqemu_main(この関数の中でシグナルが発生することが分かっているため)を入力
  3. Add Actionをクリックし,表示されたテキストボックスに,「process handle SIGUSR1 -n true -p true -s false」を入力.そして,Automatically continue after evaluationgにチェックを入れる.
  4. さらに同じ手順でもう一つSymbolic BreakPointを作成し,「process handle SIGUSR2 -n true -p true -s false」(1と2が違うだけ)を作成

以上でブートし,breakもできるようになるはず

QEMUをMac上でソースコードからコンパイル

  1. http://wiki.qemu.org/Downloadからソースコードをダウンロード
  2. 以下を実行
  • tar -xzvf qemu-1.7.0.tar.bz2
  • ./configure
  • make

しばらく待つと出来上がる.glib2が必要なので適宜mac portsなどでインストール   出来上がったバイナリはアーキテクチャごとに別のフォルダに入っているので,X86であれば x86_64-softemuにqemu-system-x86-64ができている これに,イメージを引数で与えてブートする.例えば,30日で作るOSであれば,フロッピーブートなので,

  • ./x86-64-softemu -fda helloos.img

これでBootする

gitの基本的な使い方

Gitでファイルを管理するには,ローカルレポジトリ(git initを行ったディレクトリ)でファイルを追加/編集し,サーバへプッシュすれば良い.そのためには,以下の作業を行う.

  1. ローカルでファイルを追加
  2. ローカルでファイルをコミット
  3. サーバへプッシュ

例えばローカルレポジトリtesでaaa.txtを管理するには,以下のことをやればよい

この作業ができるためには,ローカルレポジトリとサーバレポジトリを関連付けておく必要がある.これはこの作業を行うことでできる.また,この例はファイルを追加したが,ディレクトリを追加する場合も同じ.ディレクトリを追加した場合には,そのディレクトリ以下のファイルすべてが追加されるので注意すること

研究室でのGitLabの使い方

以下に,分散ソフトウェアシステム研究室でのGitLabの使い方を解説する.

  • 初期設定

    • GitLabをブラウザでアクセスする.
    • ログインする(新規ユーザは個別に作ってもらう).
    • My Profileをクリックする.

myprofile

    • 名前,e-mailを入力し,その他の情報は適宜埋める.

user_regist

  • SSHの公開鍵設定

GITを使うには,利用するPCの公開鍵を登録する必要がある.以下の手順で公開鍵を作成し,gitlabに登録する.

    • コマンドプロンプトでssh-keygenを実行する.デフォルトでは${HOME}/.ssh/id_rsa, ${HOME}/.ssh/id_rsa.pubが作成される.
    • id_rsa.pubが公開鍵になるので,このファイルをviなどで開き,内容をコピーする

rsa_key

    • My Profileをクリックし,”Add Public Key”ボタンをクリックしてキーの登録画面を表示する

addkey

    • Titleにはキーを識別できる何らかの文字列を入力し,Keyの欄に,コピーしたキーを貼り付けてSaveをクリックする.これでエラーが出ていなければ,キーの登録が完了する

registkey

  • プロジェクトの作成

4年生は,1年間を通し,様々なものを作成していきます.そのため,研究室の活動で作成するすべてのものを1つのディレクトリで管理します(もちろんサブディレクトリを作成して分類します).例えばmygrad_projectのようなフォルダを作成し,次のような構成でフォルダ分けすること原則とします.しかし,研究室で行っているプロジェクトの一部を作成する場合などはこの限りではありませんので,個別に対応します.

  • mygrad_project   -> 親ディレクトリ
  • mygrad_project/book_resume -> 輪読用の資料
  • mygrad_project/rinkou   -> 輪講の資料
  • mygrad_project/intermediate/ppt -> 中間発表のプレゼン資料
  • mygrad_project/intermediate/resume -> 中間発表のレジュメ
  • mygrad_project/final/ppt -> 卒論発表のプレゼン資料
  • mygrad_project/final/resume-> 卒論発表のレジュメ
  • mygrad_project/final/thesis -> 卒論
  • mygrad_project/programs/{aaa/bbb/ccc}  -> 卒論で作成するプログラムなど(aaa,bbbはそれぞれフォルダ)

このように,mygrad_project以下にサブディレクトリを作成して分類しますが,サブディレクトリは随時追加していけばよいです.ここでは,全ての親ディレクトリとなるmygrad_projectを以下の手順でプロジェクトとして作成します.

なお,このままだと全員同じフォルダ名(mygrad_project)になってしまうので,実際に作成し共有するときには,mygrad_xxxxxのxxxxに当たる部分は自分の名前,または苗字,学生番号にして重複しないようにしてください!

    • DashBoardをクリックし,その次にprojectsをクリック,そして「New Project」をクリックする

newproject

    • プロジェクト名を例えば「mygrad_project」と入力する(これがディレクトリ名になる).
    • Namespaceに自分の名前(アカウント登録の時につけた名前)であることを確認し,「Create Project」をクリックする.
  • createproject
      • プロジェクトの作成が成功すると,PCで実行するべき指示が表示される.

    gitinit

    • Git global setup:にあるように,PCのコンソールでコマンドを実行する.
    • Create Repository:にあるように,ローカルにフォルダを作り,指示通りコマンドを実行する.なお,フォルダを作る場所はどこでも良いが,忘れないようにすること.また,フォルダを移動することはいつでもできる.この作業は,PCにフォルダを作り,プロジェクトに1つファイル(README)を追加し,gitlabと同期する作業を意味している.
    • Dashboradをクリックし,右のprojectsタブに,今追加したプロジェクトがあることを確認する

    confirmproject

      • 自分のプロジェクトを選択し,Filesタブをクリックする.そして,今追加したREADMEファイルが存在することを確認する.

    confirm_readme

    • 「Settings」タブをクリックし,その後「Term」タブをクリックする.

    addterm

    • 「New Term Member」をクリックする.
    • Peopleに福田(Hiroaki Fukuda)を追加し,Project Accessは「Reporter」を選択してAdd Usersをクリックする

    addmember

    以降,このプロジェクトにファイルを追加し,適宜gitlabと同期することによって,いつPCが壊れてもサーバにバックアップが作成されることになる.また,複数のPCで同期することも可能となる.

  • テンプレートはこちらから

This is test post

hoge hoge huga child