VirtualBox – matoken's blog https://matoken.org/blog Is there no plan B? Mon, 28 Oct 2024 08:18:13 +0000 ja hourly 1 https://wordpress.org/?v=7.0 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg VirtualBox – matoken's blog https://matoken.org/blog 32 32 OpenBSD 7.5/7.6インストーラがVirtualBox/KVMでkernel panic https://matoken.org/blog/2024/10/28/openbsd-7-5_7-6-installer-kernel-panics-on-virtualbox_kvm/ https://matoken.org/blog/2024/10/28/openbsd-7-5_7-6-installer-kernel-panics-on-virtualbox_kvm/#respond Sun, 27 Oct 2024 21:59:52 +0000 https://matoken.org/blog/?p=4193

Linux上の仮想マシン上でOpenBSDを導入しようと思ったのですが,QEMU KVM,VirtualBoxで試したところどちらもディスクへのインストール中にkernel panicになってしまいます.
OpenBSD 7.5 amd64で起こり,最近リリースされたOpenBSD 7.6 amd64で再度試して同様の動きとなりました.
今回検索して解決しました.

VirtualBox

isoイメージのインストーラでディスクへの書き込み中にこのような感じでpanicとなります.

vbox panic

wdc_atapi_start: not ready, st = 40
   fatal protection fault in supervisor mode
trap type 4 code 0 rip ffffffff810073c9 cs 8 rflags 10286 cr2 27874f000 cpl 3 rsp ffff80001cce4a58
gsbase 0xffffffff81938ff0  kgsbase 0x0 =
panic: trap type 4, code=0, pc=ffffffff810073c9
syncing disks... 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8  giving up

検索すると以下のページを見つけました.

2つの方法が載っています.今回自分の環境ではこの両方の設定が必要でした.

  • ディスクを可変サイズではなく固定サイズにする.(仮想マシン作成時に「全サイズの事前割当て」にチェック)

  • 「設定」「システム」「マザーボード」「拡張機能」の「I/O ACPI を有効化」のチェックを外す.

vbox panic disk
vbox panic io apic

vbox panic neofetch

QEMU KVM

KVMでも同様にディスク書き込み時にpanicになります.よく見るとVirtualBoxとはメッセージが少し違いますね.

openbsd panic kvm panic

wdc_atapi_start: not ready, st = S0_
fatal protection fault in supervisor mode
trap type 4 code 0 rip ffffffff810073c9 cs 8 rflags 10286 cr2 7ea021334f88 cpl 3 rsp ffff80001dSaS6d0
gsbase 0xffffffff81938ff0  kgsbase 0x0
panic: trap type 4, code=0, pc=ffffffff810073c9
syncing disks...8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8  giving up

dump to dev 17,1 not possible
rebooting...

はじめ設定からI/O ACPI関連の設定を探そうかとも思いましたがやっぱり検索すると以下のページを見つけました.今回の現象そのままぽいです.

インストールメディアの仮想ディスクデバイスの「ディスクバス」を`IDE`から`SATA`に変更でOKそうです.
virt-manager利用時には,新しい仮想マシンの作成時に「インストールの前に設定をカスタマイズする」にチェックを入れディスクバスを変更して進めるとインストールに成功しました.

openbsd panic kvm virtmanager01
openbsd panic kvm virtmanager02

openbsd panic kvm neofetch

環境
$ dpkg-query -W virtualbox qemu-system-x86 virt-manager
qemu-system-x86 1:9.1.1+ds-2
virt-manager    1:4.1.0-4
virtualbox      7.0.20-dfsg-1
$ lsb_release -dr
Description:    Debian GNU/Linux trixie/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2024/10/28/openbsd-7-5_7-6-installer-kernel-panics-on-virtualbox_kvm/feed/ 0
DebianのisoイメージをUSBメモリに書き込み https://matoken.org/blog/2017/03/29/write-debian-iso-image-to-usb-memory/ https://matoken.org/blog/2017/03/29/write-debian-iso-image-to-usb-memory/#respond Wed, 29 Mar 2017 09:08:17 +0000 http://matoken.org/blog/?p=1576 gistに貼ってたものだけどせっかくなのでこちらにも.

ファイルダウンロード

今回はDebian stretch Debian Installer rc2のi386版のnetinst.

  • debian-stretch-DI-rc2-i386-netinst.iso : イメージ本体
  • SHA512SUMS : isoファイルのチェックサムファイル
  • SHA512SUMS.sign : SHA512SUMSの署名ファイル
$ wget http://cdimage.debian.org/cdimage/stretch_di_rc2/i386/iso-cd/debian-stretch-DI-rc2-i386-netinst.iso http://cdimage.debian.org/cdimage/stretch_di_rc2/i386/iso-cd/SHA512SUMS.sign http://cdimage.debian.org/cdimage/stretch_di_rc2/i386/iso-cd/SHA512SUMS

※i386/amd64をよく使う場合はmulti-archを使うと1つのUSBメモリでi386/amd64が利用できて便利

チェックサムファイルの署名確認

チェックサムファイルのSHA512SUMSが正常なものか確認

$ gpg --verify SHA512SUMS.sign
gpg: 署名されたデータが'SHA512SUMS'にあると想定します
gpg: 2017年02月02日 07時45分30秒 JSTに施された署名
gpg:                RSA鍵DA87E80D6294BE9Bを使用
gpg: "Debian CD signing key <debian-cd@lists.debian.org>"からの正しい署名 [不明の]
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
 主鍵フィンガープリント: DF9B 9C49 EAA9 2984 3258  9D76 DA87 E80D 6294 BE9B

公開鍵が見つかりません(public key not found)というエラーの場合はgpg --keyserver keyring.debian.org --recv-keys DA87E80D6294BE9Bで鍵をインポートして再度確認.鍵のIDやフィンガープリントは以下のページでも確認できる

ハッシュ確認

isoファイルが正しくダウンロードされているか確認
以下の例はdebian-stretch-DI-rc2-i386-netinst.isoしかダウンロードしていないのでそれ以外のエラーや警告は無視する

$ sha512sum -c SHA512SUMS
sha512sum: debian-mac-stretch-DI-rc2-i386-netinst.iso: そのようなファイルやディレクトリはありません
debian-mac-stretch-DI-rc2-i386-netinst.iso: FAILED open or read
debian-stretch-DI-rc2-i386-netinst.iso: 完了
sha512sum: debian-stretch-DI-rc2-i386-xfce-CD-1.iso: そのようなファイルやディレクトリはありません
debian-stretch-DI-rc2-i386-xfce-CD-1.iso: FAILED open or read
sha512sum: 警告: 一覧にある 2 個のファイルが読み込めませんでした

usbメモリへの書き込み

USBメモリの確認

書き込み先のデバイスが正しいか確認する
USBメモリ接続直後にdmesgを確認したりfdiskコマンドやマウントして中を確認したり……

$ dmesg
  :
[414356.444121] usb 1-1.2: New USB device found, idVendor=13fe, idProduct=1a00
[414356.444128] usb 1-1.2: New USB device strings: Mfr=0, Product=11, SerialNumber=0
[414356.444131] usb 1-1.2: Product: USB 2.0 HUB
[414362.925178] usb-storage 1-1.2.1:1.0: USB Mass Storage device detected
[414362.925967] scsi host6: usb-storage 1-1.2.1:1.0
[414364.184209] sd 6:0:0:1: [sdb] 980480 512-byte logical blocks: (502 MB/479 MiB)
[414364.187102] sd 6:0:0:1: [sdb] Write Protect is off
[414364.187106] sd 6:0:0:1: [sdb] Mode Sense: 23 00 00 00
[414364.190339] sd 6:0:0:1: [sdb] No Caching mode page found
[414364.190345] sd 6:0:0:1: [sdb] Assuming drive cache: write through
[414364.201730]  sdb: sdb1
[414364.201734] sdb: p1 size 982496 extends beyond EOD, enabling native capacity
[414364.214471]  sdb: sdb1
[414364.214475] sdb: p1 size 982496 extends beyond EOD, truncated
[414364.228961] sd 6:0:0:1: [sdb] Attached SCSI removable disk
$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 478.8 MiB, 502005760 bytes, 980480 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start    End Sectors   Size Id Type
/dev/sdb1  *       32 982527  982496 479.8M  6 FAT16

USBメモリのアンマウント

USBメモリをマウントしている場合はアンマウントしておく

$ sudo umount /dev/sdb1
$ mount | grep /dev/sdb

パーテイション情報の削除

念の為パーテイション情報を削除しておく

$ sudo wipefs /dev/sdb
offset               type
----------------------------------------------------------------
0x1fe                dos   [partition table]

$ sudo wipefs -a /dev/sdb ; sync
/dev/sdb: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/sdb: calling ioctl to re-read partition table: 成功です

書き込み

進捗状態を確認したい場合はpvコマンドを間に挟んだり,ddrescue / ddrescueなどが利用できる

$ sudo dd if=./debian-stretch-DI-rc2-i386-netinst.iso of=/dev/sdb bs=4M ; sync
95+1 レコード入力
95+1 レコード出力
401604608 bytes (402 MB, 383 MiB) copied, 176.874 s, 2.3 MB/s

書き込みが終わったらUSBメモリを取り外してターゲットマシンで利用する

VirtualBoxで起動確認(余録)

手軽に試せるマシンがなかったのでVirtualBoxからUSBメモリを起動して確認した

USBメモリのディスクイメージ作成

直にUSBメモリを指定できないのでUSBメモリへアクセスするためのvmdkイメージを作成

$ sudo VBoxManage internalcommands createrawvmdk -rawdisk /dev/sdb -filename sdb.vmdk 
RAW host disk access VMDK file sdb.vmdk created successfully.
$ sudo cat sdb.vmdk
# Disk DescriptorFile
version=1
CID=1722e641
parentCID=ffffffff
createType="fullDevice"

# Extent description
RW 980480 FLAT "/dev/sdb" 0

# The disk Data Base 
#DDB

ddb.virtualHWVersion = "4"
ddb.adapterType="ide"
ddb.geometry.cylinders="972"
ddb.geometry.heads="16"
ddb.geometry.sectors="63"
ddb.uuid.image="c2c9d560-049f-4c44-bf8a-0b85e820ba12"
ddb.uuid.parent="00000000-0000-0000-0000-000000000000"
ddb.uuid.modification="00000000-0000-0000-0000-000000000000"
ddb.uuid.parentmodification="00000000-0000-0000-0000-000000000000"

USBメモリにアクセス権のあるユーザでVirtualBoxを起動してUSBメモリのイメージを指定して起動

(ここいまいち……)

$ gksudo virtualbox

]]>
https://matoken.org/blog/2017/03/29/write-debian-iso-image-to-usb-memory/feed/ 0
VirtualBox 上のWindows 8 をWindows8.1 に更新できるようにする https://matoken.org/blog/2013/11/01/virtualbox_in_windows_8-1/ https://matoken.org/blog/2013/11/01/virtualbox_in_windows_8-1/#comments Fri, 01 Nov 2013 13:48:49 +0000 http://matoken.org/blog/?p=283 Screenshot from 2013-11-01 22:21:10
VirtualBox 上のWindows8 をWindows8.1 に上げようと思ったら

「お使いのコンピューターの CPU でサポートされていないため、この更新をインストールすることができません。」

と言われてしまいました.
CMPXCHG16b を以下のようにして有効にしてアップデート出来ました.

# 仮想マシン名確認(何故末尾にスペースがorz)
% VBoxManage list vms|grep -i win
"Windows8 Pro 64bit " {aef046b2-e82e-428b-b65f-8ab01fa489fe}

# 仮想マシンのCMPXCHG16b 有効化
% VBoxManage setextradata "Windows8 Pro 64bit " VBoxInternal/CPUM/CMPXCHG16B 1

VirtualBox 4.2.16 以降で新規マシンだとこの手順は要らないようです.(既存環境で作成した仮想マシンでは必要)

]]>
https://matoken.org/blog/2013/11/01/virtualbox_in_windows_8-1/feed/ 1