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