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