Here's how I upgraded my tibook to a 40GB drive, including how I configured osx afterwards, and some other osx tricks and software. Bought a slim external firewire enclosure, installed new 40GB drive. Hooked up to Mac under OSX. Formatted disk. -Install OS9 Boot OS9.2.2. Insert "Power Book G4 Software Restore". Install MacOS 9.1 on external disk. Boot off that disk. Download from www.apple.com OS9.1 -> OS9.2.1 updater, and OS9.2.1 -> OS9.2.2 updater. Install. -Install OSX From the new OS9.2.2, insert "MacOS X v 10.0" disk and install. (or boot from the CD) Boot OSX. Go through configuration and registration. Update System Updater Shutdown to swap harddrives. (wait 30 minutes to cool, as directed by Apple) (pbg4-hdrive.pdf). Boot OSX to make sure it boots. Boot OS9 to make sure it boots. Boot back to OSX. Rename harddrive to Phoenix. Old drive is PhoenixOLD. Drag Terminal from Applications/Utilities to the Dock. Install OSX.1 Updater (from CD) Once OSX is back, System Prefs -> Software Update. Update now, do the available updates (Security updates). Reboot. Fix Energy Saver settings so the machine doesn't sleep while updating. Update the Installer. Update to 10.1.2. Reboot. Hook external HD back up with PhoenixOLD on it. Edit /etc/hostconfig for hostname. Open homedir in finder. Create OSORIG directory, move all but Desktop to it. Open old homedir, select all but Desktop and copy them over. (asked to replace Library, said yes). Copied 7500+ items, 2.14GB, in about a minute. In Terminal: cp -R .Xdefaults .[a-z]* /Users/ekim Reboot. Check for OpenService, hostname, and various preferences. Copy Icon from old harddrive to new drive. Rename old drive (Firebird, of course). Remove os9-Desktop-alias from Desktop. Remove harddrive alias from dock, and re-drag it (to get updated icon). Set monitor prefs to 1600x1280 for 21" monitor and change mouse accel. Rerun Software Update. Get Airport, DVD and iTunes updates. Go through remaining system preferences for anything that wasn't stored in my homedir. (Windowshade and Fruitmenu haxies were both fine, for instance. Desktop pictures were copies, and even installed.) Things that need admin access and fixing: Login, Login Window -> turn off autologin, display name and pw fields, and turn off hints. Internet -> Email, turn on Use iTools Internet -> Web, download to /Users/ekim/downloads cd / ; sudo ln -s /Users /home installed developer kit from dec 2001 off Firebird Copy some applications from Firebird to /Applications: Internet folder, iPhoto, bbedit6.5, graphic converter, dock extras, VirtualPC Copy /Images Install XInstall copy /usr/local/arch from Firebird. Install fink from fink.sourceforge.net Compile and install jove (jove needed ncurses, which fink came with) cd /usr/tmp ; ln -s ../tmp tmp fink install fvwm2 fink install openssl install tcpwrappers (make netbsd works) copy tcpdmatch and tcpdchdk from /usr/sbin and /usr/libexec/tcpd to backup ORIG, and then copy binaries in. cp tcpd.h /usr/include; chmod 444 /usr/include/tcpd.h cp libwrap.a /usr/lib ; chmod 644 /usr/lib/libwrap.a sudo ranlib /usr/lib/libwrap.a Install /etc/iw.permit cd /usr/local/bin ; ln -s ../../../bin/tcsh ; ln s ../../bin/perl perl5 ln -s perl5 perl More system pref fixes: fix hostname in System Preferences->Shared->Appletalk hostname Displays, fix location of laptop display to be below external monitor Sharing->Applications->Allow remote login (starts sshd, to be replaced later) Copy things from Applications-MacOS9: iTunes (for sample mp3s), opera, gMovie2, niftytelnet, virtualpc Copy /System Folder/Fonts/VT102 to /Library/Fonts To restore VT100 font to Terminal Compile and install launch to /usr/local/bin Fix lookupd to read /etc/hosts, populate /etc/hosts Reregister GraphicConverter and Opera Compile openssh: ./configure --with-ipv4-default --with-tcp-wrappers --sysconfdir=/etc --with-cppflags=-I/sw/include --with-ldflags=-L/sw/lib --prefix=/usr make; make install | tee install.log ; edit /etc/sshd_config for protocol 2 kill and restart sshd, verify that libwrap is functioning ------------------------------------------------------------------------------------------ Add Console and CPU Monitor to Login items Install OSXvnc Note: You can start this from the command line. Go into OSXvnc.app/Contents/MacOS ./storepasswd [anypassword] [yourfile] ./OSXvnc-server -rfbauth [yourfile] & (run --help to see other options like port, etc) Connect and it will work. Install postfix from postfix.org make Check netinfo manager (fink installed postfix user and group for me, changed homedir to /var/spool/postfix, as well as maildrop group for the postfix drop). Add aliases for root to yourself and postfix to root (just in case some mailer uses those for anything, postfix shouldn't in forward mode). Edit the /etc/aliases file the same way for normal unix clients and run newaliases. Set main.cf: myhostname = phoenix.anybrowser.org mydomain = anybrowser.org myorigin = $mydomain alias_maps = netinfo:/aliases In master.cf, turn of smtpd/inet postfix check Configuring to start on boot: You could set MAILSERVER to yes in /etc/hostconfig, the default sendmail call should start postfix up correctly (because postfix replaced the sendmail command) But, we are wierd, and will install into /Library/StartupItems/postfix Add a POSTFIX=-YES- to /etc/hostconfig. Copy /System/Library/StartupItems/SSH/* to /Library/StartupItems/postfix. rename SSH postfix. edit for starting postfix (postfix start). Edit StartupParameters.plist. sudo ./postfix - should start it up. See /var/log/mail.log Send mail to various accounts (yourself, root, postfix) and make sure they get forwarded off-machine for delivery. Addition: Making mail forward to other addresses than same-name. For instance, to get 'root' to go to foo@anybrowser.org. Currently, this box is forwarding all mail. We trick it into thinking it is anybrowser.org by adding this to main.cf virtual_maps = hash:/etc/postfix/virtual Then create /etc/postfix/virtual as: ------------------------------------------------------------ # Virtual file as if I was anybrowser.org anybrowser.org Relay # Put any overriding entries here, otherwise just get tossed to other host root@anybrowser.org root@osxtreme.net # ...anything not matched goes to mail.anybrowser.org @anybrowser.org @mail.anybrowser.org ------------------------------------------------------------ Create /etc/postfix/update as a shell script: ------------------------------------------------------------ #! /bin/sh cd /etc/postfix PATH=/usr/bin:/bin:/usr/sbin ; export PATH ME=`whoami` if [ x$ME != "xroot" ]; then echo "Self-sudo $0 $*" exec sudo $0 $* fi #echo "I am `whoami`" #exit set -x newaliases #postalias hash:/etc/aliases postmap hash:/etc/postfix/access postmap hash:/etc/postfix/virtual postfix reload postfix flush ------------------------------------------------------------ Run ./update Mail for root and ekim goes to osxtreme.net (happens to be the same host as mail.anybrowser.org, but you can see the difference in headers) Any other mail goes to that user at osxtreme.net Another possiblity is to set a different domain locally for myorigin, as this: myorigin = $myhostname And then set the virtual host to the full hostname. Then mail can go to the real mailserver name/MX, instead of the mail alias: ------------------------------------------------------------ phoenix.anybrowser.org Relay # Put any overriding entries here, otherwise just get tossed to other host root@phoenix.anybrowser.org root@osxtreme.net # ...anything not matched goes to mail.anybrowser.org @phoenix.anybrowser.org @anybrowser.org ------------------------------------------------------------ Install pflogsumm.pl in /usr/libexec/postfix, mode 711. Will need Date::Calc (get from cpan if needed) Install in /usr/local/bin/pflog: ------------------------------------------------------------ #!/bin/sh /usr/libexec/postfix/pflogsumm.pl $* /var/log/mail.log --smtpd_stats --verbose_msg_detail --problems_first ------------------------------------------------------------ If you want daily reports, add the following root crontab: 5 0 * * * /usr/local/bin/pflog -d yesterday | /usr/bin/mail -s "phoenix PF Log" root If you want monthly reports, either change the log rotation script to call pflog (no args = whole log) before rotating, or put in a cronjob to call it before (or after, if you want to modify it to read a different log file) Currently, /etc/monthly gets run: 30 5 1 * * root sh /etc/monthly 2>&1 | tee /var/log/monthly.out | mail -s "`hostname` monthly output" root So we'll add to crontab -u root -e: 30 3 1 * * root /usr/local/bin/pflog 2>&1 | /usr/bin/mail -s "phoenix: PF Log" root ...now, what happens if the box is asleep then, I'm not sure. I would think this wouldn't get run... I also add a symlink /usr/bin/aliasupdate to /etc/postfix/update run netstat -an and make sure you only have 2 thinks listening: 22 for sshd, 1033 on localhost for lookupd. (and 6000 for X if running) Stuffit update: Get the stuffit Lite package and install it. Select a .sit file, get info, open with application, choose the new Stuffit Expander, and choose "Change all" Making Classic work: Under the Classic preference pane, select your os9 disk if needed. When classic starts the first time, it will install some carbon libs into it. fink install: screen, mutt writing CDs/DVDs from command line You want cdrecord sudo cp /sw/fink/dists/unstable/main/finkinfo/utils/cdrtools-1.11a11-1.* /sw/fink/dists/local/main/finkinfo/ then fink install cdrtools (for cdrecord) This is: cdda2wav, cdrecord, mkisofs, mkhybrid, readcd Read the man pages, and: http://www.fokus.gmd.de/usr/schilling/cdrecord.html ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha/README.macosX example with my two drives: -------------------------------------------------------------------------------------------------------- {~}(3:11)[132] cdrecord dev=IOCompactDiscServices -toc Cdrecord 1.11a11 (powerpc-apple-macosx5.2) Copyright (C) 1995-2001 Jörg Schilling scsidev: 'IOCompactDiscServices' devname: 'IOCompactDiscServices' scsibus: -2 target: -2 lun: -2 Using libscg version 'schily-0.5' cdrecord: Warning: using inofficial libscg transport code version (csapuntz-scsi-mac-iokit.c-1.3 '@(#)scsi-mac-iokit.c 1.3 01/10/29 Copyright 1997,2001 J. Schilling'). Device type : Removable CD-ROM Version : 0 Response Format: 1 Vendor_info : 'TEAC ' Identifikation : 'CD-W28E ' Revision : '1.1A' Device seems to be: Generic mmc CD-RW. Using generic SCSI-3/mmc CD-R driver (mmc_cdr). Driver flags : SWABAUDIO Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R cdrecord: Undefined error: 0. test unit ready: scsi sendcmd: no error CDB: 00 00 00 00 00 00 status: 0x2 (CHECK CONDITION) Sense Bytes: 70 00 02 00 00 00 00 0B 00 00 00 00 3A 00 00 00 00 00 Sense Key: 0x2 Not Ready, Segment 0 Sense Code: 0x3A Qual 0x00 (medium not present) Fru 0x0 Sense flags: Blk 0 (not valid) cmd finished after 0.005s timeout 40s cdrecord: No disk / Wrong disk! {~}(3:12)[133] cdrecord dev=IOCompactDiscServices/2 -toc Cdrecord 1.11a11 (powerpc-apple-macosx5.2) Copyright (C) 1995-2001 Jörg Schilling scsidev: 'IOCompactDiscServices/2' devname: 'IOCompactDiscServices/2' scsibus: -2 target: -2 lun: -2 Using libscg version 'schily-0.5' cdrecord: Warning: using inofficial libscg transport code version (csapuntz-scsi-mac-iokit.c-1.3 '@(#)scsi-mac-iokit.c 1.3 01/10/29 Copyright 1997,2001 J. Schilling'). Device type : Removable CD-ROM Version : 2 Response Format: 2 Capabilities : SYNC Vendor_info : 'YAMAHA ' Identifikation : 'CRW2100E ' Revision : '1.0H' Device seems to be: Generic mmc CD-RW. Using generic SCSI-3/mmc CD-R driver (mmc_cdr). Driver flags : SWABAUDIO Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R96R cdrecord: Undefined error: 0. test unit ready: scsi sendcmd: no error CDB: 00 00 00 00 00 00 status: 0x2 (CHECK CONDITION) Sense Bytes: 70 00 02 00 00 00 00 0B 00 00 00 00 3A 01 00 00 00 00 Sense Key: 0x2 Not Ready, Segment 0 Sense Code: 0x3A Qual 0x01 (medium not present - tray closed) Fru 0x0 Sense flags: Blk 0 (not valid) cmd finished after 0.001s timeout 40s cdrecord: No disk / Wrong disk! -------------------------------------------------------------------------------------------------------- See also 'ioreg -l' for lots of info, specifically the IOCompact/DVD or SCSITaskUserClientIniter May want to look into hdiutil (mount, eject; create, burn) Reported to work by Ryan: cdrecord dev=IODVDServices -data download/install.iso This didn't result in a bootable image, need something like hdiutil's -forceclose maybe? This did work, created a bootable linux install CD: hdiutil burn install.iso -forceclose This also worked: cdrecord dev=cd2 install.iso speed=16 Ripping CDs to .wav for cdrecord via cdda2wav: First, kill the autodiskmount process. You can start it again as: /sbin/autodiskmount -va Then: cdda2wav -D IOCompactDiscServices -t 3 bedrock will drop track 3 into bedrock.wav (and bedrock.info) and keep doing all the tracks you want. If you want to eject a CD, you will need to: /sbin/autodiskmount -va hdiutil eject disk1 (get name from autodisk output) kill autodiskmount again Or, maybe after killing /sbin/autodiskmount once and restarting it, it won't automount CDs anymore. Hm. :) This will temp. mount the disk. Not sure yet how to get autodiskmount to take control again. (short of reboot) sudo mount -t cddafs /dev/disk1 /Volumes/Audio\ CD/ You can use Quicktime to see how long tracks are. Or, use cdrecord -dummy to see if it will fit: ls *.wav > toc edit toc cdrecord -v -dummy speed=8 -audio `cat toc` Don't forget to restart autodiskmount when done. TODO: look into ip firewall