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