Date: Thu, 18 Jul 2002 10:49:56 -0400 (EDT) From: Andy <andy@wantpackets.com> To: freebsd-ppc@freebsd.org Subject: Re: FreeBSD-powerpc compiled init -> "ppcdisk" Message-ID: <1027003796.3d36d5944e85b@www.wantpackets.com> In-Reply-To: <3D3674D5.864C543E@ptree32.com.au> References: <1026963034.3d36365a28b28@www.wantpackets.com> <3D3674D5.864C543E@ptree32.com.au>
next in thread | previous in thread | raw e-mail | index | archive | help
Quoting Peter Grehan <peterg@ptree32.com.au>: > Hi Andrew, > > > "ppcdisk" from Oct 18 does not contain anything in reguards to any > binaries (or > > it would seem so as it compresses to about nothing.) I compiled and > linked init > > as a FreeBSD powerpc binary, and would like to try it out. > > I'm amazed that you managed to get init to compile, since there are > some major pieces missing in libc. I'll put a pointer to the patches > further down. Ouch for me. Talk about redoing the wheel. I spent two and a half batteries and some AC figuring out stuff already done ;/ (But that's fine with me) I'll compare what you did to what I did. > > Actually, there are a whole lot more things that will get in your way, > but > if you're willing, keep reading :-) No, not "if," say "because." > > > I cannot do this be > > cause I can't(do not know how?) to mount the big endian ppcdisk image > to put the > > file init in /sbin. I ask for somebody to tell me how to mess with > big endian > > stuff with my i386 or to do the above themselves on a NetBSD-PPC (or > any ffs-rea > > ding os on the powerpc). The binary is available at > > https://wantpackets.com/~andy/init . > > (using the 4.6-RELEASE write_mfs_in_kernel.c works :) > > I currently use mkisofs to build an ISO image, build ofwd, cd9660 and > GEOM into the ppc kernel, and use psim's disk capability to mount root. > The idea also being that I can use this ISO image on a real system when I guess that's a good idea. For a second, I thought about having a hd image but then realized I would have the same problem as I do now... (didn't know about all the cool things psim can do) > > I'm happy with it. So, the steps are: > > 1. Apply the relevant kernel/libc patches from > > http://www.ptree32.com.au/freebsd/ppc-0718.tgz > > 2. Take out the BOOTP, BOOTP_NFSROOT, and NFS_ROOT lines from your > kernel > conf file. Add GEOM and CD9660 (I'm using GEOM since an Apple > partition > module will be added to it at some point). Also, GEOM requires the > following lines to be added to files.powerpc. I guess they might > make it > into the MI files file at some point. > > crypto/rijndael/rijndael-alg-fst.c optional geom > crypto/rijndael/rijndael-api-fst.c optional geom > > 3. Populate a directory tree with /sbin/init, /dev, and various files > & > utilities. > (e.g. /bin/sh, /bin/ls, /etc/rc) and create an ISO image of this. > > 5. In the kernel compile directory, create a psim device tree file, > with the > following lines. Yes, there's a lot of crap here, but unfortunately > it's > required by psim. > > /#address-cells 1 > > # > # CPU definition. > # > /cpus/cpu@0 > > # > # disk file, done via phb junk. wish there was a better way. > # > /phb@0x70000000 > ./device_type "pci > ./name "pci > ./#address-cells 3 > ./#size-cells 2 > ./ranges ni0,0,0,0 0xc0000000 0x10000 > > /phb@0x70000000/ide@1 > ./device_type "ide > ./name "ide > ./assigned-addresses \ > ni0,0,10,1f0 8 \ > ni0,0,14,3f8 8 \ > ni0,0,18,170 8 \ > ni0,0,1c,378 8 \ > ni0,0,20,200 8 > ./reg \ > 1 0 \ > i0,0,10,0 8 \ > i0,0,18,0 8 \ > i0,0,14,6 1 \ > i0,0,1c,6 1 \ > i0,0,20,0 8 > ./ready-delay 1000 > > # Put ISO image file here > /phb@0x70000000/ide@1/disk@0/file "PPC.IMG > > > 6. Create a .gdbinit file with the option to tell psim to read in the > device > tree. You probably don't need to use 128M for the '-r' param. > > target sim -e chirp -r 134217728 -f psim-tree > load I use 32mb from the Oct 18 email. I refer to it as something so great, and so often, it should be bronzed. > > 7. Now boot the kernel with psim, and it should eventually get to the > root > mount prompt. When it does, enter 'cd9660:ofwd0', and that should > kick off > the boot process: > > (gdb) r > Starting program: > /mnt/home/freebsd/work/sys/powerpc/compile/PETERG/kernel.debug > powerpc_init: no loader metadata. > Copyright (c) 1992-2002 The FreeBSD Project. > Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, > 1994 > The Regents of the University of California. All rights > reserved. > FreeBSD 5.0-CURRENT #198: Thu Jul 18 06:14:18 GMT 2002 > > grehan@fb1.ptree32.com.au:/mnt/home/freebsd/work/sys/powerpc/compile/PETERG > CPU: PowerPC Simulator (psim) (Revision 0) > real memory = 133132288 (130012K bytes) > avail memory = 125636608 (122692K bytes) > nexus_probe: can't get interrupt-controllernexus0: <OpenFirmware Nexus > device> > ofwd0: <OpenFirmware disk> on nexus0 > ofwd0: located at /phb@0x70000000/ide@1/disk@0 > Initializing GEOMetry subsystem > Timecounter "powerpc" frequency 16666666 Hz > Timecounters tick every 10.000 msec > > Manual root filesystem specification: > <fstype>:<device> Mount <device> using filesystem <fstype> > eg. ufs:da0a > ? List valid disk boot devices > <empty line> Abort manual input > > mountroot> cd9660:ofwd0 > cd9660:ofwd0 > Mounting root from cd9660:ofwd0 > cd9660: RockRidge Extension > Jan 1 00:00:01 init: login_getclass: unknown class 'daemon' > > 8. Now the fun begins, since things appear to hang about here. The > problem is > that init has opened /dev/console, which kicks off the OpenFirmware > console > polling process. But, the psim stdin implementation is blocking, so > the > ofw_cons_checkc() routine in ofw_timeout() doesn't return. A > workaround is > to hit ^C in gdb: if you see something like: > > ^C > Program received signal SIGINT, Interrupt. > 0x80004004 in ?? () > (gdb) > > you know that you're stuck in OpenFirmware. BUT, if you continue > from > here, > the stdin routine *will* return an error status, and things will > continue. > > I'm sure this psim problem can be fixed, but I've worked around it > either with > ^C, or by putting in a variable that prevented ofw_cons_checkc() > from > being > called until I set it in the debugger. > > 9. If you're lucky, you may get to a shell prompt, but this is where > my > debugging is currently at. Luck? "dont need no luck!" > > later, > > Peter. > Please note that I am on the mailing list now, and receiving two emails with the same content is dissapointing when you are hoping for something new. As of now, I have not tried your instructions, but will download your patches and program outside for a battery. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ppc" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1027003796.3d36d5944e85b>