NetBSD Installation auf einem iBook

garbeam

BSD Evangelist
Das folgende Howto habe ich auf Englisch verfasst:

HOWTO INSTALL NetBSD ON AN iBook
----------------------------------------------------------------

Software: NetBSD/macppc 1.6.1 stable
Hardware: Apple iBook late 2002 model, 700 Mhz, ATI Radeon M7,
Apple Airport WLAN, 2xUSB, 1xFireWire

ENGLISH vs GERMAN
-------------------------------------------------
Well, I write this short howto in English, because there may be lots of
non-german speaking geeks out there interested in installing NetBSD on
their iBook. Sorry for my English :)

WHY THE HELL INSTALLING NetBSD ON AN iBook?
---------------------------------------------------------------------------
Why not? An OS which works on toasters should also work on iBooks.
Mac OS X is not a good choice for me, if you like UNIX. There's too much
old OS 9 stuff in there, too much (one button) mouse control, curios
NetInfo stuff (instead of good old /etc), curios source tree with different
naming conventions (Java style naming conventions bungled with old clean C
style naming conventions, etc.). To say it in short words: Mac OS X is a
"Eierlegende Wollmilchsau" in my eyes.
Linux/ppc works also good on an iBook, but I prefer a clean UNIX like
NetBSD.
(By the way, I also tried OpenBSD, which works also well on an iBook,
but I prefer NetBSD, because they make no such hype about their OS, as
OpenBSD does.)

WHAT WE ARE GOING TO DO?
--------------------------------------------------------
We are going to install NetBSD 1.6.1 stable on a iBook as stand-alone(!)
OS without another OS besides it and without any Apple tools.

WHAT DO YOU'LL NEED?
----------------------------------------------------
- Some freetime, I think a weekend.
- An internet connection (also while installation).
- An iBook

STEPS
-------------------------------------

1. Download and burn the NetBSD/macppc 1.6.1 iso image from
ftp://ftp.netbsd.org/pub/NetBSD/iso/1.6.1/macppccd.iso (or another
mirror)

Note: Don't download snapshot 1.6Z, it does not work with
compareable iBooks to mine.

2. Backup all your data on your iBook.

3. Read ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-1.6.1/macppc/INSTALL.html
and http://www.netbsd.org/Ports/macppc/partitioning.html for getting
involved with necessary information about what you're going to do.

4. Now it's time to put one's money where one's mouth is: bash your
burned NetBSD cd into your cdrom drive and reboot.

5. After the Apple boot sound hold down Apple+Alt+O+F to enter
OpenFirmeware.

6. Enter:

boot cd:,ofwboot.xcf netbsd.macppc

7. Wait until NetBSD wants input. Don't enter the normal installation
routine, because we need to create special partitions first (which
current disklabel isn't capable of), that are readable for OpenFirmware.

8. Configure the integrated gem0 (100baseTX) or wi0 (WLAN) NIC to have
an internet connection to match your local network configuration.
(Utility menu or just exit the installation program and use route and
ifconfig).

9. Exit the installation program.

10. Fetch pdisk (the partition tool we're going to use) from
ftp://ftp.netbsd.org/pub/NetBSD/arch/macppc/netbsd-pdisk/netbsd-pdisk.macppc-1-6
into /sbin, and rename it to pdisk.

11. Now we're going to partition the disk.
Use pdisk /dev/wd0c to enter pdisk. (I hope you've read the partition
howto, see link above, third step)

12. Create a new partition map using i.

13. Create a partition with offset at 2p with size 32m and type Apple_HFS
using the C option. Name is boot.

14. Create a partition with offset at 3p with size 1g and bzb bit a
(root) using the c option. Name is root.

15. Create a partition with offset at 4p with size 1g and bzb bit b
(swap) using the c option. Name is swap.

16. Create a partition with offset at 5p with size 1g and bzb bit e
(tmp) using c option. Name is tmp.

17. Create a partition with offset at 6p with size 1g and bzb bit f
(var) using c option. Name is var.

18. Create a partition with offset at 7p with size 5g and bzb bit g
(usr) using c option. Name is usr.

19. Dump the partition configuration using p.

20. Create a partition with offset at 8p with the size of free blocks
dumped with p in step 19. Use size of the free space column. Use bzb bit
h and name home.

21. Now you've successfully configured the new partition map.
It looks like following:

1: Apple partition map
2: 32m HFS boot
3: 1g Apple_UNIX_SVR2 root / a
4: 1g Apple_UNIX_SVR2 swap b
5: 1g Apple_UNIX_SVR2 tmp e
6: 1g Apple_UNIX_SVR2 var f
7: 5g Apple_UNIX_SVR2 usr /usr g
8: *g Apple_UNIX_SVR2 home h

22. Write out the partition map using w.

23. Now newfs all partitions:

newfs /dev/wd0a
newfs /dev/wd0e
newfs /dev/wd0f
newfs /dev/wd0g
newfs /dev/wd0f
newfs /dev/wd0g
newfs /dev/wd0h

Note: Don't care about error messages that newfs couldn't touch the
disklabel - that's right since we've created everything with pdisk.

24. Mount the root partition to mnt2 and create following directories:

mount /dev/wd0a /mnt2
mkdir /mnt2/etc
mkdir /mnt2/tmp
mkdir /mnt2/usr
mkdir /mnt2/var

And create a fstab which matches your wd0 disklabel configuration,
in my configuration wd0f and wd0g have been swapped for some reason
I don't know:

echo /dev/wd0a / ffs rw 1 1 >> /mnt2/etc/fstab
echo /dev/wd0b none swap sw 0 0 >> /mnt2/etc/fstab
echo /dev/wd0e /tmp ffs rw 1 2 >> /mnt2/etc/fstab
echo /dev/wd0g /var ffs rw 1 2 >> /mnt2/etc/fstab
echo /dev/wd0f /usr ffs rw 1 2 >> /mnt2/etc/fstab
echo /dev/wd0h /home ffs rw 1 2 >> /mnt2/etc/fstab

25. Now umount /mnt2 again and enter sysinst.

26. In sysinst just use "Re-install sets..." and proceed with
installation. After finishing these steps (equivalent to standard
installation and which will create all device nodes in /dev) you can
configure your Timezone and set a root password through going to the
"Utilities" menu again.

27. Now we're ready for the first boot. Exit install and enter reboot.

29. Enter OpenFirmware holding down Apple+Alt+O+F

30. Let the installation disk in your drive and enter:

boot cd:,ofwboot.xcf hd:3,/netbsd

31. Wait until netbsd boots into single user mode.

32. Remount / using:

mount -o rw /dev/wd0a /

33. Cd to /etc and edit your rc.conf:

rc_configured=YES
wscons=YES

Note: You can use vi to edit it, but then you have to mount your
/usr partition manually (mount /dev/wd0f /usr), vi is located in
/usr/bin/vi

34. Maybe you've a german iBook, so you wants also edit your
/etc/wscons.conf

enconding=de

35. Maybe your network configuration has not been saved by sysinst.
So do create manually

/etc/mygate (contains IP address of your gateway)
/etc/resolv.conf (contains "nameserver <IP address of your DNS server")
/etc/ifconfig.gem0

contains something like this:

inet 10.0.0.99 netmask 255.255.255.0
media 100BaseTX

36. The step 35 will configure your network configuration for the next
boot. Just reboot now.

37. Use the same boot command as described in step 30.

38. Now your network devices are up and configured. Fetch pkgsrc.tar.gz
from ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz
and extract it to /usr

39. Install /usr/pkgsrc/sysutils/hfsutils (make install clean)

40. Format your boot partition through:

hformat /dev/wd0d

41. Place your ofwboot.xcf file of your installation cdrom (mount
/dev/cd0a /mnt) to that partition:

hcopy /mnt/ofwboot.xcf :

42. Now your system is ready. X11 configuration will follow. I advice to
upgrade your system to 1.6 stable (currently 1.6.2_RC4) through
following steps:


43. Cd /usr and perform following commands

cd /usr
setenv CVS_RSH ssh
cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot co -r netbsd-1-6 -P src
(this may take a while)

44. Now upgrade using:

cd /usr/src
./build.sh
(this may also take a while, around 10h)

45. Afterwards use following kernel configuration file and place it
under /usr/src/sys/arch/macppc/conf/:

---[IBOOK]---
#
# IBOOK machine description file
# by Anselm R. Garbe <anselmg at t-online.de>
#
# Used with a late 2002 iBook 700 (ATI Radeon M7, 2xUSB, 1xFireWire,
# CDROM, ...)
#

include "arch/macppc/conf/std.macppc"

options INCLUDE_CONFIG_FILE # embed config file in kernel binary

ident "IBOOK"

maxusers 32

# Standard system options
#options UCONSOLE # users can use TIOCCONS (for xconsole)
#options INSECURE # disable kernel security levels

options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT
#options NTP # NTP phase/frequency locked loop
options KTRACE # system call tracing via ktrace(1)

options SYSVMSG # System V message queues
options SYSVSEM # System V semaphores
#options SEMMNI=10 # number of semaphore identifiers
#options SEMMNS=60 # number of semaphores in system
#options SEMUME=10 # max number of undo entries per process
#options SEMMNU=30 # number of undo structures in system
options SYSVSHM # System V shared memory
#options SHMMAXPGS=1024 # 1024 pages is the default

options LKM # loadable kernel modules

#options USERCONF # userconf(4) support
#options PIPE_SOCKETPAIR # smaller, but slower pipe(2)

# Diagnostic/debugging support options
#options DIAGNOSTIC # cheap kernel consistency checks
#options DEBUG # expensive debugging checks/support
#options DDB # in-kernel debugger
#options DDB_HISTORY_SIZE=512 # enable history editing in DDB
#options TRAP_PANICWAIT

#makeoptions DEBUG="-g" # compile full symbol table

# Compatibility options
#options COMPAT_09 # NetBSD 0.9,
#options COMPAT_10 # NetBSD 1.0,
#options COMPAT_11 # NetBSD 1.1,
#options COMPAT_12 # NetBSD 1.2,
#options COMPAT_13 # NetBSD 1.3,
#options COMPAT_14 # NetBSD 1.4,
#options COMPAT_43 # and 4.3BSD
#options COMPAT_386BSD_MBRPART # recognize old partition ID
#options COMPAT_LINUX # Linux binary compatibility
#options TCP_COMPAT_42 # 4.2BSD TCP/IP bug compat. Not recommended.

# File systems
file-system FFS # UFS
#file-system EXT2FS # second extended file system (linux)
file-system LFS # log-structured file system
file-system MFS # memory file system
file-system NFS # Network File System client
file-system CD9660 # ISO 9660 + Rock Ridge file system
file-system MSDOSFS # MS-DOS file system
file-system FDESC # /dev/fd
file-system KERNFS # /kern
file-system NULLFS # loopback file system
file-system OVERLAY # overlay file system
file-system PORTAL # portal filesystem (still experimental)
file-system PROCFS # /proc
file-system UMAPFS # NULLFS + uid and gid remapping
file-system UNION # union file system

# File system options
#options QUOTA # UFS quotas
#options FFS_EI # FFS Endian Independant support
options SOFTDEP # FFS soft updates support.
#options NFSSERVER # Network File System server
#options EXT2FS_SYSTEM_FLAGS # makes ext2fs file flags (append and
# immutable) behave as system flags.

#options NFS_BOOT_DHCP # Support DHCP NFS root

# Networking options
#options GATEWAY # packet forwarding
options INET # IP + ICMP + TCP + UDP
options INET6 # IPV6
#options IPSEC # IP security
#options IPSEC_ESP # IP security (encryption part; define w/IPSEC)
#options IPSEC_DEBUG # debug for IP security
#options MROUTING # IP multicast routing
#options NS # XNS
#options NSIP # XNS tunneling over IP
#options ISO,TPIP # OSI
#options EON # OSI tunneling over IP
#options CCITT,LLC,HDLC # X.25
options NETATALK # AppleTalk networking protocols
#options PPP_BSDCOMP # BSD-Compress compression support for PPP
#options PPP_DEFLATE # Deflate compression support for PPP
#options PPP_FILTER # Active filter support for PPP (requires bpf)
options PFIL_HOOKS # pfil(9) packet filter hooks
options IPFILTER_LOG # ipmon(8) log support
#options IPFILTER_DEFAULT_BLOCK # block all packets by default
#options TCP_DEBUG # Record last TCP_NDEBUG packets with SO_DEBUG

# These options enable verbose messages for several subsystems.
# Warning, these may compile large string tables into the kernel!
options PCIVERBOSE # verbose PCI device autoconfig messages
options MIIVERBOSE # verbose PHY autoconfig messages
#options PCI_CONFIG_DUMP # verbosely dump PCI config space
#options SCSIVERBOSE # human readable SCSI error messages
options USBVERBOSE # verbose USB device autoconfig messages

# wscons options
#options WSEMUL_SUN # sun terminal emulation
options WSEMUL_VT100 # VT100 / VT220 emulation
#options WSDISPLAY_COMPAT_RAWKBD # can get raw scancodes
options FONT_SONY8x16

# Kernel root file system and dump configuration.
config netbsd root on ? type ?

#
# Device configuration
#

mainbus* at root

cpu* at mainbus?
bandit* at mainbus?
grackle* at mainbus?
uninorth* at mainbus?

pci* at bandit? bus ?
pci* at grackle? bus ?
pci* at uninorth? bus ?
pci* at ppb? bus ?

pchb* at pci? dev ? function ? # PCI-Host bridges
ppb* at pci? dev ? function ? # PCI-PCI bridges
# XXX 'puc's aren't really bridges, but there's no better place for them here
puc* at pci? dev ? function ? # PCI "universal" comm. cards

fpa* at pci? dev ? function ? # DEC PCI FDDI (DEFPA) Controller
ofb* at pci? dev ? function ? # Generic Open Firmware Framebuffer
options OFB_ENABLE_CACHE # Speed up console
pciide* at pci? dev ? function ?
wdc* at pci? dev ? function ? # Kauai ATA
gem* at pci? dev ? function ? # gmac ethernet
obio0 at pci? dev ? function ?
#macofcons0 at pci? dev ? function ? # OpenFirmware console (for debugging)

bmtphy* at mii? phy ? # Broadcom BCM5201/BCM5202 PHYs
ukphy* at mii? phy ? # generic unknown PHYs

bm* at obio? # bmac ethernet
mc* at obio? # MACE ethernet
nvram* at obio? # nvram
adb* at obio? # Apple Desktop Bus
aed* at adb? # ADB Event Device
akbd* at adb? # ADB keyboard
ams* at adb? # ADB mouse
abtn* at adb?
zsc* at obio?
zstty* at zsc? channel ?
mediabay* at obio?
wdc* at mediabay? flags 0
# awacs is disabled because on some systems--e.g., a 350MHz G4 GigE--
# it may generate interrupt storms, rendering the machine unusable.
# If you uncomment this, you'll also want to uncomment "audio* at awacs?"
# below.
awacs* at obio? # Apple audio device
wi* at obio? # AirMac

wsdisplay0 at ofb? console ?
wskbd0 at akbd? console ?
wsmouse0 at ams?

wdc* at obio? flags 0x1
wd* at pciide? channel ? drive ?
wd* at wdc? channel ? drive ? flags 0x0000

atapibus* at pciide? channel ?
atapibus* at wdc? channel ?

cd* at atapibus? drive ? flags 0x0000 # ATAPI CD-ROM drives
sd* at atapibus? drive ? flags 0x0000 # ATAPI disk drives
uk* at atapibus? drive ? flags 0x0000 # ATAPI unknown

# PCI USB controllers
ohci* at pci? dev ? function ? # Open Host Controller

usb* at ohci? # USB bus support
uhub* at usb? # USB Hubs
uhub* at uhub? port ? configuration ? interface ?

uhidev* at uhub? port ? configuration ? interface ? # USB HID device

ums* at uhidev? reportid ? # USB Mice
wsmouse* at ums?

ukbd* at uhidev? reportid ? # USB Keyboards
wskbd* at ukbd? console ?

uhid* at uhidev? reportid ? # USB Generic HID

ulpt* at uhub? port ? configuration ? interface ? # USB Printer

umodem* at uhub? port ? configuration ? # USB Modem
ucom* at umodem?

umass* at uhub? port ? configuration ? interface ? # USB Mass Storage
atapibus* at umass? channel ?
scsibus* at umass? channel ?

uaudio* at uhub? port ? configuration ? # USB audio

ugen* at uhub? port ? configuration ? interface ? # USB Generic driver

# PCI IEEE1394 controllers
fwohci* at pci? dev ? function ? # IEEE1394 Open Host Controller
fw* at fwbus? # IP over 1394

# IEEE1394 nodes
#fwnode* at fwbus? oui ? devhi ? devlo ?
#scsibus* at fwnode?

# Audio Devices

# PCI audio devices
#clcs* at pci? dev ? function ? # Cirrus Logic CS4280
#cmpci* at pci? dev ? function ? # C-Media CMI8338/8738
#eap* at pci? dev ? function ? # Ensoniq AudioPCI
#eso* at pci? dev ? function ? # ESS Solo-1 PCI AudioDrive
#fms* at pci? dev ? function ? # Forte Media FM801
#sv* at pci? dev ? function ? # S3 SonicVibes

# OPL[23] FM synthesizers
#opl* at cmpci? flags 1
#opl* at eso?
#opl* at fms?

# Audio support
audio* at awacs?
#audio* at clcs?
#audio* at cmpci?
#audio* at eap?
#audio* at eso?
#audio* at fms?
#audio* at sv?
#audio* at uaudio?

# MPU 401 UARTs
#mpu* at cmpci?
#mpu* at eso?
#mpu* at fms?

# MIDI support
#midi* at eap? # 137[01] MIDI port
#midi* at mpu? # MPU 401

pseudo-device vnd 4 # disk-like interface to files
pseudo-device ccd 4 # concatenated/striped disk devices
#pseudo-device raid 8 # RAIDframe disk driver
#options RAID_AUTOCONFIG # auto-configuration of RAID components
# Options to enable various other RAIDframe RAID types.
# options RF_INCLUDE_EVENODD=1
# options RF_INCLUDE_RAID5_RS=1
# options RF_INCLUDE_PARITYLOGGING=1
# options RF_INCLUDE_CHAINDECLUSTER=1
# options RF_INCLUDE_INTERDECLUSTER=1
# options RF_INCLUDE_PARITY_DECLUSTERING=1
# options RF_INCLUDE_PARITY_DECLUSTERING_DS=1
pseudo-device md 1 # memory disk device
pseudo-device loop # network loopback
pseudo-device bpfilter 8 # packet filter
pseudo-device ipfilter # IP filter (firewall) and NAT
#pseudo-device ppp 2 # Point-to-Point Protocol
#pseudo-device pppoe # PPP over Ethernet (RFC 2516)
#pseudo-device sl 2 # Serial Line IP
#pseudo-device tun 4 # network tunneling over tty
#pseudo-device gre 2 # generic L3 over IP tunnel
pseudo-device gif 4 # IPv[46] over IPv[46] tunnel (RFC1933)
#pseudo-device faith 1 # IPv[46] tcp relay translation i/f
#pseudo-device stf 1 # 6to4 IPv6 over IPv4 encapsulation
pseudo-device vlan # IEEE 802.1q encapsulation
pseudo-device bridge # simple inter-network bridging
pseudo-device pty # pseudo-terminals
pseudo-device rnd # /dev/random and in-kernel generator
pseudo-device openfirm # /dev/openfirm
pseudo-device wsmux # mouse and keyboard multiplexor
pseudo-device clockctl # user control of clock subsystem
---[IBOOK]---

46. Build a new kernel:

cd /usr/src/sys/arch/macppc/conf
config IBOOK
cd ../compile/IBOOK/
make depend
make
cp /netbsd /netbsd.old
cp netbsd /

47. Reboot and enter OpenFirmware and enter following commands:

eject cd (you don't need the installation disk anymore)

reset-nvram
setenv auto-boot? false
setenv boot-device hd:2,ofwboot.xcf
setenv boot-file hd:3,/netbsd
reset-all

Note: Setting auto-boot to true results on my iBook in a blank
screen after booting. You can try it. Maybe it works with
auto-boot=true for you?

48. If auto-boot=false, you've to enter boot at each start of the iBook.

49. I recommend at this time to use the default Xmacppc Server, just
launch X entering startx. In future there'll be XFree 4.3 with ATI
support. I'll have a look at it if there's enough time :)

See also: http://www.netbsd.org/Ports/macppc/x11.html

50. I hope all these steps helped you. If you know something better,
let me know! <anselmg at t-online.de>

ENJOY NetBSD ON YOUR iBook!
-----------------------------------------------------------

Anselm
 
respekt und danke!

ich habe hier mein iBook 900MHz noch unter 10.3.2 laufen und überlege auf OpenBSD zu wechseln, weil man irgendwann doch die Grenzen des X in OSX gefunden hat (fink und co sind ja ok, aber halt nicht fürs base system und wenn man doch was instellieren will, für das es kein package gibt ist wieder handarbeit angesagt). Mit NetBSD habe ich mich zwar noch kaum beschäftigt, aber warum nicht....
 
Gutes Howto soweit ich das beurteilen kann, aber mach's doch ganz in Englisch, deutsche Einschübe sind imho schlechter Stil.
Anstatt "Eierlegende Wollmilchsau" empfehle ich "clustered with jibberish"

Gruß
buebo
 
Die immer aktuelle Version ist unter:

http://www.ebrag.de/netbsd4ibook-howto.txt

abrufbar.

Nachgelegt: hier noch eine passende .Xmodmap für deutsche iBooks und den Xmacppc X11 Server:

---[$HOME/.Xmodmap]---
clear Mod1
clear Mod2
clear Mod3
clear Mod4

add Mod1 = Alt_L
add Mod1 = Meta_L
add Mod2 = Mode_switch

keycode 14 = y Y
keycode 18 = asciicircum degree
keycode 20 = q Q at
keycode 22 = e E EuroSign
keycode 24 = z Z
keycode 27 = 2 quotedbl twosuperior
keycode 28 = 3 section threesuperior
keycode 30 = 6 ampersand
keycode 32 = acute grave
keycode 33 = 9 parenright bracketright
keycode 34 = 7 slash braceleft
keycode 35 = ssharp question backslash
keycode 36 = 8 parenleft bracketleft
keycode 37 = 0 equal braceright
keycode 38 = plus asterisk
keycode 41 = udiaeresis Udiaeresis
keycode 45 = l L at
keycode 47 = adiaeresis Adiaeresis
keycode 49 = odiaeresis Odiaeresis
keycode 50 = numbersign apostrophe
keycode 51 = comma semicolon
keycode 52 = minus underscore
keycode 55 = period colon
keycode 58 = less greater bar
keycode 59 = BackSpace
keycode 60 = Mode_switch
keycode 79 = Pointer_EnableKeys
keycode 113 = Pointer_Button1
keycode 115 = Pointer_Button2
keycode 121 = Pointer_Button3
---[$HOME/.Xmodmap]---
 
Original geschrieben von buebo
Gutes Howto soweit ich das beurteilen kann, aber mach's doch ganz in Englisch, deutsche Einschübe sind imho schlechter Stil.
Anstatt "Eierlegende Wollmilchsau" empfehle ich "clustered with jibberish"

Gruß
buebo

Danke, war auch die einzige deutsche Redensart im ganzen Howto :) Hab ich geändert siehe Link.

--garbeam
 
super sache,

kann man NetBSD auch "neben" einem OS X installieren ?

Ich nehme an auf einem G4 (sawtooth) würde das howto auch möglich sein - oder gibts da Schwierigkeiten ?
 
Hallo - ich würde die Kernelconfig etc. verlinken, das macht das Ganze übersichtlicher.
WHAT DO YOU'LL NEED?
entweder:
What do I need?
oder:
What will I need?
 
Original geschrieben von teK
Hallo - ich würde die Kernelconfig etc. verlinken, das macht das Ganze übersichtlicher.
WHAT DO YOU'LL NEED?
entweder:
What do I need?
oder:
What will I need?

Korrekt !

Noch gebräuchlicher wäre wohl: "What you need"
Im Deutschen etwas: "Was man braucht"
 
Zurück
Oben