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