Module Name:    src
Committed By:   garbled
Date:           Tue Mar 19 22:16:55 UTC 2013

Modified Files:
        src/distrib/evbarm/instkernel: Makefile
        src/distrib/evbarm/instkernel/instkernel: Makefile
        src/distrib/utils/embedded: mkimage
        src/distrib/utils/sysinst: bsddisklabel.c configmenu.c defs.h main.c
            menus.mi msg.mi.de msg.mi.en msg.mi.es msg.mi.fr msg.mi.pl
        src/distrib/utils/sysinst/arch/evbarm: md.c md.h menus.md.en
            menus.md.es menus.md.fr menus.md.pl msg.md.de msg.md.en msg.md.es
            msg.md.fr msg.md.pl
        src/etc/etc.evbarm: MAKEDEV.conf Makefile.inc
        src/sys/arch/evbarm/conf: Makefile.evbarm.inc
        src/sys/arch/evbarm/rpi: rpi_machdep.c
Added Files:
        src/distrib/evbarm/instkernel/sshramdisk: Makefile dot.profile
            inst.profile list master.passwd mtree.conf ssh_host_dsa_key
            sshd_config
        src/distrib/utils/embedded/conf: rpi_inst.conf
        src/sys/arch/evbarm/conf: RPI_INSTALL

Log Message:
Add a new installer image for Raspberry PI to evbarm

Includes the following major changes:

1) Add new configmenu item to sysinst to allow creation of users at
post-install time.
2) Add an sshramdisk type to evbarm, which is a ramdisk with sshd
enabled, allowing users to install on a headless PI by sshing to the
device with the account "sysinst" password "netbsd" to begin the
installation. (Note, neither the account, nor the ssh setup are copied to
the finalized installation image)
3) Change mkimage to build a boot-only image, without the root filesystems.

Much of the sshramdisk code could be reused on other ports easily.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/distrib/evbarm/instkernel/Makefile
cvs rdiff -u -r1.18 -r1.19 src/distrib/evbarm/instkernel/instkernel/Makefile
cvs rdiff -u -r0 -r1.1 src/distrib/evbarm/instkernel/sshramdisk/Makefile \
    src/distrib/evbarm/instkernel/sshramdisk/dot.profile \
    src/distrib/evbarm/instkernel/sshramdisk/inst.profile \
    src/distrib/evbarm/instkernel/sshramdisk/list \
    src/distrib/evbarm/instkernel/sshramdisk/master.passwd \
    src/distrib/evbarm/instkernel/sshramdisk/mtree.conf \
    src/distrib/evbarm/instkernel/sshramdisk/ssh_host_dsa_key \
    src/distrib/evbarm/instkernel/sshramdisk/sshd_config
cvs rdiff -u -r1.35 -r1.36 src/distrib/utils/embedded/mkimage
cvs rdiff -u -r0 -r1.1 src/distrib/utils/embedded/conf/rpi_inst.conf
cvs rdiff -u -r1.57 -r1.58 src/distrib/utils/sysinst/bsddisklabel.c
cvs rdiff -u -r1.5 -r1.6 src/distrib/utils/sysinst/configmenu.c
cvs rdiff -u -r1.165 -r1.166 src/distrib/utils/sysinst/defs.h
cvs rdiff -u -r1.66 -r1.67 src/distrib/utils/sysinst/main.c
cvs rdiff -u -r1.47 -r1.48 src/distrib/utils/sysinst/menus.mi
cvs rdiff -u -r1.72 -r1.73 src/distrib/utils/sysinst/msg.mi.de
cvs rdiff -u -r1.177 -r1.178 src/distrib/utils/sysinst/msg.mi.en
cvs rdiff -u -r1.49 -r1.50 src/distrib/utils/sysinst/msg.mi.es
cvs rdiff -u -r1.131 -r1.132 src/distrib/utils/sysinst/msg.mi.fr
cvs rdiff -u -r1.88 -r1.89 src/distrib/utils/sysinst/msg.mi.pl
cvs rdiff -u -r1.26 -r1.27 src/distrib/utils/sysinst/arch/evbarm/md.c
cvs rdiff -u -r1.19 -r1.20 src/distrib/utils/sysinst/arch/evbarm/md.h
cvs rdiff -u -r1.7 -r1.8 src/distrib/utils/sysinst/arch/evbarm/menus.md.en \
    src/distrib/utils/sysinst/arch/evbarm/menus.md.fr \
    src/distrib/utils/sysinst/arch/evbarm/menus.md.pl
cvs rdiff -u -r1.3 -r1.4 src/distrib/utils/sysinst/arch/evbarm/menus.md.es
cvs rdiff -u -r1.11 -r1.12 src/distrib/utils/sysinst/arch/evbarm/msg.md.de
cvs rdiff -u -r1.13 -r1.14 src/distrib/utils/sysinst/arch/evbarm/msg.md.en
cvs rdiff -u -r1.10 -r1.11 src/distrib/utils/sysinst/arch/evbarm/msg.md.es \
    src/distrib/utils/sysinst/arch/evbarm/msg.md.pl
cvs rdiff -u -r1.12 -r1.13 src/distrib/utils/sysinst/arch/evbarm/msg.md.fr
cvs rdiff -u -r1.10 -r1.11 src/etc/etc.evbarm/MAKEDEV.conf
cvs rdiff -u -r1.48 -r1.49 src/etc/etc.evbarm/Makefile.inc
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/evbarm/conf/Makefile.evbarm.inc
cvs rdiff -u -r0 -r1.1 src/sys/arch/evbarm/conf/RPI_INSTALL
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/evbarm/rpi/rpi_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/evbarm/instkernel/Makefile
diff -u src/distrib/evbarm/instkernel/Makefile:1.3 src/distrib/evbarm/instkernel/Makefile:1.4
--- src/distrib/evbarm/instkernel/Makefile:1.3	Thu May  2 18:02:33 2002
+++ src/distrib/evbarm/instkernel/Makefile	Tue Mar 19 22:16:52 2013
@@ -1,6 +1,6 @@
-#	$NetBSD: Makefile,v 1.3 2002/05/02 18:02:33 lukem Exp $
+#	$NetBSD: Makefile,v 1.4 2013/03/19 22:16:52 garbled Exp $
 
-SUBDIR=		ramdisk .WAIT instkernel
+SUBDIR=		ramdisk sshramdisk .WAIT instkernel
 TARGETS+=	release
 
 .include <bsd.subdir.mk>

Index: src/distrib/evbarm/instkernel/instkernel/Makefile
diff -u src/distrib/evbarm/instkernel/instkernel/Makefile:1.18 src/distrib/evbarm/instkernel/instkernel/Makefile:1.19
--- src/distrib/evbarm/instkernel/instkernel/Makefile:1.18	Wed Jan 30 13:53:54 2013
+++ src/distrib/evbarm/instkernel/instkernel/Makefile	Tue Mar 19 22:16:53 2013
@@ -1,10 +1,12 @@
-#	$NetBSD: Makefile,v 1.18 2013/01/30 13:53:54 he Exp $
+#	$NetBSD: Makefile,v 1.19 2013/03/19 22:16:53 garbled Exp $
 
 .include <bsd.own.mk>
 .include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"
 
 RAMDISKDIR!=	cd ${.CURDIR}/../ramdisk && ${PRINTOBJDIR}
 RAMDISK=	${RAMDISKDIR}/ramdisk.fs
+SSHRAMDISKDIR!=	cd ${.CURDIR}/../sshramdisk && ${PRINTOBJDIR}
+SSHRAMDISK=	${SSHRAMDISKDIR}/sshramdisk.fs
 
 .if ${MACHINE_ARCH} == "arm"
 # Little endian platforms.
@@ -20,6 +22,7 @@ MDSETTARGETS=		ADI_BRH_INSTALL		${RAMDIS
 			OPENRD_INSTALL		${RAMDISK}	-	\
 			TS7200_INSTALL		${RAMDISK}	- 	\
 			TEAMASA_NPWR_INSTALL	${RAMDISK}	-	\
+			RPI_INSTALL		${SSHRAMDISK}	-	\
 			KUROBOX_PRO_INSTALL	${RAMDISK}	-
 .else
 # Big endian platforms.

Index: src/distrib/utils/embedded/mkimage
diff -u src/distrib/utils/embedded/mkimage:1.35 src/distrib/utils/embedded/mkimage:1.36
--- src/distrib/utils/embedded/mkimage:1.35	Fri Feb 15 00:13:06 2013
+++ src/distrib/utils/embedded/mkimage	Tue Mar 19 22:16:53 2013
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $NetBSD: mkimage,v 1.35 2013/02/15 00:13:06 christos Exp $
+# $NetBSD: mkimage,v 1.36 2013/03/19 22:16:53 garbled Exp $
 #
 # Copyright (c) 2013 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -68,13 +68,13 @@ getsize() {
 
 usage() {
 	cat << EOF 1>&2
-Usage: $PROG -h <host-arch> [-K <kerneldir>] [-S <srcdir>] [-D <destdir>] [-c <custom-files-dir>] [-s <Mb size>] [<image>]
+Usage: $PROG -h <host-arch> [-b] [-K <kerneldir>] [-S <srcdir>] [-D <destdir>] [-c <custom-files-dir>] [-s <Mb size>] [<image>]
 EOF
 	exit 1
 }
 
 # First pass for options to get the host and src directories
-OPTS="K:D:S:c:h:s:x"
+OPTS="K:D:S:bc:h:s:x"
 while getopts "$OPTS" f
 do
 	case $f in
@@ -106,6 +106,7 @@ do
 	D)	release="$OPTARG";;
 	K)	kernel="$OPTARG";;
 	S)	;;
+	b)	bootonly="true";;
 	c)	custom="$OPTARG";;
 	h)	;;
 	s)	size="$OPTARG";;
@@ -126,32 +127,38 @@ case "$image" in
 *)	compress=false;;
 esac
 
-echo ${bar} configuring sets ${bar}
-(echo '/set type=dir uname=root gname=wheel mode=0755'
-for i in $selected_sets; do
-	s="${release}/etc/mtree/set.$i"
-	if [ -f "$s" ]; then
-		cat "$s"
-	fi
-done) > "$tmp/selected_sets"
+if [ -z "$bootonly" ]; then
+	echo ${bar} configuring sets ${bar}
+	(echo '/set type=dir uname=root gname=wheel mode=0755'
+	for i in $selected_sets; do
+		s="${release}/etc/mtree/set.$i"
+		if [ -f "$s" ]; then
+			cat "$s"
+		fi
+	done) > "$tmp/selected_sets"
+fi
 
 make_fstab
 customize
 populate
 
-(cd ${mnt}; ${MTREE} -N ${release}/etc -c -k all | 
-    ${MTREE} -N ${release}/etc -C -k all) >> "$tmp/selected_sets"
+if [ -z "$bootonly" ]; then
+	(cd ${mnt}; ${MTREE} -N ${release}/etc -c -k all | 
+	    ${MTREE} -N ${release}/etc -C -k all) >> "$tmp/selected_sets"
+fi
 if [ -n ${msdosid} ]; then
 	echo ${bar} Populating msdos filesystem ${bar}
 	${MAKEFS} -N ${release}/etc -t msdos \
-	    -O $((${init} / 2))m -s $((${boot} / 2))m ${image} ${mnt}/boot
+	    -O $((${init} / 2))m -s $((${boot} / 2 + ${init} / 2))m ${image} ${mnt}/boot
 fi
 
-echo ${bar} Populating ffs filesystem ${bar}
-${MAKEFS} -N ${release}/etc -t ffs -rx \
-    -O $(((${init} + ${boot} + ${swap}) / 2))m \
-    -b $((${extra} / 2))m \
-    -F "$tmp/selected_sets" ${image} "${release}" "${mnt}"
+if [ -z "$bootonly" ]; then
+	echo ${bar} Populating ffs filesystem ${bar}
+	${MAKEFS} -N ${release}/etc -t ffs -rx \
+	    -O $(((${init} + ${boot} + ${swap}) / 2))m \
+	    -b $((${extra} / 2))m \
+	    -F "$tmp/selected_sets" ${image} "${release}" "${mnt}"
+fi
 
 if [ "${size}" = 0 ]; then
 	size="$(getsize "${image}")"

Index: src/distrib/utils/sysinst/bsddisklabel.c
diff -u src/distrib/utils/sysinst/bsddisklabel.c:1.57 src/distrib/utils/sysinst/bsddisklabel.c:1.58
--- src/distrib/utils/sysinst/bsddisklabel.c:1.57	Tue Nov 20 20:17:43 2012
+++ src/distrib/utils/sysinst/bsddisklabel.c	Tue Mar 19 22:16:53 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: bsddisklabel.c,v 1.57 2012/11/20 20:17:43 jakllsch Exp $	*/
+/*	$NetBSD: bsddisklabel.c,v 1.58 2013/03/19 22:16:53 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -543,6 +543,7 @@ make_bsd_partitions(void)
 	 * Initialize global variables that track space used on this disk.
 	 * Standard 4.4BSD 8-partition labels always cover whole disk.
 	 */
+	if (logfp) fprintf(logfp, "dlsize=%" PRId64 " ptsize=%" PRId64 " ptstart=%" PRId64 "\n", dlsize,ptsize,ptstart);
 	if (ptsize == 0)
 		ptsize = dlsize - ptstart;
 	if (dlsize == 0)
@@ -604,7 +605,11 @@ make_bsd_partitions(void)
 #endif
 #elif defined(PART_BOOT)
 	if (bootsize != 0) {
+#if defined(PART_BOOT_MSDOS)
+		bsdlabel[PART_BOOT].pi_fstype = FS_MSDOS;
+#else
 		bsdlabel[PART_BOOT].pi_fstype = FS_BOOT;
+#endif
 		bsdlabel[PART_BOOT].pi_size = bootsize;
 		bsdlabel[PART_BOOT].pi_offset = bootstart;
 #if defined(PART_BOOT_PI_FLAGS)

Index: src/distrib/utils/sysinst/configmenu.c
diff -u src/distrib/utils/sysinst/configmenu.c:1.5 src/distrib/utils/sysinst/configmenu.c:1.6
--- src/distrib/utils/sysinst/configmenu.c:1.5	Tue May 15 15:50:58 2012
+++ src/distrib/utils/sysinst/configmenu.c	Tue Mar 19 22:16:53 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: configmenu.c,v 1.5 2012/05/15 15:50:58 jdf Exp $ */
+/* $NetBSD: configmenu.c,v 1.6 2013/03/19 22:16:53 garbled Exp $ */
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -43,6 +43,7 @@ static int set_network(struct menudesc*,
 static int set_timezone_menu(struct menudesc *, void *);
 static int set_root_shell(struct menudesc *, void *);
 static int change_root_password(struct menudesc *, void *);
+static int add_new_user(struct menudesc *, void *);
 static int set_binpkg(struct menudesc *, void *);
 static int set_pkgsrc(struct menudesc *, void *);
 static void config_list_init(void);
@@ -67,6 +68,7 @@ enum {
 	CONFIGOPT_NTPD,
 	CONFIGOPT_NTPDATE,
 	CONFIGOPT_MDNSD,
+	CONFIGOPT_ADDUSER,
 	CONFIGOPT_LAST
 };
 
@@ -90,6 +92,7 @@ configinfo config_list[] = {
 	{MSG_enable_ntpd, CONFIGOPT_NTPD, "ntpd", toggle_rcvar, NULL},
 	{MSG_run_ntpdate, CONFIGOPT_NTPDATE, "ntpdate", toggle_rcvar, NULL},
 	{MSG_enable_mdnsd, CONFIGOPT_MDNSD, "mdnsd", toggle_rcvar, NULL},
+	{MSG_add_a_user, CONFIGOPT_ADDUSER, NULL, add_new_user, NULL},
 	{NULL,		CONFIGOPT_LAST,	NULL, NULL, NULL}
 };
 
@@ -237,6 +240,29 @@ check_root_password(void)
 }
 
 static int
+add_new_user(struct menudesc *menu, void *arg)
+{
+	char username[STRSIZE];
+	int inwheel=0;
+
+	msg_prompt(MSG_addusername, NULL, username, sizeof username -1);
+	process_menu(MENU_yesno, deconst(MSG_addusertowheel));
+	inwheel = yesno;
+	ushell = "/bin/csh";
+	process_menu(MENU_usersh, NULL);
+	if (inwheel)
+		run_program(RUN_PROGRESS | RUN_CHROOT,
+		    "/usr/sbin/useradd -m -s %s -G wheel %s",
+		    ushell, username);
+	else
+		run_program(RUN_PROGRESS | RUN_CHROOT,
+		    "/usr/sbin/useradd -m -s %s %s", ushell, username);
+	run_program(RUN_DISPLAY | RUN_PROGRESS | RUN_CHROOT,
+	    "passwd -l %s", username);
+	return 0;
+}
+
+static int
 change_root_password(struct menudesc *menu, void *arg)
 {
 	configinfo **confp = arg;

Index: src/distrib/utils/sysinst/defs.h
diff -u src/distrib/utils/sysinst/defs.h:1.165 src/distrib/utils/sysinst/defs.h:1.166
--- src/distrib/utils/sysinst/defs.h:1.165	Sat Mar 16 22:16:02 2013
+++ src/distrib/utils/sysinst/defs.h	Tue Mar 19 22:16:53 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: defs.h,v 1.165 2013/03/16 22:16:02 christos Exp $	*/
+/*	$NetBSD: defs.h,v 1.166 2013/03/19 22:16:53 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -327,6 +327,9 @@ char pkg_dir[STRSIZE];
 /* Place we look for pkgsrc in all fs types */
 char pkgsrc_dir[STRSIZE];
 
+/* User shell */
+const char *ushell;
+
 struct ftpinfo {
     char host[STRSIZE];
     char dir[STRSIZE] ;
@@ -362,6 +365,7 @@ void set_menu_numopts(int, int);
 
 /* Machine dependent functions .... */
 void	md_init(void);
+void	md_prelim_menu(void);
 void	md_init_set_status(int); /* SFLAG_foo */
 
  /* MD functions if user selects install - in order called */

Index: src/distrib/utils/sysinst/main.c
diff -u src/distrib/utils/sysinst/main.c:1.66 src/distrib/utils/sysinst/main.c:1.67
--- src/distrib/utils/sysinst/main.c:1.66	Sat Jun 23 17:49:58 2012
+++ src/distrib/utils/sysinst/main.c	Tue Mar 19 22:16:53 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.66 2012/06/23 17:49:58 martin Exp $	*/
+/*	$NetBSD: main.c,v 1.67 2013/03/19 22:16:53 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -58,6 +58,7 @@ __dead static void miscsighandler(int);
 static void ttysighandler(int);
 static void cleanup(void);
 static void process_f_flag(char *);
+static void prelim_menu(void);
 
 static int exit_cleanly = 0;	/* Did we finish nicely? */
 FILE *logfp;			/* log file */
@@ -137,6 +138,18 @@ init(void)
 	pkg.xfer_type = pkgsrc.xfer_type = "http";
 }
 
+#ifdef __weak_reference
+__weakref_visible void prelim_menu(void)
+    __weak_reference(md_prelim_menu);
+#endif
+#if 0
+static void
+prelim_menu(void)
+{
+	/* do nothing, weak reference stub for md_prelim_menu */
+}
+#endif
+
 int
 main(int argc, char **argv)
 {
@@ -217,6 +230,12 @@ main(int argc, char **argv)
 	select_language();
 	get_kb_encoding();
 
+#ifdef __weak_reference
+	/* if md wants to ask anything before we start, do it now */
+	if (prelim_menu != 0)
+		prelim_menu();
+#endif
+
 	/* Menu processing */
 	process_menu(MENU_netbsd, NULL);
 

Index: src/distrib/utils/sysinst/menus.mi
diff -u src/distrib/utils/sysinst/menus.mi:1.47 src/distrib/utils/sysinst/menus.mi:1.48
--- src/distrib/utils/sysinst/menus.mi:1.47	Fri Jul  6 21:10:56 2012
+++ src/distrib/utils/sysinst/menus.mi	Tue Mar 19 22:16:53 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: menus.mi,v 1.47 2012/07/06 21:10:56 jdf Exp $	*/
+/*	$NetBSD: menus.mi,v 1.48 2013/03/19 22:16:53 garbled Exp $	*/
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -462,3 +462,8 @@ menu pkgsrc, y=-4, x=0, w=70, no box, no
 		action {process_menu(MENU_yesno, deconst(MSG_delete_xfer_file));
 			clean_xfer_dir = yesno; };
 	option MSG_quit_pkgsrc, exit, action { yesno = 0;};
+
+menu usersh, title MSG_User_shell, no clear;
+	option "/bin/sh",  exit, action { ushell = "/bin/sh";}; 
+	option "/bin/ksh", exit, action { ushell = "/bin/ksh";};
+	option "/bin/csh", exit, action { ushell = "/bin/csh";};

Index: src/distrib/utils/sysinst/msg.mi.de
diff -u src/distrib/utils/sysinst/msg.mi.de:1.72 src/distrib/utils/sysinst/msg.mi.de:1.73
--- src/distrib/utils/sysinst/msg.mi.de:1.72	Sat Mar 16 17:10:16 2013
+++ src/distrib/utils/sysinst/msg.mi.de	Tue Mar 19 22:16:53 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.de,v 1.72 2013/03/16 17:10:16 christos Exp $	*/
+/*	$NetBSD: msg.mi.de,v 1.73 2013/03/19 22:16:53 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -1020,6 +1020,7 @@ message other {andere }
 message Perform_IPv6_autoconfiguration {IPv6 automatisch konfigurieren?}
 message Perform_DHCP_autoconfiguration {Konfiguration per DHCP ermitteln?}
 message Root_shell {Root-Shell}
+message User_shell {User-Shell}
 
 .if AOUT2ELF
 message aoutfail
@@ -1087,6 +1088,7 @@ message enable_sshd {sshd aktivieren}
 message enable_ntpd {ntpd aktivieren}
 message run_ntpdate {ntpdate beim Starten ausführen}
 message enable_mdnsd {mdnsd aktivieren}
+message add_a_user {Add a user}
 message configmenu {Zusätzliche Einstellungen konfigurieren.}
 message doneconfig {Konfiguration abgeschlossen.}
 message Install_pkgin {pkgin installieren und Datenbank initialisieren}
@@ -1114,3 +1116,5 @@ message pkgin_failed 
 {Die Installation von pkgin ist fehlgeschlagen, evtl. weil keine Binärpakete 
 vorhanden sind. Bitte den Pfad der Pakete überprüfen und noch einmal versuchen.}
 message failed {Fehlgeschlagen}
+message addusername {8 character username to add:}
+message addusertowheel {Do you wish to add this user to group wheel?}

Index: src/distrib/utils/sysinst/msg.mi.en
diff -u src/distrib/utils/sysinst/msg.mi.en:1.177 src/distrib/utils/sysinst/msg.mi.en:1.178
--- src/distrib/utils/sysinst/msg.mi.en:1.177	Sat Mar 16 17:10:16 2013
+++ src/distrib/utils/sysinst/msg.mi.en	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.en,v 1.177 2013/03/16 17:10:16 christos Exp $	*/
+/*	$NetBSD: msg.mi.en,v 1.178 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -960,6 +960,7 @@ message other {other }
 message Perform_IPv6_autoconfiguration {Perform IPv6 autoconfiguration?}
 message Perform_DHCP_autoconfiguration {Perform DHCP autoconfiguration?}
 message Root_shell {Root shell}
+message User_shell {User shell}
 
 .if AOUT2ELF
 message aoutfail
@@ -1019,6 +1020,7 @@ message enable_sshd {Enable sshd}
 message enable_ntpd {Enable ntpd}
 message run_ntpdate {Run ntpdate at boot}
 message enable_mdnsd {Enable mdnsd}
+message add_a_user {Add a user}
 message configmenu {Configure the additional items as needed.}
 message doneconfig {Finished configuring}
 message Install_pkgin {Install pkgin and update package summary}
@@ -1044,3 +1046,5 @@ message pkgin_failed
 {Installation of pkgin failed, possibly because no binary packages
 exist.  Please check the package path and try again.}
 message failed {Failed}
+message addusername {8 character username to add:}
+message addusertowheel {Do you wish to add this user to group wheel?}

Index: src/distrib/utils/sysinst/msg.mi.es
diff -u src/distrib/utils/sysinst/msg.mi.es:1.49 src/distrib/utils/sysinst/msg.mi.es:1.50
--- src/distrib/utils/sysinst/msg.mi.es:1.49	Sat Mar 16 17:10:17 2013
+++ src/distrib/utils/sysinst/msg.mi.es	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.es,v 1.49 2013/03/16 17:10:17 christos Exp $	*/
+/*	$NetBSD: msg.mi.es,v 1.50 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -986,6 +986,7 @@ message other {otro }
 message Perform_IPv6_autoconfiguration {¿Realizar autoconfiguración IPv6?}
 message Perform_DHCP_autoconfiguration {¿Realizar autoconfiguración DHCP ?}
 message Root_shell {Shell de root}
+message User_shell {Shell de user}
 
 .if AOUT2ELF
 message aoutfail
@@ -1063,6 +1064,7 @@ message enable_sshd {Activar sshd}
 message enable_ntpd {Activar ntpd}
 message run_ntpdate {Ejecutar ntpdate durante el arranque}
 message enable_mdnsd {Activar mdnsd}
+message add_a_user {Add a user}
 message configmenu {Configurar elementos adicionales bajo demanda.}
 message doneconfig {Terminar configuración}
 message Install_pkgin {Instalar pkgin y actualizar la lista de paquetes}
@@ -1094,3 +1096,5 @@ message pkgin_failed 
 paquetes binarios.  Por favor verifique el camino a los paquetes y
 reinténtelo de nuevo.}
 message failed {Error}
+message addusername {8 character username to add:}
+message addusertowheel {Do you wish to add this user to group wheel?}

Index: src/distrib/utils/sysinst/msg.mi.fr
diff -u src/distrib/utils/sysinst/msg.mi.fr:1.131 src/distrib/utils/sysinst/msg.mi.fr:1.132
--- src/distrib/utils/sysinst/msg.mi.fr:1.131	Sat Mar 16 17:10:17 2013
+++ src/distrib/utils/sysinst/msg.mi.fr	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.fr,v 1.131 2013/03/16 17:10:17 christos Exp $	*/
+/*	$NetBSD: msg.mi.fr,v 1.132 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -1058,6 +1058,7 @@ message other {autre }
 message Perform_IPv6_autoconfiguration {Configurer automatiquement l'IPv6 ?}
 message Perform_DHCP_autoconfiguration {Configurer automatiquement par DHCP ?}
 message Root_shell {Shell du compte "root"}
+message User_shell {Shell du compte "user"}
 
 .if AOUT2ELF
 message aoutfail
@@ -1126,6 +1127,7 @@ message enable_sshd {Activer sshd}
 message enable_ntpd {Activer ntpd}
 message run_ntpdate {Executer ntpdate au démarrage}
 message enable_mdnsd {Activer mdnsd}
+message add_a_user {Add a user}
 message configmenu {Configurer les items suivants si nécéssaire.}
 message doneconfig {Configuration terminée}
 message Install_pkgin {Installer pkgin et mettre à jour le sommaire des paquetages}
@@ -1154,3 +1156,5 @@ message pkgin_failed 
 {L'installation de pkgin a échoué, peut-être parce que son paquetage binaire
 n'existe pas.  Vérifiez le chemin et essayez à nouveau.}
 message failed {Échoué}
+message addusername {8 character username to add:}
+message addusertowheel {Do you wish to add this user to group wheel?}

Index: src/distrib/utils/sysinst/msg.mi.pl
diff -u src/distrib/utils/sysinst/msg.mi.pl:1.88 src/distrib/utils/sysinst/msg.mi.pl:1.89
--- src/distrib/utils/sysinst/msg.mi.pl:1.88	Sat Mar 16 17:10:17 2013
+++ src/distrib/utils/sysinst/msg.mi.pl	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.pl,v 1.88 2013/03/16 17:10:17 christos Exp $	*/
+/*	$NetBSD: msg.mi.pl,v 1.89 2013/03/19 22:16:54 garbled Exp $	*/
 /*	Based on english version: */
 /*	NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp       */
 
@@ -957,6 +957,7 @@ message other {inny  }
 message Perform_IPv6_autoconfiguration {Wykonac autokonfiguracje IPv6?}
 message Perform_DHCP_autoconfiguration {Wykonac autkonfiguracje DHCP?}
 message Root_shell {Powloka root'a}
+message User_shell {Powloka user'a}
 
 .if AOUT2ELF
 message aoutfail
@@ -1019,6 +1020,7 @@ message enable_sshd {Wlacz sshd}
 message enable_ntpd {Wlacz ntpd}
 message run_ntpdate {uruchom ntpdate podczas startu systemu}
 message enable_mdnsd {Wlacz mdnsd}
+message add_a_user {Add a user}
 message configmenu {Skonfiguruj dodatkowe elementy w razie potrzeby.}
 message doneconfig {Konfiguracja zakonczona}
 message Install_pkgin {Zainstaluj pkgin i uaktualnij podsumowanie pakietow}
@@ -1049,3 +1051,5 @@ message pkgin_failed 
 pakietow binarnych.
 Sprawdz sciezke pakietow i sprobuj ponownie.}
 message failed {Nie powiodlo sie}
+message addusername {8 character username to add:}
+message addusertowheel {Do you wish to add this user to group wheel?}

Index: src/distrib/utils/sysinst/arch/evbarm/md.c
diff -u src/distrib/utils/sysinst/arch/evbarm/md.c:1.26 src/distrib/utils/sysinst/arch/evbarm/md.c:1.27
--- src/distrib/utils/sysinst/arch/evbarm/md.c:1.26	Tue Feb  7 09:06:04 2012
+++ src/distrib/utils/sysinst/arch/evbarm/md.c	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.26 2012/02/07 09:06:04 nisimura Exp $ */
+/*	$NetBSD: md.c,v 1.27 2013/03/19 22:16:54 garbled Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -49,6 +49,15 @@
 #include "msg_defs.h"
 #include "menu_defs.h"
 
+int boardtype = 0, rpi_bootpart = PART_A;
+
+void
+md_prelim_menu(void)
+{
+	/* get the boardtype from the user */
+	process_menu(MENU_prelim, NULL);
+}
+
 void
 md_init(void)
 {
@@ -57,7 +66,8 @@ md_init(void)
 void
 md_init_set_status(int flags)
 {
-	(void)flags;
+	if (boardtype == BOARD_TYPE_RPI)
+		set_kernel_set(SET_KERNEL_RPI);
 }
 
 int
@@ -67,6 +77,9 @@ md_get_info(void)
 	int fd;
 	char dev_name[100];
 
+	if (boardtype == BOARD_TYPE_RPI)
+		return set_bios_geom_with_mbr_guess();
+
 	if (no_mbr)
 		return 1;
 
@@ -131,7 +144,21 @@ md_make_bsd_partitions(void)
 int
 md_check_partitions(void)
 {
-	return 1;
+	int part;
+
+	if (boardtype == BOARD_TYPE_NORMAL)
+		return 1;
+	if (boardtype == BOARD_TYPE_RPI) {
+		for (part = PART_A; part < MAXPARTITIONS; part++)
+			if (bsdlabel[part].pi_fstype == FS_MSDOS) {
+				rpi_bootpart = part;
+				return 1;
+			}
+
+		msg_display(MSG_nomsdospart);
+		process_menu(MENU_ok, NULL);
+	}
+	return 0;
 }
 
 /*
@@ -151,6 +178,11 @@ md_pre_disklabel(void)
 		process_menu(MENU_ok, NULL);
 		return 1;
 	}
+	/* nuke the disklabel from orbit, because d from the gzimg
+	   corrupts it hopelessly
+	*/
+	if (boardtype == BOARD_TYPE_RPI)
+		run_program(RUN_DISPLAY, "/sbin/disklabel -D %s", diskdev);
 	return 0;
 }
 
@@ -177,6 +209,21 @@ md_post_newfs(void)
 int
 md_post_extract(void)
 {
+	char kernelbin[100];
+
+	if (boardtype == BOARD_TYPE_NORMAL)
+		return 0;
+	if (boardtype == BOARD_TYPE_RPI) {
+		snprintf(kernelbin, 100, "%s/netbsd.bin", targetroot_mnt);
+		if (file_exists_p(kernelbin)) {
+			run_program(RUN_DISPLAY,
+			    "/bin/cp %s /targetroot/boot/kernel.img", kernelbin);
+		} else {
+			msg_display(MSG_rpikernelmissing);
+			process_menu(MENU_ok, NULL);
+			return 1;
+		}
+	}
 	return 0;
 }
 
@@ -185,6 +232,8 @@ md_cleanup_install(void)
 {
 #ifndef DEBUG
 	enable_rc_conf();
+	add_rc_conf("sshd=YES\n");
+	add_rc_conf("dhcpcd=YES\n");
 #endif
 }
 
@@ -211,11 +260,69 @@ md_pre_mount()
 int
 md_check_mbr(mbr_info_t *mbri)
 {
+	mbr_info_t *ext;
+	struct mbr_partition *part;
+	int i, hasboot=0;
+
+	if (boardtype == BOARD_TYPE_NORMAL)
+		return 2;
+	/* raspi code */
+	if (boardtype == BOARD_TYPE_RPI) {
+		for (ext = mbri; ext; ext = ext->extended) {
+			part = ext->mbr.mbr_parts;
+			for (i=0, hasboot=0; i < MBR_PART_COUNT; part++, i++) {
+				if (part->mbrp_type != MBR_PTYPE_FAT32L)
+					continue;
+				hasboot = 1;
+				break;
+			}
+		}
+		if (!hasboot) {
+			msg_display(MSG_nomsdospart);
+			msg_display_add(MSG_reeditpart, 0);
+			process_menu(MENU_yesno, NULL);
+			if (!yesno)
+				return 0;
+			return 1;
+		}
+	}
 	return 2;
 }
 
 int
 md_mbr_use_wholedisk(mbr_info_t *mbri)
 {
+	struct mbr_sector *mbrs = &mbri->mbr;
+	struct mbr_partition *part;
+	int offset;
+
+	if (boardtype == BOARD_TYPE_NORMAL) {
+		/* this keeps it from creating /boot as msdos */
+		bootsize = 0;
+		return mbr_use_wholedisk(mbri);
+	}
+
+	/* raspi code */
+	if (boardtype == BOARD_TYPE_RPI) {
+		part = &mbrs->mbr_parts[0];
+		if (part[0].mbrp_type != MBR_PTYPE_FAT32L) {
+			/* It's hopelessly corrupt, punt for now */
+			msg_display(MSG_nomsdospart);
+			process_menu(MENU_ok, NULL);
+			return 0;
+		}
+		offset = part[0].mbrp_start + part[0].mbrp_size;
+		part[1].mbrp_type = MBR_PTYPE_NETBSD;
+		part[1].mbrp_size = dlsize - offset;
+		part[1].mbrp_start = offset;
+		part[1].mbrp_flag = 0;
+
+		ptstart = part[1].mbrp_start;
+		ptsize = part[1].mbrp_size;
+		bootstart = part[0].mbrp_start;
+		bootsize = part[0].mbrp_size;
+		return 1;
+	}
+
 	return mbr_use_wholedisk(mbri);
 }

Index: src/distrib/utils/sysinst/arch/evbarm/md.h
diff -u src/distrib/utils/sysinst/arch/evbarm/md.h:1.19 src/distrib/utils/sysinst/arch/evbarm/md.h:1.20
--- src/distrib/utils/sysinst/arch/evbarm/md.h:1.19	Tue Feb  7 09:06:04 2012
+++ src/distrib/utils/sysinst/arch/evbarm/md.h	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.h,v 1.19 2012/02/07 09:06:04 nisimura Exp $	*/
+/*	$NetBSD: md.h,v 1.20 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -38,6 +38,10 @@
 #include "mbr.h"
 
 /* Constants and defines */
+#define PART_BOOT		PART_E
+#define PART_BOOT_MSDOS		PART_BOOT
+#define PART_BOOT_PI_MOUNT	"/boot"
+#define PART_BOOT_PI_FLAGS	PIF_MOUNT
 
 /* Megs required for a full X installation. */
 #define XNEEDMB 60
@@ -56,6 +60,8 @@
 #define SET_KERNEL_5_NAME	"kern-MINI2440"
 #define SET_KERNEL_6_NAME	"kern-TEAMASA_NPWR"
 #define SET_KERNEL_7_NAME	"kern-TS7200"
+#define SET_KERNEL_8_NAME	"kern-RPI"
+#define SET_KERNEL_RPI		SET_KERNEL_8
 
 #define MD_SETS_SELECTED SET_SYSTEM
 
@@ -68,3 +74,8 @@
  * hand-edited disklabel will NOT be written by MI code.
  */
 #define DISKLABEL_CMD "disklabel -w -r"
+
+/* Special board type routines need a switch */
+#define BOARD_TYPE_NORMAL	0
+#define BOARD_TYPE_RPI		1
+int boardtype;

Index: src/distrib/utils/sysinst/arch/evbarm/menus.md.en
diff -u src/distrib/utils/sysinst/arch/evbarm/menus.md.en:1.7 src/distrib/utils/sysinst/arch/evbarm/menus.md.en:1.8
--- src/distrib/utils/sysinst/arch/evbarm/menus.md.en:1.7	Mon Apr  4 08:30:24 2011
+++ src/distrib/utils/sysinst/arch/evbarm/menus.md.en	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: menus.md.en,v 1.7 2011/04/04 08:30:24 mbalmer Exp $	*/
+/*	$NetBSD: menus.md.en,v 1.8 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -35,3 +35,7 @@
 
 /* evbarm machine dependent menus, english */
 
+menu prelim, title "What kind of system do you have?", y=-10;
+	option "Raspberry PI", exit, action { boardtype = 1; };
+	option "Other", exit, action { boardtype = 0; };
+
Index: src/distrib/utils/sysinst/arch/evbarm/menus.md.fr
diff -u src/distrib/utils/sysinst/arch/evbarm/menus.md.fr:1.7 src/distrib/utils/sysinst/arch/evbarm/menus.md.fr:1.8
--- src/distrib/utils/sysinst/arch/evbarm/menus.md.fr:1.7	Mon Apr  4 08:30:24 2011
+++ src/distrib/utils/sysinst/arch/evbarm/menus.md.fr	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: menus.md.fr,v 1.7 2011/04/04 08:30:24 mbalmer Exp $	*/
+/*	$NetBSD: menus.md.fr,v 1.8 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -35,3 +35,7 @@
 
 /* evbarm machine dependent menus, french */
 
+menu prelim, title "What kind of system do you have?", y=-10;
+	option "Raspberry PI", exit, action { boardtype = 1; };
+	option "Other", exit, action { boardtype = 0; };
+
Index: src/distrib/utils/sysinst/arch/evbarm/menus.md.pl
diff -u src/distrib/utils/sysinst/arch/evbarm/menus.md.pl:1.7 src/distrib/utils/sysinst/arch/evbarm/menus.md.pl:1.8
--- src/distrib/utils/sysinst/arch/evbarm/menus.md.pl:1.7	Mon Apr  4 08:30:24 2011
+++ src/distrib/utils/sysinst/arch/evbarm/menus.md.pl	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: menus.md.pl,v 1.7 2011/04/04 08:30:24 mbalmer Exp $	*/
+/*	$NetBSD: menus.md.pl,v 1.8 2013/03/19 22:16:54 garbled Exp $	*/
 /* Based on english version: */
 /*	NetBSD: menus.md.en,v 1.2 2002/03/31 02:14:06 thorpej Exp */
 
@@ -37,3 +37,7 @@
 
 /* evbarm machine dependent menus, Polish */
 
+menu prelim, title "What kind of system do you have?", y=-10;
+	option "Raspberry PI", exit, action { boardtype = 1; };
+	option "Other", exit, action { boardtype = 0; };
+

Index: src/distrib/utils/sysinst/arch/evbarm/menus.md.es
diff -u src/distrib/utils/sysinst/arch/evbarm/menus.md.es:1.3 src/distrib/utils/sysinst/arch/evbarm/menus.md.es:1.4
--- src/distrib/utils/sysinst/arch/evbarm/menus.md.es:1.3	Mon Apr  4 08:30:24 2011
+++ src/distrib/utils/sysinst/arch/evbarm/menus.md.es	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: menus.md.es,v 1.3 2011/04/04 08:30:24 mbalmer Exp $	*/
+/*	$NetBSD: menus.md.es,v 1.4 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -35,3 +35,7 @@
 
 /* evbarm machine dependent menus, spanish */
 
+menu prelim, title "What kind of system do you have?", y=-10;
+	option "Raspberry PI", exit, action { boardtype = 1; };
+	option "Other", exit, action { boardtype = 0; };
+

Index: src/distrib/utils/sysinst/arch/evbarm/msg.md.de
diff -u src/distrib/utils/sysinst/arch/evbarm/msg.md.de:1.11 src/distrib/utils/sysinst/arch/evbarm/msg.md.de:1.12
--- src/distrib/utils/sysinst/arch/evbarm/msg.md.de:1.11	Thu Mar  1 17:40:31 2012
+++ src/distrib/utils/sysinst/arch/evbarm/msg.md.de	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.md.de,v 1.11 2012/03/01 17:40:31 tsutsui Exp $	*/
+/*	$NetBSD: msg.md.de,v 1.12 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -86,3 +86,11 @@ message set_kernel_6
 {Kernel (TEAMASA_NPWR)}
 message set_kernel_7
 {Kernel (TS7200)}
+message set_kernel_8
+{Kernel (RPI)}
+
+message nomsdospart
+{There is no MSDOS boot partition in the MBR partition table.}
+
+message rpikernelmissing
+{The RPI kernel was not installed, perhaps you didn't select it?}

Index: src/distrib/utils/sysinst/arch/evbarm/msg.md.en
diff -u src/distrib/utils/sysinst/arch/evbarm/msg.md.en:1.13 src/distrib/utils/sysinst/arch/evbarm/msg.md.en:1.14
--- src/distrib/utils/sysinst/arch/evbarm/msg.md.en:1.13	Thu Mar  1 17:40:31 2012
+++ src/distrib/utils/sysinst/arch/evbarm/msg.md.en	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.md.en,v 1.13 2012/03/01 17:40:31 tsutsui Exp $	*/
+/*	$NetBSD: msg.md.en,v 1.14 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -82,3 +82,11 @@ message set_kernel_6
 {Kernel (TEAMASA_NPWR)}
 message set_kernel_7
 {Kernel (TS7200)}
+message set_kernel_8
+{Kernel (RPI)}
+
+message nomsdospart
+{There is no MSDOS boot partition in the MBR partition table.}
+
+message rpikernelmissing
+{The RPI kernel was not installed, perhaps you didn't select it?}

Index: src/distrib/utils/sysinst/arch/evbarm/msg.md.es
diff -u src/distrib/utils/sysinst/arch/evbarm/msg.md.es:1.10 src/distrib/utils/sysinst/arch/evbarm/msg.md.es:1.11
--- src/distrib/utils/sysinst/arch/evbarm/msg.md.es:1.10	Thu Mar  1 17:40:31 2012
+++ src/distrib/utils/sysinst/arch/evbarm/msg.md.es	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.md.es,v 1.10 2012/03/01 17:40:31 tsutsui Exp $	*/
+/*	$NetBSD: msg.md.es,v 1.11 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -85,3 +85,11 @@ message set_kernel_6
 {Núcleo (TEAMASA_NPWR)}
 message set_kernel_7
 {Núcleo (TS7200)}
+message set_kernel_8
+{N\xfacleo (RPI)}
+
+message nomsdospart
+{There is no MSDOS boot partition in the MBR partition table.}
+
+message rpikernelmissing
+{The RPI kernel was not installed, perhaps you didn't select it?}
Index: src/distrib/utils/sysinst/arch/evbarm/msg.md.pl
diff -u src/distrib/utils/sysinst/arch/evbarm/msg.md.pl:1.10 src/distrib/utils/sysinst/arch/evbarm/msg.md.pl:1.11
--- src/distrib/utils/sysinst/arch/evbarm/msg.md.pl:1.10	Fri Feb  3 00:35:35 2012
+++ src/distrib/utils/sysinst/arch/evbarm/msg.md.pl	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.md.pl,v 1.10 2012/02/03 00:35:35 nisimura Exp $	*/
+/*	$NetBSD: msg.md.pl,v 1.11 2013/03/19 22:16:54 garbled Exp $	*/
 /* Based on english version: */
 /*	NetBSD: msg.md.en,v 1.2 2002/04/02 17:02:54 thorpej Exp */
 
@@ -84,3 +84,11 @@ message set_kernel_6
 {Kernel (TEAMASA_NPWR)}
 message set_kernel_7
 {Kernel (TS7200)}
+message set_kernel_8
+{Kernel (RPI)}
+
+message nomsdospart
+{There is no MSDOS boot partition in the MBR partition table.}
+
+message rpikernelmissing
+{The RPI kernel was not installed, perhaps you didn't select it?}

Index: src/distrib/utils/sysinst/arch/evbarm/msg.md.fr
diff -u src/distrib/utils/sysinst/arch/evbarm/msg.md.fr:1.12 src/distrib/utils/sysinst/arch/evbarm/msg.md.fr:1.13
--- src/distrib/utils/sysinst/arch/evbarm/msg.md.fr:1.12	Fri Feb  3 00:35:35 2012
+++ src/distrib/utils/sysinst/arch/evbarm/msg.md.fr	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.md.fr,v 1.12 2012/02/03 00:35:35 nisimura Exp $	*/
+/*	$NetBSD: msg.md.fr,v 1.13 2013/03/19 22:16:54 garbled Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -85,3 +85,11 @@ message set_kernel_6
 {Kernel (TEAMASA_NPWR)}
 message set_kernel_7
 {Kernel (TS7200)}
+message set_kernel_8
+{Kernel (RPI)}
+
+message nomsdospart
+{There is no MSDOS boot partition in the MBR partition table.}
+
+message rpikernelmissing
+{The RPI kernel was not installed, perhaps you didn't select it?}

Index: src/etc/etc.evbarm/MAKEDEV.conf
diff -u src/etc/etc.evbarm/MAKEDEV.conf:1.10 src/etc/etc.evbarm/MAKEDEV.conf:1.11
--- src/etc/etc.evbarm/MAKEDEV.conf:1.10	Fri Mar  8 12:33:25 2013
+++ src/etc/etc.evbarm/MAKEDEV.conf	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-# $NetBSD: MAKEDEV.conf,v 1.10 2013/03/08 12:33:25 jmcneill Exp $
+# $NetBSD: MAKEDEV.conf,v 1.11 2013/03/19 22:16:54 garbled Exp $
 
 all_md)
 	makedev wscons fd0 fd1 wd0 wd1 wd2 wd3 sd0 sd1 sd2 sd3
@@ -24,5 +24,5 @@ ramdisk|floppy)
 	makedev flash0 flash1 flash2 flash3 flash4 flash5 flash6 flash7
 	makedev tty0 tty1 opty
 	makedev st0 st1 cd0 cd1
-	makedev drvctl
+	makedev drvctl random
 	;;

Index: src/etc/etc.evbarm/Makefile.inc
diff -u src/etc/etc.evbarm/Makefile.inc:1.48 src/etc/etc.evbarm/Makefile.inc:1.49
--- src/etc/etc.evbarm/Makefile.inc:1.48	Sun Mar 17 12:19:57 2013
+++ src/etc/etc.evbarm/Makefile.inc	Tue Mar 19 22:16:54 2013
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.48 2013/03/17 12:19:57 mlelstv Exp $
+#	$NetBSD: Makefile.inc,v 1.49 2013/03/19 22:16:54 garbled Exp $
 #
 #	etc.evbarm/Makefile.inc -- evbarm-specific etc Makefile targets
 #
@@ -20,6 +20,7 @@ EVBARM_BOARDS+=		ADI_BRH CP3100 GEMINI G
 IMAGE.rel=	${RELEASEDIR}/${RELEASEMACHINEDIR}
 IMAGE.dir=	${IMAGE.rel}/binary/gzimg
 IMAGE.kern=	${IMAGE.rel}/binary/kernel
+IMAGE.instk=	${IMAGE.rel}/installation/instkernel
 
 __mkimage: .USE
 	TOOL_MAKEFS=${TOOL_MAKEFS} \
@@ -30,7 +31,7 @@ __mkimage: .USE
 	TOOL_MTREE=${TOOL_MTREE} \
 	HOST_SH=${HOST_SH} \
 	${HOST_SH} ${MKIMAGE} -x -h ${.TARGET:S/smp_//} -D ${DESTDIR} \
-	    -K ${.ALLSRC} -S ${NETBSDSRCDIR} \
+	    -K ${.ALLSRC} -S ${NETBSDSRCDIR} ${MKI_OPTS.${.TARGET}} \
 	    ${IMAGE.dir}/${.TARGET:S/smp_//}.img.gz
 
 .if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "earm" \
@@ -64,10 +65,13 @@ KERNEL_SETS+=		HDL_G INTEGRATOR_CP IXM12
 
 .if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "earm" \
     || ${MACHINE_ARCH} == "earmhf"
-EXTRA_KERNELS+=		RPI
+BUILD_KERNELS+=		RPI_INSTALL
+KERNEL_SETS+=		RPI
 smp_rpi: ${IMAGE.kern}/netbsd-RPI.bin.gz __mkimage
+MKI_OPTS.smp_rpi_inst="-b"
+smp_rpi_inst: ${IMAGE.instk}/netbsd-RPI_INSTALL.bin.gz __mkimage
 .if empty(ALL_KERNELS) || !empty(ALL_KERNELS:MRPI)
-SNAP_MD_POST_DEPS+=	smp_rpi
+SNAP_MD_POST_DEPS+=	smp_rpi smp_rpi_inst
 .endif
 .endif
 

Index: src/sys/arch/evbarm/conf/Makefile.evbarm.inc
diff -u src/sys/arch/evbarm/conf/Makefile.evbarm.inc:1.22 src/sys/arch/evbarm/conf/Makefile.evbarm.inc:1.23
--- src/sys/arch/evbarm/conf/Makefile.evbarm.inc:1.22	Thu Feb 16 08:08:25 2012
+++ src/sys/arch/evbarm/conf/Makefile.evbarm.inc	Tue Mar 19 22:16:54 2013
@@ -1,10 +1,18 @@
-#	$NetBSD: Makefile.evbarm.inc,v 1.22 2012/02/16 08:08:25 matt Exp $
+#	$NetBSD: Makefile.evbarm.inc,v 1.23 2013/03/19 22:16:54 garbled Exp $
 
 #
 # If this is a install kernel and the ramdisk image exists in the object
 # tree, insert it into the kernel *before* we make the u-boot images.
 #
-.if ${KERNEL_BUILD:T:M*INSTALL} != ""
+.if ${KERNEL_BUILD:T:MRPI_INSTALL} != ""
+RAMDISKDIR!=	cd ${NETBSDSRCDIR}/distrib/${THISARM:T}/instkernel/sshramdisk && ${PRINTOBJDIR}
+
+.if exists(${RAMDISKDIR}/sshramdisk.fs)
+SYSTEM_LD_TAIL_EXTRA+=; \
+	echo ${TOOL_MDSETIMAGE} -s $@ ${RAMDISKDIR}/sshramdisk.fs; \
+	${TOOL_MDSETIMAGE} -s $@ ${RAMDISKDIR}/sshramdisk.fs
+.endif
+.elif ${KERNEL_BUILD:T:M*INSTALL} != ""
 RAMDISKDIR!=	cd ${NETBSDSRCDIR}/distrib/${THISARM:T}/instkernel/ramdisk && ${PRINTOBJDIR}
 
 .if exists(${RAMDISKDIR}/ramdisk.fs)

Index: src/sys/arch/evbarm/rpi/rpi_machdep.c
diff -u src/sys/arch/evbarm/rpi/rpi_machdep.c:1.34 src/sys/arch/evbarm/rpi/rpi_machdep.c:1.35
--- src/sys/arch/evbarm/rpi/rpi_machdep.c:1.34	Mon Feb  4 21:46:14 2013
+++ src/sys/arch/evbarm/rpi/rpi_machdep.c	Tue Mar 19 22:16:55 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpi_machdep.c,v 1.34 2013/02/04 21:46:14 skrll Exp $	*/
+/*	$NetBSD: rpi_machdep.c,v 1.35 2013/03/19 22:16:55 garbled Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rpi_machdep.c,v 1.34 2013/02/04 21:46:14 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rpi_machdep.c,v 1.35 2013/03/19 22:16:55 garbled Exp $");
 
 #include "opt_evbarm_boardtype.h"
 
@@ -45,6 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: rpi_machdep.
 #include <sys/param.h>
 #include <sys/device.h>
 #include <sys/termios.h>
+#include <sys/reboot.h>
 #include <sys/sysctl.h>
 #include <sys/bus.h>
 

Added files:

Index: src/distrib/evbarm/instkernel/sshramdisk/Makefile
diff -u /dev/null src/distrib/evbarm/instkernel/sshramdisk/Makefile:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/distrib/evbarm/instkernel/sshramdisk/Makefile	Tue Mar 19 22:16:53 2013
@@ -0,0 +1,47 @@
+#	$NetBSD: Makefile,v 1.1 2013/03/19 22:16:53 garbled Exp $
+
+.include <bsd.own.mk>
+.include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"
+
+IMAGE=		sshramdisk.fs
+IMAGESIZE=	3572k
+MAKEFS_FLAGS=	-f 15
+
+WARNS=		1
+DBG=		-Os
+
+CRUNCHBIN=	ramdiskbin
+LISTS=		${.CURDIR}/list ${DISTRIBDIR}/common/list.sysinst
+MTREECONF=	${.CURDIR}/mtree.conf
+IMAGEENDIAN=	le
+MAKEDEVTARGETS=	ramdisk
+IMAGEDEPENDS=	${CRUNCHBIN} \
+		dot.profile master.passwd sshd_config ssh_host_dsa_key \
+		${NETBSDSRCDIR}/etc/group \
+		${NETBSDSRCDIR}/etc/netconfig ${DISTRIBDIR}/common/protocols \
+		${DISTRIBDIR}/common/services
+
+# Use stubs to eliminate some large stuff from libc
+HACKSRC=	${DISTRIBDIR}/utils/libhack
+.include	"${HACKSRC}/Makefile.inc"
+${CRUNCHBIN}:	libhack.o
+
+USE_PAM := no
+USE_YP := no
+USE_SKEY := no
+USE_KERBEROS := no
+USE_LDAP := no
+.export USE_PAM
+.export USE_YP
+.export USE_SKEY
+.export USE_KERBEROS
+.export USE_LDAP
+
+.include "${DISTRIBDIR}/common/Makefile.crunch"
+.include "${DISTRIBDIR}/common/Makefile.dhcpcd"
+.include "${DISTRIBDIR}/common/Makefile.makedev"
+.include "${DISTRIBDIR}/common/Makefile.image"
+
+release:
+
+.include <bsd.prog.mk>
Index: src/distrib/evbarm/instkernel/sshramdisk/dot.profile
diff -u /dev/null src/distrib/evbarm/instkernel/sshramdisk/dot.profile:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/distrib/evbarm/instkernel/sshramdisk/dot.profile	Tue Mar 19 22:16:53 2013
@@ -0,0 +1,75 @@
+# $NetBSD: dot.profile,v 1.1 2013/03/19 22:16:53 garbled Exp $
+#
+# Copyright (c) 1997 Perry E. Metzger
+# Copyright (c) 1994 Christopher G. Demetriou
+# All rights reserved.
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+#    must display the following acknowledgement:
+#          This product includes software developed for the
+#          NetBSD Project.  See http://www.NetBSD.org/ for
+#          information about NetBSD.
+# 4. The name of the author may not be used to endorse or promote products
+#    derived from this software without specific prior written permission.
+# 
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 
+# <<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>
+
+PATH=/sbin:/bin:/usr/bin:/usr/sbin:/
+export PATH
+TERM=vt100
+export TERM
+HOME=/
+export HOME
+
+umask 022
+
+ROOTDEV=/dev/md0a
+
+if [ "X${DONEPROFILE}" = "X" ]; then
+	DONEPROFILE=YES
+	export DONEPROFILE
+
+	# set up some sane defaults
+	echo 'erase ^H, werase ^W, kill ^U, intr ^C'
+	stty newcrt werase ^W intr ^C kill ^U erase ^H
+	echo ''
+
+	# mount the ramdisk read write
+	mount -u $ROOTDEV /
+
+	# mount the kern_fs so that we can examine the dmesg state
+	mount -t kernfs /kern /kern
+
+	# run the installation or upgrade script.
+	if [ -x "/sbin/dhcpcd" ]; then
+		echo "starting dhcpcd, waiting for carrier"
+		/sbin/dhcpcd -d -n -w
+		if [ -x "/usr/sbin/sshd" ]; then
+			echo "sleeping 5 seconds, then starting sshd:"
+			sleep 5
+			/usr/sbin/sshd
+		fi
+	fi
+	echo
+	echo
+	echo "Please run sysinst to begin your installation."
+fi
Index: src/distrib/evbarm/instkernel/sshramdisk/inst.profile
diff -u /dev/null src/distrib/evbarm/instkernel/sshramdisk/inst.profile:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/distrib/evbarm/instkernel/sshramdisk/inst.profile	Tue Mar 19 22:16:53 2013
@@ -0,0 +1,27 @@
+# $NetBSD: inst.profile,v 1.1 2013/03/19 22:16:53 garbled Exp $
+
+PATH=/sbin:/bin:/usr/bin:/usr/sbin:/
+export PATH
+TERM=vt100
+export TERM
+HOME=/
+export HOME
+
+umask 022
+
+if [ "X${DONEPROFILE}" = "X" ]; then
+	DONEPROFILE=YES
+	export DONEPROFILE
+
+	# set up some sane defaults
+	echo 'erase ^H, werase ^W, kill ^U, intr ^C'
+	stty newcrt werase ^W intr ^C kill ^U erase ^H
+	echo ''
+
+	# run the installation or upgrade script.
+	echo "starting sysinst!"
+	cd /
+	/sysinst
+	echo "If you have completed your install, please reboot"
+	echo "into your new OS, otherwise, run sysinst again."
+fi
Index: src/distrib/evbarm/instkernel/sshramdisk/list
diff -u /dev/null src/distrib/evbarm/instkernel/sshramdisk/list:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/distrib/evbarm/instkernel/sshramdisk/list	Tue Mar 19 22:16:53 2013
@@ -0,0 +1,91 @@
+#	$NetBSD: list,v 1.1 2013/03/19 22:16:53 garbled Exp $
+
+SRCDIRS	bin sbin external/bsd/less/bin crypto/external/bsd/openssh/bin/sshd usr.bin usr.sbin
+
+PROG	bin/cat
+PROG	bin/chmod
+PROG	bin/cp
+PROG	bin/dd
+PROG	bin/df
+PROG	bin/ed
+PROG	bin/ln
+PROG	bin/ls
+PROG	bin/mkdir
+PROG	bin/mv
+PROG	bin/pax		usr/bin/tar
+PROG	bin/pwd
+PROG	bin/rm
+PROG	bin/rmdir
+PROG	bin/sh
+PROG	bin/stty
+PROG	bin/sync
+PROG	bin/sleep
+
+PROG	sbin/chown	bin/chgrp
+PROG	sbin/disklabel
+PROG	sbin/fdisk
+PROG	sbin/fsck
+PROG	sbin/fsck_msdos
+PROG	sbin/fsck_ffs
+PROG	sbin/gpt
+PROG	sbin/ifconfig
+PROG	sbin/init
+PROG	sbin/mknod
+PROG	sbin/mount
+PROG	sbin/mount_cd9660
+PROG	sbin/mount_ext2fs
+PROG	sbin/mount_ffs
+PROG	sbin/mount_kernfs
+PROG	sbin/mount_msdos
+PROG	sbin/mount_nfs
+PROG	sbin/mount_tmpfs
+PROG	sbin/newfs	sbin/mount_mfs
+PROG	sbin/newfs_ext2fs
+PROG	sbin/ping
+PROG	sbin/reboot	sbin/halt
+PROG	sbin/restore	sbin/rrestore
+PROG	sbin/route
+PROG	sbin/shutdown
+PROG	sbin/slattach
+PROG	sbin/swapctl
+PROG	sbin/umount
+
+PROG	usr/bin/ftp
+PROG	usr/bin/tip	usr/bin/cu
+PROG	usr/bin/gzip	usr/bin/gzcat usr/bin/gunzip
+PROG	usr/bin/less	usr/bin/more
+PROG	usr/bin/sed
+PROG	usr/bin/tset
+
+PROG	usr/sbin/chroot
+PROG	usr/sbin/sshd
+
+SPECIAL	ed		srcdir	distrib/utils/x_ed
+SPECIAL	gzip		srcdir	distrib/utils/x_gzip
+SPECIAL	ping		srcdir	distrib/utils/x_ping
+SPECIAL	ifconfig	srcdir	distrib/utils/x_ifconfig
+SPECIAL	route		srcdir	distrib/utils/x_route
+SPECIAL	umount		srcdir	distrib/utils/x_umount
+SPECIAL sshd		srcdir	crypto/external/bsd/openssh/bin/sshd
+SPECIAL sshd		keepsymbols allow_severity deny_severity
+
+LIBS	libhack.o -ledit -lutil -lcurses -lterminfo -lrmt -lcrypt -ll -lm -lz -lprop    -lssh -lcrypto -lwrap
+
+# init invokes the shell as -sh
+ARGVLN	sh -sh
+
+# we need the boot blocks /usr/mdec
+#COPY	${DESTDIR}/usr/mdec/ofwboot	usr/mdec/ofwboot
+
+# various files that we need in /etc for the install
+COPY	${NETBSDSRCDIR}/etc/group		etc/group
+COPY	${CURDIR}/master.passwd	etc/master.passwd 600
+COPY	${NETBSDSRCDIR}/etc/netconfig		etc/netconfig
+COPY	${DISTRIBDIR}/common/protocols		etc/protocols
+COPY	${DISTRIBDIR}/common/services		etc/services
+
+# and the installation tools
+COPY	${CURDIR}/dot.profile		.profile
+COPY	${CURDIR}/inst.profile		inst/.profile
+COPY	${CURDIR}/sshd_config		etc/ssh/sshd_config
+COPY	${CURDIR}/ssh_host_dsa_key	etc/ssh/ssh_host_dsa_key 600
Index: src/distrib/evbarm/instkernel/sshramdisk/master.passwd
diff -u /dev/null src/distrib/evbarm/instkernel/sshramdisk/master.passwd:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/distrib/evbarm/instkernel/sshramdisk/master.passwd	Tue Mar 19 22:16:53 2013
@@ -0,0 +1,24 @@
+root::0:0::0:0:Charlie &:/root:/bin/sh
+sysinst:EHDz7/tNTWGFA:0:0::0:0:System Installer:/inst:/bin/sh
+pi:aBrzVC9eLEoh.:0:0::0:0:System Installer:/inst:/bin/sh
+toor:*:0:0::0:0:Bourne-again Superuser:/root:/bin/sh
+daemon:*:1:1::0:0:The devil himself:/:/sbin/nologin
+operator:*:2:5::0:0:System &:/usr/guest/operator:/sbin/nologin
+bin:*:3:7::0:0:Binaries Commands and Source:/:/sbin/nologin
+games:*:7:13::0:0:& pseudo-user:/usr/games:/sbin/nologin
+postfix:*:12:12::0:0:& pseudo-user:/var/spool/postfix:/sbin/nologin
+named:*:14:14::0:0:& pseudo-user:/var/chroot/named:/sbin/nologin
+ntpd:*:15:15::0:0:& pseudo-user:/var/chroot/ntpd:/sbin/nologin
+sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin
+_pflogd:*:18:18::0:0:& pseudo-user:/var/chroot/pflogd:/sbin/nologin
+_rwhod:*:19:19::0:0:& pseudo-user:/var/rwho:/sbin/nologin
+_proxy:*:21:21::0:0:Proxy Services:/nonexistent:/sbin/nologin
+_timedc:*:22:22::0:0:& pseudo-user:/nonexistent:/sbin/nologin
+_sdpd:*:23:23::0:0:& pseudo-user:/nonexistent:/sbin/nologin
+_httpd:*:24:24::0:0:& pseudo-user:/var/www:/sbin/nologin
+_mdnsd:*:25:25::0:0:& pseudo-user:/nonexistent:/sbin/nologin
+_tests:*:26:26::0:0:& pseudo-user:/nonexistent:/sbin/nologin
+_tcpdump:*:27:27::0:0:& pseudo-user:/var/chroot/tcpdump:/sbin/nologin
+_tss:*:28:28::0:0:& pseudo-user:/var/tpm:/sbin/nologin
+uucp:*:66:1::0:0:UNIX-to-UNIX Copy:/nonexistent:/sbin/nologin
+nobody:*:32767:39::0:0:Unprivileged user:/nonexistent:/sbin/nologin
Index: src/distrib/evbarm/instkernel/sshramdisk/mtree.conf
diff -u /dev/null src/distrib/evbarm/instkernel/sshramdisk/mtree.conf:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/distrib/evbarm/instkernel/sshramdisk/mtree.conf	Tue Mar 19 22:16:53 2013
@@ -0,0 +1,32 @@
+#	$NetBSD: mtree.conf,v 1.1 2013/03/19 22:16:53 garbled Exp $
+
+/set				type=dir uname=root gname=wheel mode=0755
+
+.
+./bin
+./dev
+./etc
+./etc/ssh
+./inst
+./libexec
+./libexec/dhcpcd-hooks
+./mnt
+./mnt2
+./kern
+./sbin
+./targetroot
+./tmp				mode=01777
+./usr
+./usr/bin
+./usr/mdec
+./usr/sbin
+./usr/share
+./usr/share/misc
+./var
+./var/chroot
+./var/chroot/sshd
+./var/db
+./var/run
+./var/log
+./var/spool
+./var/spool/lock
Index: src/distrib/evbarm/instkernel/sshramdisk/ssh_host_dsa_key
diff -u /dev/null src/distrib/evbarm/instkernel/sshramdisk/ssh_host_dsa_key:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/distrib/evbarm/instkernel/sshramdisk/ssh_host_dsa_key	Tue Mar 19 22:16:53 2013
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEA2O4DZIR5YH7ESnvKmdTfJbPDzDZt44chEe27eFf28AhnfGYW
+962xKQbzzZqmMsH19CUAxpQ1UJ/o9MPULCZvYDwhn6t0cT3oNaIhj774Nw5Uni99
+d0DV/PSPsZlk22MySEsXI5rygnUg0ZMEQbw3pPlRYb8pjUwbkgsxR6KCDanFMhuK
+DtCTKbtK/y06BpievoFpENGpwwamfbpQxjK0MvT1TU744eKfBcWPtBl2KZM0cnbS
+vxNAvkSQrku2Sb56JzBo7b1TlxeDjBwHmdoFbUWjmXV5YsNkNdXvx52cro5o+z1f
+obpul8qpy+WQOsucRbltzfcBSRQ7lA09D4Hg5QIDAQABAoIBADQsOmCog9CzbF5F
+m5qX2ftlWsf4p0E7tLZtKNNuxJNCUjFXFFsJSTyG0Yg3k5VNlOvdImygJJp5ezuz
+BYqAy/SnQab3Q5AgxYJwtgWudmA3cB6DaXeO/mhSIWUjcWBaYTOF69DCaWT66qO8
+6h8tN2zUEcCii0nSbicXzghei0zhgE6RwwD0k07msQIgVX5XERUZSqQVg+Ls+VAu
+wp1OBW6HeXgSTGuRkzH9UuEobklf+KBtdSj+Nr+NdCg2gh4dNY86u6TT9dLwMw8T
+h8/oqfdnxlXiU4AfBsxWbHdAiqKBSa5IG2+4IsX4Zt3lKjygpRndNzqetfgjsz69
+ebbyjQECgYEA/GgDqx7k6QWOibKKb8DjdGfy+HdGqU5Bm9hSuhFHIwm0zSy+QbfV
+Z5nj1zj2pnm1/yfPKMrMEnZWuDTxMkgDQLv4UPdbWPvbBcowZWfy5st/bDOWtq9E
+SuHci941pNN9kqHDmDk9HPoHcYXmk4mA4W10lSGIHoxH3uCrbBeKj8UCgYEA3ASx
+GdmciAKOAt6gQzqOjWBs20CRqUvsonx5gagUOVmixpZrBumjNiEQg8kTCJF0pQ9O
+iWYTqqmzQCpw7HZsAMsjILUhZErGajbiAQ4Q7XOFvdGjfR1qZGgw/Qrx5MVmlwOo
+l3+PPdUP9shRbWFN0fbti9p+yvp9Pjltsp9Y/qECgYB9DrAandD/H3CzCtIKcsB/
+kW1R7A8Hna1mIPVEGYFse8eoDK4rc4D5tsargR679vvUcw3yASDBWP64gAqtRf7O
+mRN8UkJhQVAQe1AlPi6caWE15A2dcBNfIq8aYbukceD6wMlfZ6S+8aa0eYp3uR4x
+EwE7ToTZ1dlaNWjZwoQ1nQKBgBHtX/DXRmXer2uUcEKKFut2G+iRjkzZHuLueYgT
+BfLWVukPgJEDoITclNfoHmDoWTTJ1oBjjN6vDSgBTUo3K/20j5wuphXh8eDdr/Se
+DMsMSq1403VyXCTqSHOV3LfjTcSoS6hsgGNtZOuazue2sfyVvi1TFFm9p07WpxWS
+3lGBAoGAEzrlLi1veWatprss9qRYF3nKiMnf/K7J65EWOtZEOWwYHmmoUSMKo3Oy
+m8snS1RvJcorLnqUpkGEnhaF9XD2QFHwxUiTrvSQVkk5XTURjmJmWjnwCTMVlrF+
+1ce9hqg0uVc08TW4+Th3sZPBGqN2nrkPYUxYHSu6mLoR3R5j+2s=
+-----END RSA PRIVATE KEY-----
Index: src/distrib/evbarm/instkernel/sshramdisk/sshd_config
diff -u /dev/null src/distrib/evbarm/instkernel/sshramdisk/sshd_config:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/distrib/evbarm/instkernel/sshramdisk/sshd_config	Tue Mar 19 22:16:53 2013
@@ -0,0 +1,20 @@
+#	$NetBSD: sshd_config,v 1.1 2013/03/19 22:16:53 garbled Exp $
+
+# Special cut-down sshd_config for sshramdisk
+# Tim Rightnour <garb...@netbsd.org>
+
+#Port 22
+#AddressFamily any
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+#Protocol 2
+#HostKey /etc/ssh/ssh_host_dsa_key
+LoginGraceTime 600
+# needed because sysinst is uid 0
+PermitRootLogin yes
+AuthorizedKeysFile	.ssh/authorized_keys
+PasswordAuthentication yes
+# just in case
+PermitEmptyPasswords yes
+UsePrivilegeSeparation sandbox
+AllowUsers pi sysinst

Index: src/distrib/utils/embedded/conf/rpi_inst.conf
diff -u /dev/null src/distrib/utils/embedded/conf/rpi_inst.conf:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/distrib/utils/embedded/conf/rpi_inst.conf	Tue Mar 19 22:16:53 2013
@@ -0,0 +1,122 @@
+# $NetBSD: rpi_inst.conf,v 1.1 2013/03/19 22:16:53 garbled Exp $
+# Raspberry Pi customization script used by mkimage
+#
+
+board=rpi_inst
+kernel=$src/sys/arch/evbarm/compile/RPI/netbsd-RPI_INSTALL.bin
+
+image=$HOME/${board}.img
+
+specialdirs="/kern /proc"
+
+swap=8
+extra=8		# spare space
+boot=112
+init=8
+
+size=$(( 10485760 + ${swap} * 1024 * 512 + ${boot} * 1024 * 512 + ${init} * 1024 * 512 ))
+msdosid=12
+
+make_label_evbarm() {
+	# compute all sizes in terms of sectors
+	local totalsize=$(( ${newsize} * 1024 * 2 / 512 ))
+
+	local swapsize=$(( ${swap} * 1024 ))
+	local bootsize=$(( ${boot} * 1024 ))
+
+	local bootoffset=$(( ${init} * 1024 ))
+	local swapoffset=$(( ${bootoffset} + ${bootsize} ))
+
+	local asize=$(( ${totalsize} - ${swapsize} - ${bootsize} - ${bootoffset} ))
+	local aoffset=$(( ${swapoffset} + ${swapsize} ))
+
+	local bps=512
+	local spt=32
+	local tpc=64
+	local spc=2048
+	local cylinders=$(( ${totalsize} / ${spc} ))
+
+	cat << EOF
+type: SCSI
+disk: STORAGE DEVICE
+label: fictitious
+flags: removable
+bytes/sector: ${bps}
+sectors/track: ${spt}
+tracks/cylinder: ${tpc}
+sectors/cylinder: ${spc}
+cylinders: ${cylinders}
+total sectors: ${totalsize}
+rpm: 3600
+interleave: 1
+trackskew: 0
+cylinderskew: 0
+headswitch: 0           # microseconds
+track-to-track seek: 0  # microseconds
+drivedata: 0 
+
+8 partitions:
+#     size         offset        fstype [fsize bsize cpg/sgs]
+ a:   ${asize}     ${aoffset}    4.2BSD  ${fsize} ${bsize} 0  # 
+ b:   ${swapsize}  ${swapoffset} swap                         #
+ d:   ${totalsize} 0             unused      0     0          #
+ e:   ${bootsize}  ${bootoffset} MSDOS                        #
+EOF
+}
+
+make_fstab_evbarm() {
+}
+
+customize_evbarm() {
+	echo "${bar} creating directories ${bar}"
+	mkdir ${mnt}/proc ${mnt}/kern
+}
+firmwaredir=$src/external/broadcom/rpi-firmware/dist
+firmwarefiles="LICENCE.broadcom bootcode.bin fixup.dat fixup_cd.dat start.elf start_cd.elf"
+
+make_filesystems() {
+	make_filesystems_evbarm
+}
+
+make_fstab() {
+	make_fstab_evbarm
+}
+
+make_label() {
+	make_label_evbarm
+}
+
+customize() {
+	customize_evbarm
+}
+
+populate() {
+	cat > ${mnt}/boot/cmdline.txt << EOF
+root=ld0a console=fb
+#fb=1280x1024		# to select a mode, otherwise try EDID 
+#fb=disable		# to disable fb completely
+EOF
+	if [ ! -f ${kernel} ]; then
+		echo ${PROG}: Missing ${kernel} 1>&2
+		exit 1
+	fi
+
+	echo "${bar} installing kernel ${bar}"
+	case ${kernel} in
+	*.gz)
+		gzip -dc ${kernel} > ${mnt}/boot/kernel.img
+		;;
+	*)
+		cp ${kernel} ${mnt}/boot/kernel.img
+		;;
+	esac
+
+	echo "${bar} installing firmware files ${bar}"
+	(cd ${mnt}/boot &&
+		for f in ${firmwarefiles}; do
+			echo " $f"
+			cp ${firmwaredir}/${f} .
+		done
+	)
+
+}

Index: src/sys/arch/evbarm/conf/RPI_INSTALL
diff -u /dev/null src/sys/arch/evbarm/conf/RPI_INSTALL:1.1
--- /dev/null	Tue Mar 19 22:16:55 2013
+++ src/sys/arch/evbarm/conf/RPI_INSTALL	Tue Mar 19 22:16:54 2013
@@ -0,0 +1,14 @@
+#	$NetBSD: RPI_INSTALL,v 1.1 2013/03/19 22:16:54 garbled Exp $
+#
+#	RPI_INSTALL -- RPI kernel with installation-sized
+#	ramdisk
+#
+
+include "arch/evbarm/conf/RPI"
+
+options 	MEMORY_DISK_HOOKS
+options 	MEMORY_DISK_IS_ROOT	# Force root on ramdisk
+options 	MEMORY_DISK_ROOT_SIZE=7300
+options 	MEMORY_DISK_RBFLAGS=RB_SINGLE	# boot in single-user mode
+
+options BOOTHOWTO=RB_SINGLE

Reply via email to