Home | History | Annotate | Line # | Download | only in conf
rpi.conf revision 1.5
      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