Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

OpenBSD SPARC et qemu-system-sparc

4 réponses
Avatar
Kevin Denis
Bonjour,

J'ai tenté d'installer la version SPARC d'openBSD sur qemu-system-sparc.
C'est l'échec. J'ai essayé avec cd43.iso et install43.iso.
Les deux terminent en panic:
http://kevin.denis.free.fr/images/panic.png
et
http://kevin.denis.free.fr/images/panic-install.png

L'émulation de SPARC a été lancée basiquement:
qemu-system-sparc -m 64 -cdrom cd43.iso -boot d

La doc signale:
QEMU emulates the following sun4m/sun4d peripherals:

* IOMMU or IO-UNITs
* TCX Frame buffer
* Lance (Am7990) Ethernet
* Non Volatile RAM M48T08
* Slave I/O: timers, interrupt controllers, Zilog serial ports,
keyboard and power/reset logic
* ESP SCSI controller with hard disk and CD-ROM support
* Floppy drive (not on SS-600MP)
* CS4231 sound device (only on SS-5, not working yet)

De plus, j'ai le choix pour
`-M [SS-5|SS-10|SS-20|SS-600MP|SS-2|SS-1000|SS-2000]'
Set the emulated machine type. Default is SS-5.

Enfin, la version d'openBIOS:
Since version 0.8.2, QEMU uses OpenBIOS http://www.openbios.org/.
OpenBIOS is a free (GPL v2) portable firmware implementation. The goal is
to implement a 100% IEEE 1275-1994 (referred to as Open Firmware)
compliant firmware.

La doc termine par:
Please note that currently NetBSD, OpenBSD or Solaris kernels don't work.
Pour openBSD, j'ai peu d'espoir. Pour netBSD, j'espère que l'autre fil me
permettra de rendre faux cette affirmation.

Bref, est-ce que quelqu'un a réussi à booter un openBSD sur qemu, sur une
autre archi que x86?
--
Kevin

4 réponses

Avatar
Miod Vallat
> Enfin, la version d'openBIOS:
Since version 0.8.2, QEMU uses OpenBIOS http://www.openbios.org/.
OpenBIOS is a free (GPL v2) portable firmware implementation. The goal is
to implement a 100% IEEE 1275-1994 (referred to as Open Firmware)
compliant firmware.



Ce serait encore meilleur si, dans le cadre de l'émulation sparc, elle
était 100% compatible avec les PROM de sparc (on voit par exemple que la
police utilisée n'est pas correcte).

Please note that currently NetBSD, OpenBSD or Solaris kernels don't work.
Pour openBSD, j'ai peu d'espoir. Pour netBSD, j'espère que l'autre fil me
permettra de rendre faux cette affirmation.



Visiblement, il y a le même problème esp/dma que pour faire fonctionner
NetBSD, et en plus il y a un déréférencement de pointeur NULL pour la
forme, sans doute lié à la ligne "bootpath: " qui me fait soupçonner que
la PROM émulée par qemu n'est pas aussi compatible qu'elle le prétend
(peuplement du noeud /options incomplet ou incorrect).

Je suppose que tu pourrais aller un peu plus loin en faisant un boot -a,
et en indiquant rd0a comme disque racine. Cela ne fera sans doute que
retarder le plantage.

Bref, est-ce que quelqu'un a réussi à booter un openBSD sur qemu, sur une
autre archi que x86?



Je n'en sais rien, mais il y a plusieurs mois qemu plantait lors de
l'attachement du chip série (zs0), donc en tous cas il y a eu des
progrès de faits.
Avatar
Kevin Denis
Le 01-09-2008, Miod Vallat a écrit :
Enfin, la version d'openBIOS:
Since version 0.8.2, QEMU uses OpenBIOS http://www.openbios.org/.
OpenBIOS is a free (GPL v2) portable firmware implementation. The goal is
to implement a 100% IEEE 1275-1994 (referred to as Open Firmware)
compliant firmware.



Ce serait encore meilleur si, dans le cadre de l'émulation sparc, elle
était 100% compatible avec les PROM de sparc (on voit par exemple que la
police utilisée n'est pas correcte).



Ok.

Please note that currently NetBSD, OpenBSD or Solaris kernels don't work.
Pour openBSD, j'ai peu d'espoir. Pour netBSD, j'espère que l'autre fil me
permettra de rendre faux cette affirmation.



Visiblement, il y a le même problème esp/dma que pour faire fonctionner
NetBSD, et en plus il y a un déréférencement de pointeur NULL pour la
forme, sans doute lié à la ligne "bootpath: " qui me fait soupçonner que
la PROM émulée par qemu n'est pas aussi compatible qu'elle le prétend
(peuplement du noeud /options incomplet ou incorrect).



J'ai la possibilité d'ajouter a peu près toutes les options prom que
je souhaite, par exemple
`-prom-env string'
Set OpenBIOS variables in NVRAM, for example:

qemu-system-sparc -prom-env 'auto-boot?úlse'
-prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'

Je suppose que tu pourrais aller un peu plus loin en faisant un boot -a,
et en indiquant rd0a comme disque racine. Cela ne fera sans doute que
retarder le plantage.



Le boot -a et le disque racine rd0a ils sont indiqués dans une prom-env?
--
Kevin
Avatar
Miod Vallat
>> Visiblement, il y a le même problème esp/dma que pour faire fonctionner
NetBSD, et en plus il y a un déréférencement de pointeur NULL pour la
forme, sans doute lié à la ligne "bootpath: " qui me fait soupçonner que
la PROM émulée par qemu n'est pas aussi compatible qu'elle le prétend
(peuplement du noeud /options incomplet ou incorrect).



J'ai la possibilité d'ajouter a peu près toutes les options prom que
je souhaite, par exemple
`-prom-env string'
Set OpenBIOS variables in NVRAM, for example:

qemu-system-sparc -prom-env 'auto-boot?úlse'
-prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'



Tu n'as pas compris ce que je voulais dire, parce que tu n'es sans doute
pas assez familier avec OpenPROM (ou OpenFirmware, c'est son fiston).

Dans OpenPROM, tu as une hiérarchie de noeuds, chacun ayant des
propriétés (= des variables) et des mots (= des méthodes). L'essentiel
des noeuds correspond à la hiérarchie physique des composants de la
machine, et il y a quelques noeuds particuliers qui sont des alias où
contiennent des propriétés et/ou des mots qui ne correspondent pas à un
composant proprement dit.

Par exemple, le vocabulaire forth de base de l'OpenPROM est contenu dans
le noeud racine (il faut bien le mettre quelque part, et puis c'est bien
pratique ici...). Le noeud /options, lui, contient les variables
d'environnement (commandes printenv et setenv au prompt `ok'), ainsi que
quelques variables dynamiques déterminées au runtime lorsque la PROM
tourne (par exemple, quels sont les composants servant aux
entrées-sorties pour la console, qui peuvent être différent de ceux
parametrés en variables d'environnement - par exemple parce que le
composant a été retiré...).

Pour fonctionner correctement sur sparc, OpenBSD (et NetBSD également)
ont besoin de pouvoir parcourir cette arborescence, et ont besoin que
/options contienne tout ce qu'une vraie OpenPROM va y mettre.

A priori, contrairement à ce que je disais hier, ce point est rempli.
Cependant, en plus de ça, les OpenPROM sparc passent au code qu'elles
chargent, un pointeur dans une structure spécifique (et dont le format
dépend de la version majeur de l'OpenPROM, sinon c'est pas drôle). C'est
depuis cette structure qu'OpenBSD extrait le chemin selon lequel il a
été amorcé, ainsi que les options qui lui ont été passées. Et si la
ligne ``bootpath:'' est vide, j'ai bien peur que cette structure ne soit
que partiellement implémentée dans QEMU.

Le boot -a et le disque racine rd0a ils sont indiqués dans une prom-env?



Voir juste au-dessus. Du coup, je ne suis pas si sûr que l'option -a
soit récupérée. Mais tu n'a rien à perdre à essayer.
Avatar
Kevin Denis
Le 02-09-2008, Miod Vallat a écrit :
J'ai la possibilité d'ajouter a peu près toutes les options prom que
je souhaite, par exemple
`-prom-env string'
Set OpenBIOS variables in NVRAM, for example:

qemu-system-sparc -prom-env 'auto-boot?úlse'
-prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'



Tu n'as pas compris ce que je voulais dire, parce que tu n'es sans doute
pas assez familier avec OpenPROM (ou OpenFirmware, c'est son fiston).



Je ne demande qu'a apprendre

Dans OpenPROM, tu as une hiérarchie de noeuds, chacun ayant des
propriétés (= des variables) et des mots (= des méthodes). L'essentiel
des noeuds correspond à la hiérarchie physique des composants de la
machine, et il y a quelques noeuds particuliers qui sont des alias où
contiennent des propriétés et/ou des mots qui ne correspondent pas à un
composant proprement dit.



Ok

Par exemple, le vocabulaire forth de base de l'OpenPROM est contenu dans
le noeud racine (il faut bien le mettre quelque part, et puis c'est bien
pratique ici...). Le noeud /options, lui, contient les variables
d'environnement (commandes printenv et setenv au prompt `ok'), ainsi que
quelques variables dynamiques déterminées au runtime lorsque la PROM
tourne (par exemple, quels sont les composants servant aux
entrées-sorties pour la console, qui peuvent être différent de ceux
parametrés en variables d'environnement - par exemple parce que le
composant a été retiré...).

Pour fonctionner correctement sur sparc, OpenBSD (et NetBSD également)
ont besoin de pouvoir parcourir cette arborescence, et ont besoin que
/options contienne tout ce qu'une vraie OpenPROM va y mettre.

A priori, contrairement à ce que je disais hier, ce point est rempli.
Cependant, en plus de ça, les OpenPROM sparc passent au code qu'elles
chargent, un pointeur dans une structure spécifique (et dont le format
dépend de la version majeur de l'OpenPROM, sinon c'est pas drôle). C'est
depuis cette structure qu'OpenBSD extrait le chemin selon lequel il a
été amorcé, ainsi que les options qui lui ont été passées. Et si la
ligne ``bootpath:'' est vide, j'ai bien peur que cette structure ne soit
que partiellement implémentée dans QEMU.

Le boot -a et le disque racine rd0a ils sont indiqués dans une prom-env?



Voir juste au-dessus. Du coup, je ne suis pas si sûr que l'option -a
soit récupérée. Mais tu n'a rien à perdre à essayer.



Hop, un peu plus d'infos:
5 > help diag
test <device> Run the selftest method for specified device
test-all Execute test for all devices using selftest method
ok
5 > test-all
Testing device /aliases: no self-test method.
Testing device /openprom: no self-test method.
Testing device /openprom/client-services: no self-test method.
Testing device /options: no self-test method.
Testing device /chosen: no self-test method.
Testing device /builtin: no self-test method.
Testing device /builtin/console: no self-test method.
Testing device /packages: no self-test method.
Testing device /packages/client-iface: no self-test method.
Testing device /packages/disk-label: no self-test method.
Testing device /packages/cmdline: no self-test method.
Testing device /packages/deblocker: no self-test method.
Testing device /packages/misc-files: no self-test method.
Testing device /packages/sun-parts: no self-test method.
Testing device /,0: no self-test method.
Testing device /,10000000: no self-test method.
Testing device /,10000000: no self-test method.
Testing device /,10000000/,10001000: no self-test method.
Testing device /,10000000/,10001000/SUNW,,800000: no self-test method.
Testing device /,10000000/,10001000/,8400000: no self-test method.
Testing device /,10000000/,10001000/,8400000/,8800000: no self-test method.
Testing device /,10000000/,10001000/,8400000/,8800000/,0: no self-test method.
Testing device /,10000000/,10001000/,8400000/,8800000/,0: no self-test method.
Testing device /,10000000/,10001000/,8400010: no self-test method.
Testing device /,10000000/,10001000/,8400010/,8c00000: no self-test method.
Testing device /,10000000/,10001000/SUNW,,c000000: no self-test method.
Testing device /,10000000/,10001000/,a000000: no self-test method.
Testing device /obio: no self-test method.
Testing device /obio/,100000: no self-test method.
Testing device /obio/,0: no self-test method.
Testing device /obio/,200000: no self-test method.
Testing device /obio/SUNW,,400000: no self-test method.
Testing device /obio/,800000: no self-test method.
Testing device /obio/,900000: no self-test method.
Testing device /obio/,910000: no self-test method.
Testing device /obio/,d00000: no self-test method.
Testing device /obio/,e00000: no self-test method.
Testing device /FMI,MB86904: no self-test method.
ok
5 > printenv
name "options"
boot-from "disk"
boot-args ""
use-generic? "false"
boot-script ""
boot-screen ""
ttyb-rts-dtr-off "false"
ttyb-ignore-cd "true"
ttyb-mode "9600,8,n,1,-"
ttya-rts-dtr-off "false"
ttya-ignore-cd "true"
ttya-mode "9600,8,n,1,-"
tpe-link-test? "true"
scroll-lock "true"
skip-netboot? "false"
default-mac-address "false"
pci-probe-mask "-1"
selftest-#megs "0"
screen-#rows "24"
screen-#columns "80"
output-device "/builtin/console"
input-device "/builtin/console"
use-nvramrc? "false"
oem-logo? "false"
oem-banner ""
oem-banner? "false"
nvramrc ""
fcode-debug? "false"
diag-file "diag"
diag-device "net"
diag-switch? "false"
boot-file ""
boot-command "boot"
auto-boot? "true"
ok
5 >

J'ai bien vu des docs signalant la possibilité de faire un ls /
mais au mieux ça ne rend rien, au pire j'ai eu un crash.
--
Kevin