これは、NetBSD Advent Calendar 2020の13日目の記事です。
はじめに
NetBSD/alpha on qemu-system-alphaというport-alphaメーリングリスト への投稿を見て以来、qemuでNetBSD/alphaを動かしてみたいと思っていました。 Jason Thorpeさんありがとうございます。
furandon_pigさんの10日目の記事にもAnitaでもqemuで動くalphaの表示がされていました。 Anitaを使えば簡単なのだと思うのですが、手作業でqemu-system-alphaでNetBSD/alpha-currentをセットアップしてみました。 qemuは、pkgsrc/emulators/qemu-5.1.0nb10を使います。
インストール方法
インストール用のメモリーディスクを内蔵したカーネルを起動することで、sysinst(8)でインストールすることにします。 以下のように実行することで、インストール可能です。 base.tgzなどは、http経由でnycdn.NetBSD.orgからフェッチして利用することにします。
$ qemu-img create -f qcow2 netbsd-10.qcow2 3G # 3GBのqcow2ディスクイメージを作成します。 $ ftp http://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/202012121510Z/alpha/installation/instkernel/netbsd.gz # インストール用カーネルを取得します。 $ unzip netbsd.gz $ qemu-system-alpha -kernel netbsd -hda netbsd-10.qcow2
これにより、qemuのuser networkが利用されます。ネットワークインターフェイスはwm0になります。 後は、普通にsysinst(8)でwd0に割り当てられたハードディスクイメージにインストールします。 私が引っ掛かったのは以下の2点でした。
-
dhcpcd(8)でにIPアドレスをwm(4)に割り当てるのが自動的にはされませんでした。シェルに移行して、
dhcpcd wm0
を 事前に実行しておく必要がありました。 - そもそもインストール用カーネルがあるのに気付きていませんでした(上の手順には反映済みです)。
インストール後の起動方法
インストール後にqemuを起動させる際に、ルートファイルシステムを指定しておく必要がありました。 以下のように起動するのが良いでしょう。
$ ftp http://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/202012121510Z/alpha/binary/kernel/netbsd-GENERIC.gz $ gunzip netbsd-GENERIC.gz $ qemu-system-alpha -kernel netbsd-GENERIC -hda netbsd-10.qcow2 -append 'root=wd0a'
最後にdmesgを掲載しておきます。
consinit: not using prom console Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 9.99.77 (GENERIC) #0: Sat Dec 12 15:06:11 UTC 2020 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/alpha/compile/GENERIC 6600 family, unknown model variation 0x1400, 250MHz, s/n QEMU 8192 byte page size, 1 processor. total memory = 128 MB (120 KB reserved for PROM, 127 MB used by NetBSD) avail memory = 113 MB entropy: no seed from bootloader timecounter: Timecounters tick every 0.976 msec Kernelized RAIDframe activated mainbus0 (root) cpu0 at mainbus0: ID 0 (primary), 21264A-0 (EV67) cpu0: Architecture extensions: 0x1307<PMI,PAT,MVI,CIX,FIX,BWX> qemu0 at mainbus0: Qemu virtual machine services timecounter: Timecounter "Qemu" frequency 1000000000 Hz quality 3000 tsc0 at mainbus0: 21272 Core Logic Chipset, Cchip rev 0 tsc0: 2 Dchips, 1 memory bus of 16 bytes tsc0: arrays present: 0MB, 0MB, 0MB, 0MB, Dchip 0 rev 0 tsp0 at tsc0 tsp0: window 0: 0/base 0/mask 0 reinitialized tsp0: window 1: 0/base 0/mask 0 reinitialized pci0 at tsp0 bus 0 pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok vga0 at pci0 dev 1 function 0: Cirrus Logic CL-GD5446 (rev. 0x00) wsdisplay0 at vga0 kbdmux 1: console (80x25, vt100 emulation) wsmux1: connecting to wsdisplay0 drm at vga0 not configured wm0 at pci0 dev 2 function 0: Intel i82540EM 1000BASE-T Ethernet (rev. 0x03) wm0: interrupting at dec 6600 irq 12 wm0: 32-bit 33MHz PCI bus wm0: 64 words (6 address bits) MicroWire EEPROM wm0: Ethernet address 52:54:00:12:34:56 wm0: 0x200402<LOCK_EECD,IOH_VALID,WOL> makphy0 at wm0 phy 1: Marvell 88E1011 Gigabit PHY, rev. 0 makphy0: Failed to access EADR. Are you an emulator? makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto cmdide0 at pci0 dev 3 function 0: CMD Technology PCI0646 (rev. 0x07) cmdide0: bus-master DMA support present cmdide0: primary channel configured to native-PCI mode, channel non-independant cmdide0: using dec 6600 irq 16 for native-PCI interrupt atabus0 at cmdide0 channel 0 cmdide0: secondary channel configured to native-PCI mode, channel non-independant cmdide0: secondary channel ignored (disabled) sio0 at pci0 dev 7 function 0: Intel 82378ZB System I/O (rev. 0x03) isa0 at sio0 com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, 1-byte FIFO com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, 1-byte FIFO pckbc0 at isa0 port 0x60-0x64 pckbd0 at pckbc0 (kbd slot) pckbc0: using irq 1 for kbd slot wskbd0 at pckbd0: console keyboard, using wsdisplay0 pms0 at pckbc0 (aux slot) pckbc0: using irq 12 for aux slot wsmouse0 at pms0 mux 0 attimer0 at isa0 port 0x40-0x43 fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2 mcclock0 at isa0 port 0x70-0x71: mc146818 compatible time-of-day clock tsciic0 at tsc0 iic0 at tsciic0: I2C bus entropy: WARNING: extracting entropy too early Using the Qemu CPU alarm for 50 Hz hardclock. timecounter: Timecounter "clockinterrupt" frequency 50 Hz quality 0 aes: BearSSL aes_ct chacha: Portable C ChaCha adiantum: self-test passed aes_ccm: self-test passed blake2s: self-test passed fd0 at fdc0 drive 0: 1.44MB, 80 cyl, 2 head, 18 sec fd1 at fdc0 drive 1: 1.44MB, 80 cyl, 2 head, 18 sec wd0 at atabus0 drive 0 wd0: <QEMU HARDDISK> wd0: drive supports 16-sector PIO transfers, LBA48 addressing wd0: 3072 MB, 6241 cyl, 16 head, 63 sec, 512 bytes/sect x 6291456 sectors wd0: 32-bit data port wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100) wd0(cmdide0:0:0): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33) (using DMA) cgd: self-test aes-xts-256 cgd: self-test aes-xts-512 cgd: self-test aes-cbc-128 cgd: self-test aes-cbc-256 cgd: self-test 3des-cbc-192 cgd: self-test blowfish-cbc-448 cgd: self-test aes-cbc-128 (encblkno8) cgd: self-tests passed root on wd0a dumps on wd0b root file system type: ffs kern.module.path=/stand/alpha/9.99.77/modules entropy: WARNING: consolidating less than full entropy
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。