Ok, well firstly, I'm running Ubuntu 11.10 too, so I can only really speak for that, although other Linux hosts can probably apply similar strategy. For windows users, I can't say; I understand qemu on windows isn't the easiest thing to cut teeth on!
Next, I'd say grab a brew, cos this goes on a bit!
I would recommend booting to command line at first until everything is working. You can always edit /etc/inittab and change the 3 in the last line to a 5 to get it to boot to GUI
Also, you should be able to edit the root file system through the mounted disk on your host if you do so as root. So, if you have /media/Raspi_Remix_14 in Ubuntu, for example, you can edit /media/Raspi_Remix_14/etc/inittab and make changes as above (do this as root on your host, e.g. sudo nano /media/.....)
The password thing is a pain in the butt. Think of a couple of passwords that meet the criteria (try using @ for a, ! for i, 0 for o etc.) You need a couple because you will have to go through the loop a couple of times.
So in qemu, at the beginning, once you've added your users, login to command prompt as root. If password expired, change it. Type chage root. Enter 0, 99999, 2012-01-01, 0, -1, <default>. Note, all except last change date are default values. Type chage -l root (that's letter l (lower case L)).You should see never against three of the options. Repeat for your user i.e. chage <uname>. Now, you may have to do this after you've changed your password, so if you run passwd to change, then type chage -l <name> to see how it's set. If wrong use chage <name> again. You may need to do root first, set it's password, run chage, then login as user, change password, run sudo chage and that should be it. I think the reason this has to be done is because the initial time is incorrect. As long as you have networking, you should be able to use ntp to set the time and the expiry won't be a problem anyway.
Assuming password is now ok, at least you should be able to get into your command line login each time. Report back if not.
Actually, whilst you're logged in as root, you can do the following:
echo <username> ALL=(ALL) ALL
replacing <username> with the user you setup. This allows that user to run sudo commands (you should really use a group rather than the user, but hey!)
Next I would recommend you check that networking is working. I use a tap/tun connection, but I seem to remember, at least grumpyoldgit had networking working out of the box on debian. To check it, ping your router IP from qemu. Also, check DNS by pinging, e.g. raspberrypi.org. If there's no network, report back, and we can try setting up tap connections (which is the only way that works for me) Oh, please excuse the jargon - tap is a connection method for connecting qemu through your PCs network connection.
The reason I recommend getting networking working before X is because you can ssh into qemu to kill X if necessary. So, in qemu, type ifconfig eth0 and make a note of the inet addr.
For X, you need to create a new file in /etx/X11 called xorg.conf, then add the following lines:
Identifier "evdev keyboard catchall"
Option "XkbLayout" "gb"
Again, you can do this from your host - sudo nano /media/Raspi_Premix_14/etc/X11/xorg.conf
I had to omit any screen section to get this to work, and I'm still trying to find out why at this stage.
then if you sudo init 5, you should eventually get to the login screen. Does the keyboard work? If not, damn, it seems I was fluked! To kill the session, assuming you have networking, open terminal in your host and ssh [email protected]
where ip addr is the one you noted above. Alternatively, use your username to ssh then use sudo for the following command. Once logged in to ssh, type init 3 (or sudo init 3) Your x session should return to the command line - press return a couple of times if there's no prompt.
Well, I need a brew myself now (and there's probably loads I've forgotten!) Have a read of the above and post back.