You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Arm入門勉強会とは、macOSがArmに移行したこの機にArmアーキテクチャでのプログラミングについて入門するソフトウェアエンジニアのための会です。今回主催の@nullpo_head 氏が、Armの仮想化支援機構について、その仕組みから深く説明します。前半は「現代のハードウェア仮想化支援機構」について。全2回。 ハードウェア仮想化支援とは何か 佐伯 学哉氏:入門セッション3つ目は『Armの仮想化支援機構』についての入門セッションです。どうぞよろしくお願いします。 本発表のスタートとゴールです。VMwareとかQemuとか使ったことあるけど仮想マシンの仕組みなんも知らんというところがまずスタートになっています。 1個目のゴールは、最近のVMのざっくりした仕組みとハードウェア仮想化支援とは何かということがわかること。そしてその話のあとに実際にArmの仮想化支援機構の概要を説明し、Armの仮想
以下のツイートが結構反響があったので、どんな事をやったのかまとめておく。 自分の勉強用に最小構成のlinuxを作ったので、githubに転がしておく(不要な.cファイルもパッと見つけられる限り削除した)https://t.co/KdTb6zgr8N— Liva (@liva_jy) 2018年2月8日 元ネタはsatさんのこのツイート。 linuxのコードを理解するための、主要関数や構造体の名前はそのままに、簡略化したカーネルというのは作ってみたい。cgroupsとかトレーサとかエラー処理とかは思い切ってばっさりと。常人はそこにはまって躓くから— sat (@satoru_takeuchi) 2018年2月8日 僕はカーネルには詳しくはないので、中のソースを弄って素朴な実装にリプレースする、みたいな事はできないのだけど、kernel configでminimalな構成にして、不要なファイル
このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。 Linuxカーネルに新機能を追加したり、デバッグなどの変更をしたら、動作を確認するテストを実行するわけですが、実機で実行しようとするといろいろ面倒です。そこでQEMUの登場です。QEMUはシステムエミュレータの1つで、x86 PCをはじめARM, SPARC, MIPS, PPCなど、いろいろなプロセッサアーキテクチャをサポートした非常に高機能なエミュレータです。また、KVMでデバイスをエミュレーションする用途でも使われています。 QEMUをカーネルの開発に使うことには以下のメリットがあります。 開発用PCをいちいちリブートしたり、またはもう1台テスト用のPCを用意したりする必要が無い。 ビルドしたカーネルをすぐに実行できるため、変更・ビルド・テストのサイクルを高速にまわせる。 デバッ
Ubuntu Cloud Images で提供されている QCOW2 フォーマットのイメージを元に、Packer の QEMU Builder で OS イメージをビルドしたかったので、その手順をまとめます。 事前準備 今回は macOS Sierra 上でビルドするため、事前に Packer と QEMU をインストールしておきます。インストールには Homebrew を使用します。また、後述する一部の作業で Docker を使用するため、Docker for Mac もインストールしておきます。 cloud-init の設定イメージの作成 Ubuntu Cloud Images で提供されているイメージは、cloud-init を利用して AWS などのクラウドプロバイダーから初期設定を起動時に取得することを前提とした作りになっています。しかし今回は Packer を使用して QEMU
これは自作OS Advent Calendar 2016の22日目の記事です。 『30日でできる! OS自作入門』という(このアドベントカレンダーの5,6,9,15日目の記事のKさん著)本があります。 この本はhikaliumさんも書かれていましたが、まさに「OS自作における聖書」といえるような本で、例によって今回やったこともこの本が発端となっています。 実際何をやったのかというと、タイトルの通り「自作OSを自作エミュレータで動かしてみたい」と思ったので色々やってみた、ということです。 エミュレータと自作OS 突然ですが、「ソフトウェアを開発する」ということに着目した時、一般的なアプリケーションの開発とOSの開発の一番の違いはなんでしょうか? 僕は、「デバッグに仮想環境を使うか使わないか」ではないかと思います。一般的なアプリケーション開発ではデバッグしようと思ったらとりあえず実行してみれば
手元にx64マシンしかない状況でARM環境を用意しようとした場合、以下のような選択肢が考えられる。 実機を用意する(Raspberry Pi、Android端末など) お金がかかる、使うのに手間がかかる QEMUのシステムエミュレーションを使う 再現性が高い一方、重い QEMUのユーザモードエミュレーションを使う(参考) 再現性はシステムエミュレーションに比べ劣るが軽い、実行時やgdbデバッグ時のライブラリパス指定がやや煩雑 QEMUのユーザモードエミュレーションにbinfmtとchrootを組み合わせて使う(参考1、参考2) 軽い上にライブラリパスの指定が不要だが、chroot環境下に各種プログラムを用意するのに手間がかかる QEMUのユーザモードエミュレーションにbinfmtとコンテナ仮想化を組み合わせて使う(参考) 軽い上にライブラリパスの指定が不要、さらに各種パッケージインストール
VMMの高速化について学ぶ過程でKVMのコードを読んだので、 メモ代わりに内部構造の解説記事を書きました。 KVMはqemuと連携して動作するため、以前私が書いたQEMU internals( http://rkx1209.hatenablog.com/entry/2015/11/15/214404 ) も合わせてご参照ください。また本記事はある程度システムプログラムに慣れており、 VT-xや仮想化の基本アーキテクチャは知っている物として進めます。 1.qemu-kvm,kvmの初期化 では早速見て行きましょう。まずはKVMの初期化の入り口となるqemu-kvmサイドから見ていきます。(ちなみに現在qemu-kvmはqemu本家に統合されておりconfigを変えることでkvmを有効化する仕様になっています) qemuは/dev/kvmを通してKVMとやり取りを行います。全体的なアーキテクチ
ここ一ヶ月ほどQEMUのコードとお戯れしていたのですが、 qemuのソースコードもうすぐ読みきりそうなのでどこかにまとめたいんだけど、qemu internalみたいな記事ってどれぐらい需要あるの— 前代未聞 (@RKX1209) 2015, 11月 9 と言ってみた所なんとなく需要がありそうだったので書きました。 本記事ではQEMUの内部実装を追い、具体的な仕組みを見ていきます。もし研究や仕事などでqemuを読む必要がある方や、これから趣味で読んでみようという方はぜひ参考にしてください。 (QEMU internalsというよりはQEMUコードリーディングの方が適切かもしれませんね....) さてここで扱うQEMUはqemu2.4.0でゲストはx86,ホストはx64であると仮定します。 両方共x86系となるとDBTの意味はあまり無く、KVM使ってどうぞという話になるのですが、あくまでコー
「DockerでユーザモードQEMUによるARMエミュレーション環境を構築する」では、mazzolino/armhf-ubuntuというDockerイメージを使ってqemu-user-staticによるARM版Ubuntuのエミュレーション環境を構築した。 ここでは、qemu-debootstrapを使ってARM版DebianのDockerイメージを作成してみる。 また、作成したDockerイメージをDocker Hubに公開してみる。 環境 Ubuntu 14.04.3 LTS 64bit版、Docker 1.9.1 $ uname -a Linux vm-ubuntu64 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ lsb_r
前回(part1)rkx1209.hatenablog.com の続きです。 part2では仮想IRQ,チップセット,仮想IO,TCGを見ていきます。 多分part2で終わりです。(時間があればまたいつかpart3とか書いてみたいですね...) ではまず仮想IRQから見ていきます。 6.仮想IRQ QEMUにおいてIRQはIRQState構造体で表されます。 (hw/core/irq.c) struct IRQState { Object parent_obj; qemu_irq_handler handler; void *opaque; int n; }; nがIRQ番号でhandlerがIRQ#nに対応するハンドラです。またIRQStateは(include/hw/irq.h)でqemu_irqにtypedefされているため以降はqemu_irqと呼びます。 では前回見ていたマシン初
Linuxだからできないなんて言わないよ ubuntuのインターフェイスがUnityになってからインストールしたアプリを覚えられなくなってしまったのでメモ。情弱ちゃんメモ。 参照サイト Virtual Box forums(virtualbox.org) : CONVERT Qemu .img to VirtualBox vdi https://forums.virtualbox.org/viewtopic.php?t=8919 まずqemu-imgコマンドを使って、qcow2形式のイメージをraw形式へ変換。 qemu-img convert 変換前のイメージ.img -O raw 変換後のイメージ.raw $ qemu-img convert CentOS6.img -O raw CentOS6.raw raw形式のディスクイメージをVirtualBoxのコマンドラインインターフェイス
いままではノートPCではWindowsを使ってきた. なんだかんだで使い慣れて*1いたり, あるいはハードウェア機能をフルに活かすためには他に選択肢が無かったりした. でも最近はペンタブ搭載機でもLinuxがふつうに動いたりするし, Windowsを使っていてもどうせ仮想OSとしてLinuxを動かしていて, Windows上のLinuxをべんりに使うためのバッドノウハウが溜まってしまいつつあったので, 思い切ってWindowsを使うのをやめることにした*2. ノートPCでカジュアルにLinuxを使うなら, できるだけ新しいソフトウェアが動いてほしい. Debianならunstableを入れたい. でもなんかアップデートして急に動かなくなったりしたら困る. そこで仮想化ですよ! ただ, ノートPCの仮想化にはいろいろ問題点もあるので, 整理して解決策をまとめておく. 仮想OSの運用方法 ノー
we are using kvm/qemu with qcow2-images for our virtual machines. qcow2 has this nice feature where the image file only allocates the actually needed space by the virtual-machine. but how do i shrink back the image file, if the virtual machine's allocated space gets smaller? example: 1.) i create a new image with qcow2 format, size 100GB 2.) i use this image to install ubuntu. installation needs a
virt-clone コマンドって便利ですよね。 これ確かにスゲー便利なんですが、30回も40回も同じこと繰り返してると、スゲー疲れるわけです。 具体的に何に疲れるかって言うと、 待ち時間 ネットワークの再設定 待ち時間に関しては、シェルスクリプトにしておくなりスパースでやるオプションを付けておけば"ある程度”我慢できるけど、ネットワークの再設定に関してはスゲータルい。 なんせ1回はゲストに入らなきゃいけない。 コレを回避するには、ゲストをクローンしたときのMACアドを、DHCPサーバに書いて決め打ちにすること。 そうすればある程度は管理できる。 …のはずだったけど、RHEL6系からは新しく追加されたネットワークデバイスは自動的に ONBOOT="no" な仕様にかわったので、そもそも立ち上がらないし、RHEL5系だと、すでにeth0があった場合、インクリメントされてeth1としてアタッチ
KVM のゲストOS用ディスクイメージを操作したい。 qcow2 形式のイメージを操作する場合、一旦 raw 形式に変換していたのだが、 以下のような便利ツールがあるそうだ。 qemu-nbd Fedora or EPEL の qemu-img パッケージに含まれる。 http://d.hatena.ne.jp/kvm/20080619/1213888527 questfish パッケージは、Fedora 11+ または EPEL で提供されている。 http://d.hatena.ne.jp/kvm/20090711/1247323823 qemu-nbd は、 qcow2 形式のファイルを元に LVM に複製(今の virt-clone だとこれができない。) gestfish は、 ゲストOSが起動できなくなった場合の設定変更。 などに使えるかもしれない。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く