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