システムプログラミング実験 (OS演習) 第9回

Slides:



Advertisements
Similar presentations
ORCAとUbuntuオンライン 2008/11/26 By河合正巳.
Advertisements

Debian の世界へようこそ! 北大 理学院 宇宙理学専攻 惑星宇宙グループ M1 三上 峻.  Debian GNU/Linux  Debian プロジェクト  GNU プロジェクト  Debian GNU/Linux とは  Debian インストール  パッケージ  Debian.
エンジニアから見る Mac OS X. Mac のイメージ お洒落、かっこいいマシン デザイナーさんが使うマシン DTP に強いマシン 実は、 Developer のためにある!・・・は ず.
RitsPen 2.0 起動方法 CentOS を 例にして. CentOS を起動した状態 RitsPen がインストールしておく.デスクトップに ritspen というフォルダがあるはず.
BBT 大学 Ruby on Rails 開発環境セットアップマニュアル Mac 版 1.1 最終更新日: 2013/1/5.
Linuxを組み込んだマイコンによる 遠隔監視システムの開発
Virtual Editionのご紹介 2012年12月12日.
理学院 宇宙理学専攻 惑星物理学研究室 修士 2 年 徳永 義哉
UNIX利用法.
PROCESS 14:一般情報(2) InstallShieldLecture
UNIX利用法 情報ネットワーク特論資料.
ファイルキャッシュを考慮したディスク監視のオフロード
最新ファイルの提供を保証する代理FTPサーバの開発
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
Linux インストール      のための基礎知識 物理実験 I 情報実験第9回 2003/12/12 中神 雄一.
物理実験 I 情報実験第9回 2004/12/10 小西 丈予 2003/12/12 中神 雄一
物理実験 I 情報実験第9回 Modified 2005/12/2 徳永 義哉Original 2003/12/12 中神 雄一
Samba日本語版の設定と運用のノウハウトラブルシューティング編
1.コンピュータと情報処理 p.20 第1章第1節 3.ソフトウェア ソフトウェア 基本ソフトウェア
高エネルギー加速器研究機構 素粒子原子核研究所 千代浩司
高エネルギー加速器研究機構 素粒子原子核研究所 千代浩司
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
Docker.
Ubuntu 7.10の紹介 Ubuntu Japanese Team あわしろいくや
Virtual Editionのご紹介 (株)ネットジャパン 法人営業部 2012年7月18日 1.
仮想化システムを用いて 複数のOSを動かす
オフィシャルビルドとooo-buildについて
.NETフレームワーク3.5インストールのお願い
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
KVMにおけるIDSオフロードのための仮想マシン監視機構
Windowsを理解しよう! ーメンテナンスの薦めー.
Debian GNU/Linux ー Linuxインストールに必要な基礎知識 ー 三上 彩 鈴木 倫太郎
(original Takagi & Saito, 2007)
ネストした仮想化を用いた VMの安全な帯域外リモート管理
TA 高田正法 B10 CPUを作る 2日目 SPIMのコンパイル TA 高田正法
Cygwin の install.
カーネルソースの歩き方 RaspberryPi演習
Linux リテラシ2006 第6回 デーモン CIS RAT.
アスペクト指向プログラミングを用いたIDSオフロード
サスペンドした仮想マシンの オフラインアップデート
Androidアプリの作成 07A1069 松永大樹.
Virtual Editionのご紹介 2012年7月26日.
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
高エネルギー加速器研究機構 素粒子原子核研究所 千代浩司
AMD64の仮想化技術を利用した 仮想マシンモニタの実装
Office IME 2010 を使う.
仮想マシン間にまたがる プロセススケジューリング
Gmsh, Elmer, Garfield++のInstall
佐賀大学 理工学部知能情報システム学科 講師 大月 美佳
リモートホストの異常を検知するための GPUとの直接通信機構
実行時情報に基づく OSカーネルのコンフィグ最小化
オペレーティングシステムⅡ 第13回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト.
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
JXTA Shell (1) P2P特論 (ソフトウェア特論) 第4回 /
TA 高田正法 B10 CPUを作る   実験の前に TA 高田正法
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
情報実験第 7 回(2016/06/17) OS インストール・起動
軽量な仮想マシンを用いたIoT機器の安全な監視
複数ホストにまたがって動作する仮想マシンの障害対策
VMMのソフトウェア若化を考慮した クラスタ性能の比較
Virtualizing a Multiprocessor Machine on a Network of Computers
仮想マシンと物理マシンを一元管理するための仮想AMT
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
.NET Framework 3.5 インストールに関する注意点
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
ネットワーク・プログラミング Linuxシステムとソフトウェア開発.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
Bash on Ubuntu on Windowsに オープンCAEのソフトを インストールする(2)
Presentation transcript:

システムプログラミング実験 (OS演習) 第9回 加藤 真平(理学部情報科学科) TA: 三上、清水 os-enshu-ta@mmm.is.s.u-tokyo.ac.jp 2016年7月11日

本日の内容 カーネル開発環境の準備 課題9に向けた準備 カーネルコンパイルの仕方 kvm の使い方 2016/7/11 システム・プログラミング実験

実験の基礎知識 2016/7/11 システム・プログラミング実験

Linux カーネル Linux の中核をなすソフトウェアである 様々なバージョンがある 大部分が C 言語(gcc)で書かれている 必要な部分はアセンブリ言語で書かれている 様々なバージョンがある 本家(kernel.org)に置かれているものがオリジナル 最新の安定板バージョンは 4.1-rc8 (2015年6月22日現在) uname (1) を使うと、現在動作しているカーネルの情報がわかる バージョン番号の意味(3.x系列) 1桁目はメジャー番号、2桁目はマイナー番号、3桁目は安定版リリース番号 2016/7/11 システム・プログラミング実験

カーネルのコンパイルの必要性 カーネルを hacking したい 不要な機能を削ってコンパクトなカーネルを作りたい 最適化をしたい 従来のOSにない新しい機能に関する研究をするなど 不要な機能を削ってコンパクトなカーネルを作りたい ディストリビューション標準のカーネルは多数のデバイスドライバを含む ほとんど使われていないものも多い 最適化をしたい CPU ごとの細かいコンパイルオプションなど 標準で有効になっていない機能を使いたい まだ安定していない最新機能を使いたい場合など 2016/7/11 システム・プログラミング実験

Linux カーネルのソースコード ソースコードは完全に公開されている ディストリビューション毎のカーネルのソースコードも公開されている GPL ライセンスで配布されている インターネットから入手可能 本家は www.kernel.org ディストリビューション毎のカーネルのソースコードも公開されている 独自のパッチを当てていることが多い 本家にはまだ採用されていない最新機能をサポートする 最新機能の一部を安定板にバックポートする 独自の機能をサポートする 2016/7/11 システム・プログラミング実験

コンパイル・インストール手順 (1/2) 必要なパッケージのインストール 必要な機能の選択 カーネルコンパイル インストール Ubuntu では libncurses5-dev が必要になるはず 必要な機能の選択 “make menuconfig” どのカーネルの機能を組み込むかを選択する 終了すると .config というファイルができる カーネルコンパイル “make” 数分~数十分かかる 並列コンパイルを行うと早くなるかもしれない (例) “make –j4” インストール “make modules_install && make install” grub の書き換えまで行ってくれるはず 手動でやる必要があるかもしれない 2016/7/11 システム・プログラミング実験

コンパイル・インストール手順 (2/2) $ tar xvf linux-2.6.34.tar.bz2 $ cd linux-2.6.34 $ make menuconfig $ make –j4 arch/x86/boot/bzImageができる(これがカーネル本体) # make modules_install # make install /boot/vmlinuz-2.6.34 がカーネル本体 /boot/grub/menu.lst が GRUB の設定ファイル # reboot 2016/7/11 システム・プログラミング実験

カーネルの設定(config) 適切な設定を選択するのは難しい デフォルトの設定をベースにする。 必要なデバイスドライバを削ってしまうと起動しなくなる デフォルトの設定をベースにする。 /boot/config-* にあるデフォルトの設定を .config としてコピーする コピーしてから make oldconfig すると、上の .config をベースに新しい .config を作れる 起動に失敗しても古いカーネルから起動すれば大丈夫 使用しているマシンのデバイス情報を入手しておく lspci(8) PCIデバイスの一覧 lsmod(8) 現在ロードされているモジュール一覧 dmesg (8) カーネルメッセージを表示 デバイス認識の様子がわかる 2016/7/11 システム・プログラミング実験

Ubuntu の場合の注意点 適切なカーネルパラメータの指定が必要 実マシンでは複雑な設定になっている可能性もある GRUB などでカーネル起動時にパラメータを指定できる GRUB の起動画面で Tab を押すと編集できる /boot/grub/grub.conf か /boot/grub2/grub.cfg にも記載がある カーネルのファイル名の後の ”root=~ quiet splash” などのこと カーネルパラメータでルートファイルシステム(/)を指定する 指定方法には2通りある “root=UUID=~” パーティションの UUID を指定する “root=/dev/sda3” 1番目のハードディスク (sda) の 3 番目のパーティションを指定する(例) 実マシンでは複雑な設定になっている可能性もある 仮想マシンで試すとよい 2016/7/11 システム・プログラミング実験

kvm (kernel virtual machine) について 仮想マシンモニタの一つ 一つの物理マシン上で、複数の仮想的なマシンを作り出す その上でOS・アプリを動作させることができる (例)Linux上でkvmで仮想マシンを作り、Windowsを動作させることができる 他にも同様な仮想マシンモニタは多数ある Xen, lguest など (オープンソース) VMWare, Virtual PC, Paralles Desktop など (商用) Ubuntu では、パッケージとして提供される # aptitude install qemu-kvm 2016/7/11 システム・プログラミング実験

kvm の利用 今後のカーネル演習に使用予定 再起動が容易に行える 何度でも気軽にやり直せる 再起動中にも作業ができる ゲストOSが壊れてもホストOS側は無事 再起動が容易に行える 再起動中にも作業ができる 頻繁に再起動する際に待ち時間が減る ディスクイメージがキャッシュされて高速に再起動できる 2016/7/11 システム・プログラミング実験

課題9の準備 Linux カーネルをいじる準備 以下のことを実際に行って、手順を確認しておくこと (1) カーネルのコンパイル (2) kvm 上での実行 2016/7/11 システム・プログラミング実験

課題9の準備 (1) – カーネルのコンパイル kernel.org の Linux 2.6.34 を使う コンパイル準備 コンパイル kadai9 ディレクトリ以下に必要なファイルが置いてある ソースコード (kernel.orgのものと同じ) configファイル kvm 上で動く configuration を TA が用意してある(自分で作成しても構わない) ディスクイメージ Ubuntu Precise (x86 64bit)のイメージ コンパイル準備 $ tar xvf linux-2.6.34.tar.bz2 $ cp os2014.config linux-2.6.34/.config TA の configuration を使う場合 コンパイル $ cd linux-2.6.34; make –j4 make O=../build 等でビルド先を指定できる 2016/7/11 システム・プログラミング実験

課題9の準備 (2) – kvm 上での実行 kvm の実行準備 kvmの実行 ハードウェアの仮想化支援機能を ON にするとよい 起動時に F1 キーを押して BIOS の設定画面に入る Config → CPU → Intel® Virtualization Technology を Enabled にする Enabled にした後、再起動だけでなく電源 OFF が必要 ONにしなくても動くが遅い kvmの実行 カーネルを直接指定して起動することが可能 $ sudo kvm –drive file=rootfs.img –m 256 –smp 2 –kernel linux-2.6.34/arch/x86/boot/bzImage – append “root=/dev/sda1” ハードウェアの仮想化支援機能を使うには root 権限が必要 /dev/kvm のアクセス権限を変えてもよい 2016/7/11 システム・プログラミング実験

kvm 実行時のオプション -m [memory size] -smp [n] -drive file=[image file] メモリのサイズ -smp [n] N個の仮想的なCPUを与える -drive file=[image file] ハードディスクイメージを指定する 普通に指定すると、順番に/dev/sda, /dev/sdb,…と見えるはず -kernel [kernel image file] 起動するカーネルイメージファイルを指定する -append [command line parameters] カーネルに渡すパラメータを指定する (例) “root=/dev/sda1” ルートファイルシステム(/となるパーティション)は、/dev/sda1を使用する その他 ネットワークに関するオプション、デバッガに関するオプション等々 詳しくは、man kvmを参照 2016/7/11 システム・プログラミング実験