![画像](https://habrastorage.org/getpro/habr/post_images/6b5/05e/080/6b505e08021e99b16b7acd1d9672fc68.png)
みなさんこんにちは! 最近ラズベリーパイをくれたので、それを使うことにしました。 しかし、それが通常起こるように、自宅ではこれを行う時間はほとんどありませんが、職場ではそれを接続するものは何もありません。 そのため、私はraspbianを職場で使用するために仮想マシンにインストールすることにしました。 誰が私がそれをしたか気にします、参加してください
目標を達成するために、私は多くの記事とインターネットのさまざまな部分のフォーラムへの投稿、ストーリーの最後に思い出す記事へのリンクを使用しました。 また、間違いや物語のスタイルを蹴るのではなく、コメントのすべての欠陥を示してください。 これは特にHabrについての私の最初の出版物であり、どこか一般的なものです。
それでは始めましょう! raspbianをQEMUで動作させるには、最初にarmプラットフォーム用のLinuxカーネルが必要です。 既製のカーネルがありますが、一般的な開発のために、私はそれを自分で組み立てることを試みることにしました。
これを行うには、Linuxファミリーのオペレーティングシステムを搭載したマシンが必要になります(実際、他のオペレーティングシステムでこれを実行できるかどうかはわかりません)。 Debianの種類の1つであるKali Linuxを使用しました。 彼はその瞬間に近づいていた。
1.最初から、次のコマンドを実行して、カーネルの構築に必要なパッケージをダウンロードします。
sudo apt-get install git libncurses5-dev gcc-arm-linux-gnueabihf
32ビットシステムを使用している場合、x86ライブラリをインストールする必要があります。
sudo apt-get install ia32-libs
2.また、クロスコンパイラをインストールする必要があります。そのためには、リポジトリを追加する必要があります。
deb www.emdebian.org/debian unstable main
そして、次のコマンドを実行します。
apt-get update apt-get install gcc-4.7-arm-linux-gnueabihf
互換性のために、コンパイラで文字ラベルを作成します。
ln -s 'which arm-linux-gnueabihf-gcc-4.7' /usr/local/bin/arm-linux/gnueabihf-gcc
3.次のステップは、カーネルソースとパッチをダウンロードして、カーネルがARM11アーキテクチャをサポートし、このパッチをソースに適用することです。 これを行うには、次のコマンドを実行します。
mkdir /git cd /git git clone https://github.com/raspberrypi/linux.git wget http://xecdesign.com/downloads/linux-qemu/linux-arm.patch patch -p1 -d linux/ < linux-arm.patch
4.次に、Raspbianのニーズに合わせてカーネルを構成する必要があります。
これを行うには、次のコマンドを実行します。
cd linux make ARCH=arm versatile_defconfig make ARCH=arm menuconfig
表示されるメニューで、次の設定を選択します。
重要!!! オプションを選択するときに、反対のオプションがある場合は、スペースバーをもう一度押して<*>を表示します。
a)クロスコンパイラを示します:
General Setup -> Cross-compiler tool prefix
arm-linux-gnueabihf-
重要! 最後に「-」を含めるようにしてください
b)CPU設定:
System Type->
[*] Support ARMV6 processor
[*] ARM errata: Invalidation of the Instruction Cache Operation fail
[*] ARM errata: Possible cache data corruption with hit-under-miss enabled
c)ハードフロートバイナリのサポートを有効にします。
Floating point emulation ->
[*] VFP-format floating point maths
d)ARMでのEABIの有効化:
Kernel Features ->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel
e)QEMUディスクサポートの有効化:
Bus Support->
[*] PCI Support
Device Drivers ->
SCSI Device Support
[*] SCSI Device Support
[*] SCSI Disk Support
[*] SCSI CDROM Support
[*] SCSI low-level drivers ->
[*] SYM53C8XX Version 2 SCSI support
f)devtmpfsの有効化:
Device Drivers ->
Generic Driver Options ->
[*] Maintain a devtmpfs filesystem to mount at /dev
[*] Automount devtmpfs at /dev, after the kernel mounted the root
g)重要なファイルシステムの有効化:
File Systems ->
<*> Ext3 journaling file system support
<*> The Extended 4 (ext4) filesystem
DOS/FAT/NT Filesystems ->
<*> VFAT (Windows-95) fs support
g)tmpfsを有効にします。
File Systems ->
Pseudo filesystems->
[*] Tmpfs Virtual Memory file system support (former shm fs)
h)メッセージインターフェイスの有効化:
Device Drivers ->
Input device support ->
[*] Event interface
i) (オプション) /proc/config.gzの有効化
General Setup ->
[*] Kernel .config support
[*] Enable access to .config through /proc/config.gz
j) (オプション)より大きなフォントとロゴを含める:
Device Drivers ->
Graphics Support ->
[*] Bootup logo
Console display driver support ->
[*] Select compiled-in fonts
[*] VGA 8x16 font
保存して終了します。
次に、カーネルのコンパイル自体に進みます。 これを行うには、次のコマンドを実行します。
make ARCH=arm make arch=arm INSTALL_MOD_PATH=../modules modules_install
すぐにルートにコピーします その後、ルートからパラメータを処方します。
cp arch/arm/boot/zImage /kernel-qemu
これで、QEMUのカーネルビルドが完了しました。 このすべてを繰り返したくない場合は、最終的にすべてのファイルへのリンクをレイアウトします。
次のステップは、QEMUをインストールすることです。
Windowsユーザーの場合、すべてが非常に簡単です。 QEMU ON WINDOWSにアクセスし、最新バージョンのQEMUを含むアーカイブをダウンロードします。
重要!!! QEMUバージョンは少なくとも1.5.0でなければなりません。 Raspbianをエミュレートするための重大なバグを修正します
Windowsユーザーの場合、Raspbianの起動プロセスについて詳しく説明しません。 LinuxファミリのOSでの起動プロセスに非常に似ています。 ご質問がある場合は、コメントでお会いします。
したがって、まず最初に、QEMUソースを自分自身にコピーします。
cd /git git clone git://git.qemu-project.org/qemu.git
依存関係もインストールします。
apt-get install libsdl1.2-dev
セットアップとインストールに進みます。
cd qemu ./configure -target-list="arm-softmmu arm-linux-user" -enable-sdl -static make sudo make install
エラー:DTCが存在しないというメッセージを受け取った場合は、次のコマンドを実行します。
git submodule update --init dtc
これでQEMUとカーネルができました。Raspbianイメージをダウンロードし、「チューニング」ブートを実行します。
Raspbianを初めて起動するには、次のコマンドを実行する必要があります。
qemu-system-arm -kernel /kernel-qemu -cpu arm1176 -m 256 -M versalitepb -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda <___Rapbian>
ロード後、bashプロンプトが表示されます。
以下を入力してください:
nano /etc/ld.so.preload
行をコメントアウトし、[Ctrl] + [x]を押して、保存して終了します
![画像](http://habrastorage.org/files/9da/e7f/2fd/9dae7f2fd12a45ef8145c785daddad13.png)
また、以下を行います:
nano /etc/udev/rules.d/90-qemu.rules
そして入力してください:
KERNEL=="sda",SYMLINK+="mmcblk0"
KERNEL=="sda?",SYMLINK+="mmcblk0p%n",
仮想マシンを保存して閉じ、オフにします。
shutdown -h now
これで、仮想Raspbianを実行する準備が整いました。 コマンドを実行します:
qemu-system-arm -kernel /kernel-qemu -cpu arm1176 -m 256 -M versalitepb -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda <___Rapbian>
そして、すべてがうまくいった場合、標準のRaspbianプロンプトが表示されます。
![画像](http://habrastorage.org/files/299/08c/a35/29908ca35d3c4fd799bbd5de0afa7467.png)
ディスクのサイズ変更も役立つ場合があります。 これを行うには、ホストで次の手順を実行します。
qemu-img resize <__Raspbian> +6G
次に、Raspbianをダウンロードして、以下を実行します。
sudo fdisk /dev/sda
[p]を押して、sda2の開始値を覚えておいてください。
次に[d]を押して2つのセクションを削除します。
次に[n]を押して、新しいパーティションを作成します。
[p]を押して、プライマリになることを示します。
[2]を押して、彼が2番目であることを示します。
最初のセクターを開始に設定します。
Last Sectorの場合は、[Enter]を押してすべての空き容量を使用します。
[w]を押して終了し、変更をパーティションテーブルに保存します。
次のコマンドを実行して再起動します。
sudo shutdown -r now
再起動後、次のコマンドを実行します。
sudo resize2fs /dev/sda2
それだけです コマンドに従う
df -h
ディスクの新しいサイズが表示されます。
おそらくこれで言いたかったことはこれだけでしょう。 プレゼンテーションのスタイルをあまり気にせず、コメントの特定のエラーを指摘してください。
資料へのリンク:
1.カーネルのコンパイル-xecdesign.com/compiling-a-kernel
2. QEMU-wiki.qemu.org
3. 私のコア