1 # $NetBSD: rpi.conf,v 1.7 2013/01/15 03:56:20 christos Exp $ 2 # Raspberry PI customization script used by mkimage 3 # 4 image=$HOME/rpi.img 5 6 firmwaredir=$src/external/broadcom/rpi-firmware/dist 7 firmwarefiles="LICENCE.broadcom bootcode.bin fixup.dat fixup_cd.dat start.elf start_cd.elf" 8 9 sets="base etc comp games man misc modules text" 10 setsdir=$obj/evbarm//media/evbarm/binary/sets/ 11 kerneldir=$src/sys/arch/evbarm/compile/RPI 12 specialdirs="/kern /proc" 13 14 swap=256 15 extra=$(( 150 + 8 )) # cylinder groups ~150MB 16 boot=112 17 init=8 18 19 size=0 20 msdosid=12 21 overhead=$(( ${swap} + ${extra} + ${init} + ${boot} )) 22 23 tmp=/tmp/rpi.disklabel.$$ 24 25 make_filesystems() { 26 27 local asize=$(( ${newsize} * 1024 )) 28 local swapsize=$(( ${swap} * 1024 )) 29 local bootsize=$(( ${boot} * 1024 )) 30 31 local bootoffset=$((${init} * 1024 )) 32 local swapoffset=$(( ${bootoffset} + ${bootsize} )) 33 local aoffset=$(( ${swapoffset} + ${swapsize} )) 34 35 local totalsize=$(( ${asize} + ${swapsize} + ${bootsize} + ${bootoffset} )) 36 local bps=512 37 local spt=32 38 local tpc=64 39 local spc=2048 40 local cylinders=$(( ${totalsize} / ${spc} )) 41 42 cat > ${tmp} << EOF 43 type: SCSI 44 disk: STORAGE DEVICE 45 label: fictitious 46 flags: removable 47 bytes/sector: ${bps} 48 sectors/track: ${spt} 49 tracks/cylinder: ${tpc} 50 sectors/cylinder: ${spc} 51 cylinders: ${cylinders} 52 total sectors: ${totalsize} 53 rpm: 3600 54 interleave: 1 55 trackskew: 0 56 cylinderskew: 0 57 headswitch: 0 # microseconds 58 track-to-track seek: 0 # microseconds 59 drivedata: 0 60 61 8 partitions: 62 # size offset fstype [fsize bsize cpg/sgs] 63 a: ${asize} ${aoffset} 4.2BSD 2048 16384 0 # 64 b: ${swapsize} ${swapoffset} swap # 65 d: ${totalsize} 0 unused 0 0 # 66 e: ${bootsize} ${bootoffset} MSDOS # 67 EOF 68 ${sudo} disklabel -R ${vnddev} ${tmp} 69 ${sudo} fdisk -f -u -0 -s ${msdosid}/${bootoffset}/${bootsize} -F ${image} 70 ${sudo} newfs /dev/r${vnddev}a 71 ${sudo} newfs_msdos /dev/r${vnddev}e 72 ${sudo} mount -o async /dev/${vnddev}a ${mnt} 73 ${sudo} mkdir ${mnt}/boot 74 ${sudo} mount_msdos /dev/${vnddev}e ${mnt}/boot 75 } 76 77 make_fstab() { 78 ${sudo} cat > ${mnt}/etc/fstab << EOF 79 # NetBSD /etc/fstab 80 # See /usr/share/examples/fstab/ for more examples. 81 /dev/ld0a / ffs rw,log 1 1 82 /dev/ld0b none swap sw 0 0 83 /dev/ld0e /boot msdos rw 1 1 84 kernfs /kern kernfs rw 85 ptyfs /dev/pts ptyfs rw 86 procfs /proc procfs rw 87 EOF 88 } 89 90 customize() { 91 92 ${sudo} cat >> ${mnt}/etc/rc.conf << EOF 93 sshd=YES 94 dhcpcd=YES 95 mdnsd=YES 96 wscons=YES 97 EOF 98 99 ${sudo} cat > ${mnt}/boot/cmdline.txt << EOF 100 console=fb 101 #fb=1280x1024 # to select a mode, otherwise EDID will be tried and fallback to 102 #fb=disable # to disable fb completely 103 EOF 104 105 echo -n "${bar} installing firmware files:" 106 (cd ${mnt}/boot && 107 for f in ${firmwarefiles}; do 108 echo -n " $f" 109 ${sudo} cp ${firmwaredir}/${f} . 110 done 111 ) 112 echo " ${bar}" 113 114 if [ ! -f ${kerneldir}/kernel.img ]; then 115 echo ${PROG}: Missing ${kerneldir}/kernel.img 1>&2 116 exit 1 117 fi 118 echo "${bar} installing kernel ${bar}" 119 ${sudo} cp ${kerneldir}/kernel.img ${mnt}/boot 120 121 if [ ! -f ${mnt}/dev/MAKEDEV ]; then 122 echo ${PROG}: Missing ${mnt}/dev/MAKEDEV 1>&2 123 exit 1 124 fi 125 echo "${bar} running MAKEDEV ${bar}" 126 (cd ${mnt}/dev && ${sudo} sh MAKEDEV all) 127 } 128 129 cleanup() { 130 rm -f ${tmp} 131 ${sudo} umount ${mnt}/boot 132 } 133