Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Thu Jul 19, 2012 6:17 pm

18.71 Bogomips
for full Win95B running via Qemu on Raspbian with VFP enabled. This is much enough for Win95,
because it works good on a 386 compi with 8 Bogomips,
greetings^^
Dietmar

PS: So lets start fun, shrinking Win95B.

I just noticed, that the dependency walker also works in Win95:-),
so it is much more easy than in XP. I have the filelist for Moorhuhn,
so I make try to put Win95B mini complete with Moorhuhn to ram.
Its size will be all together about 50MB in Ram. Any games that work on Win95 can be played. Win95 works with 4 MB ram for itself,
its browser in ram will be faster than any Midory without simulation...
I will show you^^

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Sat Jul 21, 2012 11:32 pm

Hi all,
I just shrink my Win95 to 15 MByte with full Moorhuhn^^ support.
This is even now fast, when you give Qemu 190 MB ram for this:-) on Raspberry Pi with Raspbian.
Now I will put this via Ramdisk to Ram on Raspi,
and then the fun starts also with Quake,
Dietmar

PS: Even with qemu the Notepad Editor from Win 95 is faster than Leanpad.
Image

Image

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Sun Jul 22, 2012 9:34 am

Hi,
please tell me what you think, if this will work:-):
In Raspbian Linux on Raspberry Pi I start a ramdisk with size of 32MB, which is formatted with Fat16 and set aktiv.
In this ramdisk I copy under Linux all the files from my mini Win95 (15MB) from a folder in Linux.
Then qemu starts. qemu can see this ramdisk from Linux as harddrive C:\ and starts Win95 from it.
The interesting thing in this is, that the copy process under Linux for the files from Win95 (15MB)
to the ramdisk would last only seconds.
Do you know a ramdisk for Rasbian Linux on Raspberry Pi, that could do this?
Nice to hear from you,
Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Mon Jul 23, 2012 10:56 am

Hihi,
I got i:-).
Moorhuhn is now double as fast as before.
I used syslinux.com on win95.img file in qemu, where I have put before the win15MB.img into.
The load to ramdisk with memdisk initrd=win15mb.img last only 12 sec.
But because of the small memory, it works best, when you give 210MB(!) to qemu,
this means for the underlying Raspbian Linux are only about 4MB left,
Dietmar

portets
Posts: 186
Joined: Sat Oct 29, 2011 6:24 am

Re: Win95 on real Raspi

Mon Jul 23, 2012 12:23 pm

Good job getting that to work. :)

Did you optimise qemu's makefile with:

Code: Select all

-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Mon Jul 23, 2012 2:05 pm

Hi portets,
nice that somebody is here, who understands what I am doing.
Until now I compiled qemu from Thoronir just after ./configure (options for qemu)
with make (alone) and then make install.
I am not sure, if the gcc compiler understand all this instructions.
But I give it a try.

So I do now from qemu folder

./configure --target-list="i386-softmmu" -- enable-sdl -- prefix=/usr

make clean
make -O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk

and we will see what happens :mrgreen: ,
thanks Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Mon Jul 23, 2012 5:50 pm

Ok,
I put the following line in makefile (for qemu)

.PHONY: all clean cscope distclean dvi html info install install-doc \
pdf recurse-all speed tar tarbin test build-all

CFLAGS:=-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk

$(call set-vpath, $(SRC_PATH):$(SRC_PATH)/hw)

Then I start compiler with make again.
After few lines comes error message about enum_str (not initializised).
I find this to be true.
So I put an extra line
{
int64_t value = 0;
char *enum_str;
assert(strings);
enum_str = (char *)strings[value];
qmp_input_type_str(v, &enum_str, name, errp);
if (error_is_set(errp)) {
return;
}

while (strings[value] != NULL) {
if (strcmp(strings[value], enum_str) == 0) {
break;
}
value++;

Now it conitues compiling :roll: ...
Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Mon Jul 23, 2012 6:53 pm

Yeaah,
my new Qemu is ready. I am sure, that this is the best qemu EVER for Raspberry Pi.
Is there a chance to test, if all the CFLAGS, that I tell to the compiler have been recogniced,
greetings Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Mon Jul 23, 2012 8:22 pm

Now I think, that the flags for the compiler for make use of the underlying CPU are set in Qemu makefile

not
CFLAGS:=-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk

but
CFLAGS=-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk

Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Tue Jul 24, 2012 2:54 am

Now I think,
that the ./configure overwrites any settings in any makefile and also if it is stored in /etc/make.conf
Is this true? Then no switch can change Qemu, always to build an armv4l Processor (as Raspi is host).
There exists the switch --cpu in ./configure and also --extra-cflags=" "
Has anybody played with this?
Thanks for help,
Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Tue Jul 24, 2012 12:17 pm

Hihi,
I get it work.
I put in Makefile from Qemu the extra line
Makefile: ;
configure: ;

.PHONY: all clean cscope distclean dvi html info install install-doc \
pdf recurse-all speed tar tarbin test build-all

CFLAGS=-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk

$(call set-vpath, $(SRC_PATH):$(SRC_PATH)/hw)

LIBS+=-lz $(LIBS_TOOLS)


And then I start Qemu configure with:

./configure --target-list="i386-softmmu" --enable-sdl --prefix=/usr --extra-cflags="-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk"

After the print out list from configure can be seen, I type
make (lasts about 1 hour, no error)
make install

Because I read
"The distinction between QEMU_CFLAGS and CFLAGS is that the
former is for flags without which QEMU can't compile, whereas
the latter is for flags like "-g -O2" which the user can
safely override. "-march=i486" is in the former category, and
so belongs in QEMU_CFLAGS."

So, I think only vhost.c in Qemu has advantage from all those flags:-).
When the list of configure is printed out, you see that still as cpu is listened armv4l
and CFLAGS=-O2 -g

But in qemu_cflags appears now also
-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk

The results: Windows 95 starts now to desktop in 39 seconds:-). Before it was 79 s.
Moorhuhn starts now in 66 s, before it was 73 sec.
Nice to hear from you,
Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Tue Jul 24, 2012 5:11 pm

Hi,
I just tested the brandnew QEMU version 1.1.1-1.
I compiled it with the same cflags as the old Thoronir Qemu 0.15.50 (special edition:-).
I come to desktop with win95, but it is unstable and lasts about 3 times longer than with Thoronirs Qemu.
Stzrange, it just looks, that somebody does not like,
that i386 can be effektiv simulated on ARM machines. I can see really no reason, why a newer produkt is so much worse than before for Arm,
Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Wed Jul 25, 2012 7:34 am

Hi all,
I shrink my mini Win95 with gzip -9 to 7MB with full Moorhuhn support.
Soon I will show you a new video.
This is fun :mrgreen:
Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Thu Jul 26, 2012 1:47 pm

I just did a crazy hack :mrgreen: in Assembler at ***. I needed two days for to figure this out.
Really, the world has suffered years about this bug.
Now I like my :D mini win95 :D ,
Dietmar

PS: On my Desktop computer, this min Win 95 boots in qemu (!) in less than one sec.
On Raspi I think I can bring it to about 20 sec to Desktop.

tekmanro
Posts: 14
Joined: Tue Jul 17, 2012 9:57 pm

Re: Win95 on real Raspi

Sat Jul 28, 2012 7:04 pm

Hi Dietmar,

Just wanted to tell you that I'm following this thread and I appreciate your updates. I'm still waiting for my Pi to arrive, but I'd love to try out your optimized QEMU on it (thinking about running a stripped down version of Windows 2000 - which is the oldest OS available on the NT kernel that can run most modern apps).

Thanks!

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Sat Jul 28, 2012 7:22 pm

Hi tekmanro,

I also tried the new Qemu-Linaro version for ARM. I compiled it with the same --extra-cflags.
What a disaster, unstable, counts ram size wrong...brrr.
At once I switched back to the Thoronir Qemu,
which is also the MOST fast qemu from about 10 versions that I tested.
That this Qemu version is something special I also noticed, when I crosscompiled Qemu for
Windows. This was the only one, where you can set up an ARM1176 processor.
All newer Qemu builds are bad as much as possible for an ARM host,
Dietmar

meigrafd
Posts: 97
Joined: Tue May 29, 2012 9:28 am
Location: Germany

Re: Win95 on real Raspi

Sat Aug 04, 2012 6:50 pm

Hi Dietmar

I've also tried your steps to compile an qemu 486 version but on "make" ill get a error i cant solve:
CC qapi/qmp-input-visitor.o
qapi/qmp-input-visitor.c: In function ‘qmp_input_type_enum’:
qapi/qmp-input-visitor.c:235:13: error: ‘enum_str’ may be used uninitialized in this function [-Werror=uninitialized]
cc1: all warnings being treated as errors
make: *** [qapi/qmp-input-visitor.o] Fehler 1
Im using latest raspbian image from raspberrypi.org (2012-07-15). The steps i did:
1) mkdir raspidev && cd raspidev
2) wget http://thoronir.net/raspi-dev/qemu-git.tar.bz2
3) tar xfj qemu-git.tar.bz2
4) cd qemu
5) nano Makefile:
under the line:
.PHONY: all clean cscope distclean dvi html info install install-doc \
pdf recurse-all speed tar tarbin test build-all

i added:
CFLAGS=-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk

6) ./configure --target-list="i386-softmmu" --prefix=/usr --extra-cflags="-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk"
7) make

Can you help me please? :oops:
Thanx! ;)

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Sat Aug 04, 2012 7:30 pm

Hi meigrafd,
delete the extra line in the makefile.
It is enough to tell qemu the switches in --extra-cflags.
I add you the repaired file, that put you away from this error.
Take only the Qemu 0.15.50 from Thoronir.
All others make BIG trouble.
Change the file in qemu/qapi folder qmp-input-visitor.c after you hit ./ configure
and before you hit make.
Good luck:-)
Dietmar

PS: I cant upload this file here. So I post you the source. Copy and past it and name it
qmp-input-visitor.c

Code: Select all

/*
 * Input Visitor
 *
 * Copyright IBM, Corp. 2011
 *
 * Authors:
 *  Anthony Liguori   <[email protected]>
 *
 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
 * See the COPYING.LIB file in the top-level directory.
 *
 */

#include "qmp-input-visitor.h"
#include "qemu-queue.h"
#include "qemu-common.h"
#include "qemu-objects.h"
#include "qerror.h"

#define QIV_STACK_SIZE 1024

typedef struct StackObject
{
    const QObject *obj;
    const  QListEntry *entry;
} StackObject;

struct QmpInputVisitor
{
    Visitor visitor;
    QObject *obj;
    StackObject stack[QIV_STACK_SIZE];
    int nb_stack;
};

static QmpInputVisitor *to_qiv(Visitor *v)
{
    return container_of(v, QmpInputVisitor, visitor);
}

static const QObject *qmp_input_get_object(QmpInputVisitor *qiv,
                                           const char *name)
{
    const QObject *qobj;

    if (qiv->nb_stack == 0) {
        qobj = qiv->obj;
    } else {
        qobj = qiv->stack[qiv->nb_stack - 1].obj;
    }

    if (name && qobject_type(qobj) == QTYPE_QDICT) {
        return qdict_get(qobject_to_qdict(qobj), name);
    } else if (qiv->nb_stack > 0 && qobject_type(qobj) == QTYPE_QLIST) {
        return qlist_entry_obj(qiv->stack[qiv->nb_stack - 1].entry);
    }

    return qobj;
}

static void qmp_input_push(QmpInputVisitor *qiv, const QObject *obj, Error **errp)
{
    qiv->stack[qiv->nb_stack].obj = obj;
    if (qobject_type(obj) == QTYPE_QLIST) {
        qiv->stack[qiv->nb_stack].entry = qlist_first(qobject_to_qlist(obj));
    }
    qiv->nb_stack++;

    if (qiv->nb_stack >= QIV_STACK_SIZE) {
        error_set(errp, QERR_BUFFER_OVERRUN);
        return;
    }
}

static void qmp_input_pop(QmpInputVisitor *qiv, Error **errp)
{
    qiv->nb_stack--;
    if (qiv->nb_stack < 0) {
        error_set(errp, QERR_BUFFER_OVERRUN);
        return;
    }
}

static void qmp_input_start_struct(Visitor *v, void **obj, const char *kind,
                                   const char *name, size_t size, Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);
    const QObject *qobj = qmp_input_get_object(qiv, name);

    if (!qobj || qobject_type(qobj) != QTYPE_QDICT) {
        error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                  "QDict");
        return;
    }

    qmp_input_push(qiv, qobj, errp);
    if (error_is_set(errp)) {
        return;
    }

    if (obj) {
        *obj = g_malloc0(size);
    }
}

static void qmp_input_end_struct(Visitor *v, Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);

    qmp_input_pop(qiv, errp);
}

static void qmp_input_start_list(Visitor *v, const char *name, Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);
    const QObject *qobj = qmp_input_get_object(qiv, name);

    if (!qobj || qobject_type(qobj) != QTYPE_QLIST) {
        error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                  "list");
        return;
    }

    qmp_input_push(qiv, qobj, errp);
}

static GenericList *qmp_input_next_list(Visitor *v, GenericList **list,
                                        Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);
    GenericList *entry;
    StackObject *so = &qiv->stack[qiv->nb_stack - 1];

    if (so->entry == NULL) {
        return NULL;
    }

    entry = g_malloc0(sizeof(*entry));
    if (*list) {
        so->entry = qlist_next(so->entry);
        if (so->entry == NULL) {
            g_free(entry);
            return NULL;
        }
        (*list)->next = entry;
    }
    *list = entry;


    return entry;
}

static void qmp_input_end_list(Visitor *v, Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);

    qmp_input_pop(qiv, errp);
}

static void qmp_input_type_int(Visitor *v, int64_t *obj, const char *name,
                               Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);
    const QObject *qobj = qmp_input_get_object(qiv, name);

    if (!qobj || qobject_type(qobj) != QTYPE_QINT) {
        error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                  "integer");
        return;
    }

    *obj = qint_get_int(qobject_to_qint(qobj));
}

static void qmp_input_type_bool(Visitor *v, bool *obj, const char *name,
                                Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);
    const QObject *qobj = qmp_input_get_object(qiv, name);

    if (!qobj || qobject_type(qobj) != QTYPE_QBOOL) {
        error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                  "boolean");
        return;
    }

    *obj = qbool_get_int(qobject_to_qbool(qobj));
}

static void qmp_input_type_str(Visitor *v, char **obj, const char *name,
                               Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);
    const QObject *qobj = qmp_input_get_object(qiv, name);

    if (!qobj || qobject_type(qobj) != QTYPE_QSTRING) {
        error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                  "string");
        return;
    }

    *obj = g_strdup(qstring_get_str(qobject_to_qstring(qobj)));
}

static void qmp_input_type_number(Visitor *v, double *obj, const char *name,
                                  Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);
    const QObject *qobj = qmp_input_get_object(qiv, name);

    if (!qobj || qobject_type(qobj) != QTYPE_QFLOAT) {
        error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                  "double");
        return;
    }

    *obj = qfloat_get_double(qobject_to_qfloat(qobj));
}

static void qmp_input_type_enum(Visitor *v, int *obj, const char *strings[],
                                const char *kind, const char *name,
                                Error **errp)
{
    int64_t value = 0;
    char *enum_str;
    assert(strings);
	enum_str = (char *)strings[value];
    qmp_input_type_str(v, &enum_str, name, errp);
    if (error_is_set(errp)) {
        return;
    }

    while (strings[value] != NULL) {
        if (strcmp(strings[value], enum_str) == 0) {
            break;
        }
        value++;
    }

    if (strings[value] == NULL) {
        error_set(errp, QERR_INVALID_PARAMETER, name ? name : "null");
        return;
    }

    *obj = value;
}

static void qmp_input_start_optional(Visitor *v, bool *present,
                                     const char *name, Error **errp)
{
    QmpInputVisitor *qiv = to_qiv(v);
    const QObject *qobj = qmp_input_get_object(qiv, name);

    if (!qobj) {
        *present = false;
        return;
    }

    *present = true;
}

static void qmp_input_end_optional(Visitor *v, Error **errp)
{
}

Visitor *qmp_input_get_visitor(QmpInputVisitor *v)
{
    return &v->visitor;
}

void qmp_input_visitor_cleanup(QmpInputVisitor *v)
{
    qobject_decref(v->obj);
    g_free(v);
}

QmpInputVisitor *qmp_input_visitor_new(QObject *obj)
{
    QmpInputVisitor *v;

    v = g_malloc0(sizeof(*v));

    v->visitor.start_struct = qmp_input_start_struct;
    v->visitor.end_struct = qmp_input_end_struct;
    v->visitor.start_list = qmp_input_start_list;
    v->visitor.next_list = qmp_input_next_list;
    v->visitor.end_list = qmp_input_end_list;
    v->visitor.type_enum = qmp_input_type_enum;
    v->visitor.type_int = qmp_input_type_int;
    v->visitor.type_bool = qmp_input_type_bool;
    v->visitor.type_str = qmp_input_type_str;
    v->visitor.type_number = qmp_input_type_number;
    v->visitor.start_optional = qmp_input_start_optional;
    v->visitor.end_optional = qmp_input_end_optional;

    v->obj = obj;
    qobject_incref(v->obj);

    return v;
}

meigrafd
Posts: 97
Joined: Tue May 29, 2012 9:28 am
Location: Germany

Re: Win95 on real Raspi

Sat Aug 04, 2012 7:53 pm

Ah realy nice! Big Thanx for the fast answer! 8-)
Now it seems to work :)

One final question:
When i want to connect to the qemu system from rpi which network type you prefer?
tap (vpn)?
Bridging?
or VDE?

I want to run a i386 Debian linux over qemu and need access to it with other programs running on Raspberry


PS: Sorry for my bad english :oops:

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Sat Aug 04, 2012 8:22 pm

Hi meigrafd,
I do not test network until now. But even Win95 recogniced the network connection,
so it can be done.
For the sound I get a message from qemu, that "nothing has been understood", crazy.
But with the Thoronir Qemu it is really stable, Win XP can be done, but slow.
Bootime for Win95 is 1 min.

Now I work on Qemu User mode, for to make Wine work on qemu.
Until now I test a lot and so I see it is a bug in qemu-i386 in all versions.
None of the comments I read give an advice, what has to be done.
You can see this error in qemu-i386 when you use from the testfiles from Qemu
linux-user-test-0.3 in i386 folder the program testthread.
Any version from Qemu gives Qemu: Unsupported syscall : 240
Segmentation fault


Dietmar

EDIT: sys_futex is syscall 240 on i386 and
ought to be supported if qemu was built with enabled NPTL, what I ddid.

meigrafd
Posts: 97
Joined: Tue May 29, 2012 9:28 am
Location: Germany

Re: Win95 on real Raspi

Sun Aug 05, 2012 9:43 am

I now figured out that " Bridge " (german link) should be good but cant test it with qemu

If i try to start qemu i sometimes get an error like:
[email protected]:/qemu# /usr/bin/qemu -cpu 486 -hda /qemu/debian.img -m 64 -pidfile /var/run/qemu.i386.pid -nographic
qemu: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Abgebrochen
[email protected]:/qemu#
After 3 times it seems to start but it doesnt continue after:
[email protected]:/qemu# /usr/bin/qemu -cpu 486 -hda /qemu/debian.img -m 64 -pidfile /var/run/qemu.i386.pid -nographic

Google, Inc.
Serial Graphics Adapter 11/03/11
SGABIOS $Id$ ([email protected]) Thu Nov 3 13:33:51 UTC 2011
4 0

SeaBIOS (version pre-0.6.3-20110810_173319-rincewind.home.kraxel.org)


iPXE v1.0.0-591-g7aee315
iPXE (http://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+03FC82A0+03F882A0 CA00


Booting from Hard Disk...
GRUB loading.
Welcome to GRUB!
(running it over ssh so i had to copy sgabios.bin from my vm where i installed qemu 1.1.1)

UserSpace (qemu-i386 binary) i've also tried but doesnt work :(
Prozess starts without erros but i cant connect to webinterface which should be started from that prog..


Btw: Are you from Germany? whould be easier for me to talk in german as in english ;)

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Sun Aug 05, 2012 10:30 am

Hi meigrafd,
yes I am from germany, city Ilsede between Braunschweig and Hannover.
Hallo von hier aus!
I prefer to write in English, so that others can read also. If
you have a special question, you can ask in German language.
The message with malloc.c:3096: sYSMALLOc: I get also sometimes.
It is a bug in Qemu. When you just change the value of -m 64 to -m 65 or vice versa it starts.
The switch with -cpu 486 is also a bug in Qemu. The processor is too fast and -cpu 486 slows it down.
To make a working network connection in Qemu on Debian is something of the black art.
I am not so good in Linux, but others here can help you.
First you have to find out, which network device is seen by Qemu. I think, it should look like

-cpu i486 -m 64 -kernel zImage -hda G:\debian.img -hdb G:\swapp.img -append "root=/dev/sda1 rw" -net nic -net tap,ifname=tap32

The User Space Mode with qemu-i386 does not work until now for ARM as host and i386 as guest.
I think, because a hello world program works (compiled for i386) with qemu-i386 on Raspi,
that the NPTL switch for ARM to i386 in qemu is just not implemented. Today I test this.
I am going to write this part of qemu 0.15.50 (Thoronir new). Today I implement the futex() calls for
i386 there. I think it will work. I have no idea what the people at qemu or linaro Qemu are doing.
This is bug bug bug :mrgreen: ,
I hope I am better
Dietmar

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Tue Aug 21, 2012 10:03 am

Hi,
I just make a new Raspbian image from the official
2012-07-15-wheezy-raspbian.zip
with all updates and upgrades (21. August 2012)
and with Thoronir Qemu 0.15.50.
It still fits on a 2 Gbyte SD card.
Just put your *.img in and type
qemu *.img or for example qemu moorhuhn.img
and voila,
Dietmar

PS: Does anybody know, where I can upload this 2 Gbyte Raspbian image?

ghans
Posts: 7878
Joined: Mon Dec 12, 2011 8:30 pm
Location: Germany

Re: Win95 on real Raspi

Tue Aug 21, 2012 12:59 pm

You could torrent it ... but please compress it first.

http://openbittorrent.com/ is a free tracker.
http://www.utorrent.com/ is a free program without much bloat and resource-wastage.

Just select "create torrent" and use the openbittorrent announce url and your image file.
Select "initial seeding " also - then give us the resulting torrent file.
It will be slow at first , then it will become faster exponentially.


ghans
• Don't like the board ? Missing features ? Change to the prosilver theme ! You can find it in your settings.
• Don't like to search the forum BEFORE posting 'cos it's useless ? Try googling : yoursearchtermshere site:raspberrypi.org

Dietmar
Posts: 361
Joined: Sun Sep 04, 2011 5:43 pm
Contact: Website

Re: Win95 on real Raspi

Tue Aug 21, 2012 1:54 pm

Ok, I just did it.
The name of the torrent is

wis.img.gz.torrent

It is Raspbian with Qemu 0.15.50 softmmu and hardfloat.

You can put any *.img in and just type
qemu *.img
I tested it with XP and with Win95.
I have an emailaddy,
Dietmar

Return to “Off topic discussion”