Import the new nrelease Makefile packaging and root template infrastructure
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 10 Jul 2004 22:29:11 +0000 (22:29 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 10 Jul 2004 22:29:11 +0000 (22:29 +0000)
from the DragonFly Installer Team and make the following additional
augmentations:

* Use the default port package install location to retrieve packages.
* Pre-check that all required packages exist before doing anything
* Remove the root autologin (also means that gettytab and ~root/.login can
  be removed from the original template).
* Add an etc/issue file
* Add an 'installer' user (root uid)

Obtained-from: The DragonFly Installer Team:
    Chris Pressey, Devon O'Dell, Eirik Nygaard, Hiten Pandya & GeekGod

nrelease/Makefile
nrelease/installer/etc/defaults/pfi.conf [new file with mode: 0644]
nrelease/installer/etc/fstab [new file with mode: 0644]
nrelease/installer/etc/issue [new file with mode: 0644]
nrelease/installer/etc/master.passwd [new file with mode: 0644]
nrelease/installer/etc/rc.d/pfi [new file with mode: 0755]
nrelease/installer/etc/ttys [new file with mode: 0644]
nrelease/installer/usr/local/bin/installer [new file with mode: 0755]
nrelease/installer/usr/local/etc/thttpd.conf [new file with mode: 0644]
nrelease/installer/usr/local/share/pristine/etc/master.passwd [new file with mode: 0644]
nrelease/installer/usr/local/share/pristine/etc/ttys [new file with mode: 0644]

index b7d7192..e8f503c 100644 (file)
@@ -1,4 +1,4 @@
-# $DragonFly: src/nrelease/Makefile,v 1.8 2004/04/23 02:14:07 dillon Exp $
+# $DragonFly: src/nrelease/Makefile,v 1.9 2004/07/10 22:29:11 dillon Exp $
 #
 
 ISODIR ?= /usr/release
 #
 
 ISODIR ?= /usr/release
@@ -7,6 +7,21 @@ ISOROOT = ${ISODIR}/root
 OBJSYS= ${.OBJDIR}/../sys
 KERNCONF ?= GENERIC
 
 OBJSYS= ${.OBJDIR}/../sys
 KERNCONF ?= GENERIC
 
+# Specify which packages are required on the ISO, and let the user
+# specify additional packages to include.  During the `pkgaddiso'
+# target, the packages are obtained from PACKAGES_LOC.
+#
+REQ_PACKAGES= cdrtools-2.0.3_3 cvsup-without-gui-16.1h
+PACKAGES?= ${REQ_PACKAGES} ${EXTRA_PACKAGES}
+PACKAGES_LOC?= /usr/ports/packages/All
+
+# Specify which root skeletons are required, and let the user include
+# their own.  They are copied into ISODIR during the `pkgcustomizeiso'
+# target; each overwrites the last.
+#
+REQ_ROOTSKELS= ${.CURDIR}/root
+ROOTSKELS?= ${REQ_ROOTSKELS} ${EXTRA_ROOTSKELS}
+
 # note: we use the '${NRLOBJDIR}/nrelease' construct, that is we add
 # the additional '/nrelease' manually, as a safety measure.
 #
 # note: we use the '${NRLOBJDIR}/nrelease' construct, that is we add
 # the additional '/nrelease' manually, as a safety measure.
 #
@@ -15,19 +30,64 @@ NRLOBJDIR?= /usr/obj
 WORLD_CCVER ?= ${CCVER}
 KERNEL_CCVER ?= ${CCVER}
 
 WORLD_CCVER ?= ${CCVER}
 KERNEL_CCVER ?= ${CCVER}
 
-release:       check clean buildworld1 buildkernel1 buildiso mkiso
+#########################################################################
+#                              BASE ISO TARGETS                        #
+#########################################################################
+
+release:       check clean buildworld1 buildkernel1 \
+               buildiso customizeiso pkgaddiso mkiso
+
+quickrel:      check clean buildworld2 buildkernel2 \
+               buildiso customizeiso pkgaddiso mkiso
+
+realquickrel:  check clean \
+               buildiso customizeiso pkgaddiso mkiso
 
 
-quickrel:      check clean buildworld2 buildkernel2 buildiso mkiso
+#########################################################################
+#                      ISO TARGETS WITH INSTALLER                      #
+#########################################################################
 
 
-realquickrel:  check clean buildiso mkiso
+INSTALLER_PKGS= dfuibe_installer dfuife_curses libdfui \
+               thttpd-notimeout dfuife_cgi
+INSTALLER_SKELS= installer
+
+INSTALLER_ENV= EXTRA_PACKAGES="${INSTALLER_PKGS}" \
+               EXTRA_ROOTSKELS="${INSTALLER_SKELS}"
+
+installer_check:
+               @${INSTALLER_ENV} ${MAKE} check
+
+installer_release:
+               ${INSTALLER_ENV} ${MAKE} release
+
+installer_quickrel:
+               ${INSTALLER_ENV} ${MAKE} quickrel
+
+installer_realquickrel:
+               ${INSTALLER_ENV} ${MAKE} realquickrel
+
+#########################################################################
+#                              HELPER TARGETS                          #
+#########################################################################
 
 check:
 
 check:
-       if [ ! -f /usr/local/bin/mkisofs ]; then \
+       @if [ ! -f /usr/local/bin/mkisofs ]; then \
                echo "You need to install the mkisofs port for this target"; \
                echo "You need to install the mkisofs port for this target"; \
-               exit 1; fi
-       if [ ! -f /usr/local/bin/cvsup ]; then \
-               echo "You need to install the cvsup port for this target"; \
-               exit 1; fi
+               exit 1; \
+       fi
+.for PKG in ${PACKAGES}
+       @if [ ! -f ${PACKAGES_LOC}/${PKG}.tgz ]; then \
+               echo "Unable to find ${PACKAGES_LOC}/${PKG}.tgz.  This is"; \
+               echo "typically accomplished by cd'ing into the appropriate"; \
+               echo "port and typing 'make package'"; \
+               echo ""; \
+               echo "If you are trying to build the installer, the"; \
+               echo "required packages can be obtained from:"; \
+               echo "http://catseye.mine.nu:8080/DragonFlyBSD/installer/"; \
+               exit 1; \
+       fi
+.endfor
+       @echo "check: all preqs found"
 
 buildworld1:
        ( cd ${.CURDIR}/..; make buildworld CCVER=${WORLD_CCVER} )
 
 buildworld1:
        ( cd ${.CURDIR}/..; make buildworld CCVER=${WORLD_CCVER} )
@@ -51,16 +111,42 @@ buildiso:
        if [ ! -d ${NRLOBJDIR}/nrelease ]; then mkdir -p ${NRLOBJDIR}/nrelease; fi
        ( cd ${.CURDIR}/..; make DESTDIR=${ISOROOT} installworld )
        ( cd ${.CURDIR}/../etc; MAKEOBJDIRPREFIX=${NRLOBJDIR}/nrelease make DESTDIR=${ISOROOT} distribution )
        if [ ! -d ${NRLOBJDIR}/nrelease ]; then mkdir -p ${NRLOBJDIR}/nrelease; fi
        ( cd ${.CURDIR}/..; make DESTDIR=${ISOROOT} installworld )
        ( cd ${.CURDIR}/../etc; MAKEOBJDIRPREFIX=${NRLOBJDIR}/nrelease make DESTDIR=${ISOROOT} distribution )
-       cpdup -X cpignore -o ${.CURDIR}/root ${ISOROOT} -vv
        ( cd ${.CURDIR}/..; make DESTDIR=${ISOROOT} \
                installkernel KERNCONF=${KERNCONF} )
        mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.local.dist -p ${ISOROOT}/usr/local/
        mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.var.dist -p ${ISOROOT}/var
        dev_mkdb -f ${ISOROOT}/var/run/dev.db ${ISOROOT}/dev
        ( cd ${.CURDIR}/..; make DESTDIR=${ISOROOT} \
                installkernel KERNCONF=${KERNCONF} )
        mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.local.dist -p ${ISOROOT}/usr/local/
        mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.var.dist -p ${ISOROOT}/var
        dev_mkdb -f ${ISOROOT}/var/run/dev.db ${ISOROOT}/dev
-       cp /usr/local/bin/mkisofs ${ISOROOT}/usr/local/bin
-       cp /usr/local/man/man8/mkisofs.8.gz ${ISOROOT}/usr/local/man/man8
-       cp /usr/local/bin/cvsup ${ISOROOT}/usr/local/bin
-       cp /usr/local/man/man1/cvsup.1.gz ${ISOROOT}/usr/local/man/man1
+
+customizeiso:
+.for ROOTSKEL in ${ROOTSKELS}
+       cpdup -X cpignore -o ${ROOTSKEL} ${ISOROOT}
+.endfor
+       rm -rf `find ${ISOROOT} -type d -name CVS -print`
+
+pkgcleaniso:
+       rm -f ${ISOROOT}/tmp/chrootscript
+       echo "#!/bin/sh" > ${ISOROOT}/tmp/chrootscript
+.for PKG in ${PACKAGES}
+       echo "pkg_delete -f ${PKG}" >> ${ISOROOT}/tmp/chrootscript
+.endfor
+       chmod a+x ${ISOROOT}/tmp/chrootscript
+       chroot ${ISOROOT}/ /tmp/chrootscript || exit 0
+       rm ${ISOROOT}/tmp/chrootscript
+
+pkgaddiso:
+       rm -f ${ISOROOT}/tmp/chrootscript
+       echo "#!/bin/sh" > ${ISOROOT}/tmp/chrootscript
+.for PKG in ${PACKAGES}
+       cp ${PACKAGES_LOC}/${PKG}.tgz ${ISOROOT}/tmp/${PKG}.tgz
+       echo "echo 'Installing package ${PKG}...'" >> ${ISOROOT}/tmp/chrootscript
+       echo "pkg_add /tmp/${PKG}.tgz" >> ${ISOROOT}/tmp/chrootscript
+.endfor
+       chmod a+x ${ISOROOT}/tmp/chrootscript
+       chroot ${ISOROOT}/ /tmp/chrootscript
+       rm ${ISOROOT}/tmp/chrootscript
+.for PKG in ${PACKAGES}
+       rm -f ${ISOROOT}/tmp/${PKG}.tgz
+.endfor
 
 mkiso:
        ( cd ${ISOROOT}; mkisofs -b boot/cdboot -no-emul-boot \
 
 mkiso:
        ( cd ${ISOROOT}; mkisofs -b boot/cdboot -no-emul-boot \
@@ -68,7 +154,7 @@ mkiso:
 
 clean:
        if [ -d ${ISOROOT} ]; then chflags -R noschg ${ISOROOT}; fi
 
 clean:
        if [ -d ${ISOROOT} ]; then chflags -R noschg ${ISOROOT}; fi
-       if [ -d ${ISOROOT} ]; then rm -rf ${ISOROOT}; fi
+       if [ -d ${ISOROOT} ]; then rm -rf ${ISOROOT}/*; fi
        if [ -d ${NRLOBJDIR}/nrelease ]; then rm -rf ${NRLOBJDIR}/nrelease; fi
 
 realclean:     clean
        if [ -d ${NRLOBJDIR}/nrelease ]; then rm -rf ${NRLOBJDIR}/nrelease; fi
 
 realclean:     clean
diff --git a/nrelease/installer/etc/defaults/pfi.conf b/nrelease/installer/etc/defaults/pfi.conf
new file mode 100644 (file)
index 0000000..0b43ba0
--- /dev/null
@@ -0,0 +1,77 @@
+#######################################################################
+# $Id: pfi.conf,v 1.1 2004/07/09 23:25:40 cpressey Exp $
+# $DragonFly: src/nrelease/installer/etc/defaults/pfi.conf,v 1.1 2004/07/10 22:26:17 dillon Exp $
+# Defaults for pfi.conf.
+
+# A space-seperated list of what services to restart when we are done
+# changing options.  The services are the base names of RCNG scripts
+# (i.e. without the "/etc/rc.d/" prefix.)  Note that these must be
+# given explicitly in the same order they would normally be started
+# by rcorder during RCNG (e.g. "netif dhclient sshd"); they are not
+# automatically ordered by their dependencies here.
+
+pfi_rc_actions=""
+
+# Determines which installer frontend to use.  Defaults to "curses";
+# other legal options are "cgi" and "none".
+
+pfi_frontend="curses"
+
+# A password to set as the root password on the LiveCD, if any.
+
+pfi_set_root_password=""
+
+# Control corresponding sshd options.  To make sure sshd restarts with
+# these options, add "sshd" to pfi_rc_actions.
+
+pfi_sshd_permit_root_login="NO"
+pfi_sshd_permit_empty_passwords="NO"
+
+# An script to run before the installer.  It is assumed this script is
+# located on the pfi media.  While it is run, the media's root directory
+# is mounted on /mnt.
+
+pfi_script=""
+
+# A program to run before the installer.  It is assumed to reside on
+# the LiveCD; /mnt is not mounted.
+
+pfi_run=""
+
+# What transport layer the DFUI in the installer should use.  Valid
+# values are currently "caps" or "npipe".
+
+pfi_dfui_transport="caps"
+
+#######################################################################
+# EXAMPLES
+# To use one of these examples, extract it to a text file and remove the
+# leading pound-signs.  Copy this text file to the file "/pfi.conf"
+# on a floppy disk or USB pen drive (hereinafter referred to as "the pfi
+# media") and have that media inserted or attached to the computer while
+# you boot from the installer CD-ROM.  The installer will attempt to
+# locate this file and, if found, will use the variables present within it
+# to configure the installer boot process.
+
+# This file has the same syntax as /etc/rc.conf, and it can contain any
+# setting which is meaningful in /etc/rc.conf as well.  Any rc.conf
+# setting which is given will only be obeyed, however, if the RCNG script
+# to which that setting applies is named in pfi_rc_actions.
+
+# EXAMPLE 1:
+# Boot the installer headless, configure the network interface dc0,
+# and start the CGI frontend.
+#
+# ifconfig_dc0="DHCP"
+# pfi_rc_actions="netif dhclient"
+# pfi_frontend="cgi"
+
+# EXAMPLE 2:
+# Boot the installer headless, configure the network interface rl0,
+# and allow ssh'ing into the box as root with the password "sekrit".
+#
+# ifconfig_rl0="DHCP"
+# pfi_sshd_permit_root_login="YES"
+# pfi_set_root_password="sekrit"
+# pfi_rc_actions="netif dhclient sshd"
+# pfi_frontend="none"
diff --git a/nrelease/installer/etc/fstab b/nrelease/installer/etc/fstab
new file mode 100644 (file)
index 0000000..b2254ea
--- /dev/null
@@ -0,0 +1,10 @@
+# $DragonFly: src/nrelease/installer/etc/fstab,v 1.1 2004/07/10 22:26:16 dillon Exp $
+#
+# Device               Mountpoint      FStype  Options         Dump    Pass#
+/dev/acd0a             /               cd9660  ro,noauto       0       0
+swap                   /root           mfs     rw,-C,-s=8192   0       0
+swap                   /var            mfs     rw,-C,-s=8192   0       0
+swap                   /tmp            mfs     rw,-C,-s=8192   0       0
+swap                   /etc            mfs     rw,-C,-s=8192   0       0
+swap                   /dev            mfs     rw,-C,-s=8192,-i=512 0  0
+proc                   /proc           procfs  rw              0       0
diff --git a/nrelease/installer/etc/issue b/nrelease/installer/etc/issue
new file mode 100644 (file)
index 0000000..ef021a4
--- /dev/null
@@ -0,0 +1,7 @@
+Welcome to DragonFly!
+
+To start the installer, login as 'installer'.  To just get a shell prompt,
+login as 'root'.
+
+Once you are booting from your hard drive, you can get rid of this 
+annoying message by removing the file /etc/issue.
diff --git a/nrelease/installer/etc/master.passwd b/nrelease/installer/etc/master.passwd
new file mode 100644 (file)
index 0000000..4f2c573
--- /dev/null
@@ -0,0 +1,22 @@
+# $DragonFly: src/nrelease/installer/etc/master.passwd,v 1.1 2004/07/10 22:26:16 dillon Exp $
+#
+root::0:0::0:0:Charlie &:/root:/bin/csh
+toor:*:0:0::0:0:Bourne-again Superuser:/root:
+installer:*:0:0::0:0:Bourne-again Superuser:/root:/usr/local/bin/installer
+daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
+operator:*:2:5::0:0:System &:/:/sbin/nologin
+bin:*:3:7::0:0:Binaries Commands and Source:/:/sbin/nologin
+tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
+kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
+games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
+news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
+man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
+sshd:*:22:22::0:0:Secure Shell Daemon:/var/empty:/sbin/nologin
+smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/sbin/nologin
+mailnull:*:26:26::0:0:Sendmail Default User:/var/spool/mqueue:/sbin/nologin
+bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
+uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
+xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
+pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
+www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/sbin/nologin
+nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
diff --git a/nrelease/installer/etc/rc.d/pfi b/nrelease/installer/etc/rc.d/pfi
new file mode 100755 (executable)
index 0000000..3e8a872
--- /dev/null
@@ -0,0 +1,158 @@
+#!/bin/sh
+
+# $DragonFly: src/nrelease/installer/etc/rc.d/pfi,v 1.1 2004/07/10 22:26:18 dillon Exp $
+#
+
+# PROVIDE: pfi
+# REQUIRE: inetd
+# KEYWORD: DragonFly
+
+. /etc/rc.subr
+
+name=pfi
+start_cmd="pfi_start"
+stop_cmd=":"
+
+get_pfi_config()
+{
+       [ -r /etc/pfi.conf ] && return 0
+
+       if [ -r $1/pfi.conf ]; then
+               echo " found!"
+               tr -d "\r" < $1/pfi.conf > /etc/pfi.conf
+               echo "pfi_found_on_device='$2'" >> /etc/pfi.conf
+               echo "#@@@@@" >>/etc/rc.conf
+               cat /etc/pfi.conf >>/etc/rc.conf
+               if [ -r /etc/defaults/pfi.conf ]; then
+                       . /etc/defaults/pfi.conf
+               fi
+               . /etc/pfi.conf
+               if [ "$pfi_script" != "" -a -x "$1/$pfi_script" ]; then
+                       $1/$pfi_script
+               fi
+               return 0
+       else
+               return 1
+       fi
+}
+
+look_for_pfi_config_msdos()
+{
+       [ -r /etc/pfi.conf ] && return 0
+
+       for try_device in da0s1 da1s1 fd0 fd1; do
+               echo -n "Looking for pfi.conf on /dev/${try_device}..."
+               if [ ! -e /dev/${try_device} ]; then
+                       ( cd /dev && ./MAKEDEV ${try_device} )
+               fi
+               if mount_msdos -o rdonly /dev/$try_device /mnt ; then
+                       echo -n " /dev/$try_device ok..."
+                       if get_pfi_config /mnt /dev/$try_device; then
+                               umount /mnt
+                               return 0
+                       fi
+                       umount /mnt
+               fi
+               echo " not found"
+       done
+       return 1
+}
+
+look_for_pfi_config_cd9660()
+{
+       [ -r /etc/pfi.conf ] && return 0
+
+       for try_device in acd0c; do
+               echo -n "Looking for pfi.conf on /dev/${try_device}..."
+               if [ ! -e /dev/${try_device} ]; then
+                       ( cd /dev && ./MAKEDEV ${try_device} )
+               fi
+               if mount_cd9660 /dev/$try_device /mnt ; then
+                       echo -n " /dev/$try_device ok..."
+                       if get_pfi_config /mnt /dev/$try_device; then
+                               umount /mnt
+                               return 0
+                       fi
+                       umount /mnt
+               fi
+               echo " not found"
+       done
+       return 1
+}
+
+pfi_start()
+{
+       echo "Starting pfi..."
+
+       # Get the pfi.conf file off the pfi media and into /etc/pfi.conf.
+
+       look_for_pfi_config_cd9660
+       look_for_pfi_config_msdos
+
+       if [ ! -r /etc/pfi.conf ]; then
+               echo '' >/etc/pfi.conf
+       fi
+
+       if [ -r /etc/defaults/pfi.conf ]; then
+               . /etc/defaults/pfi.conf
+       fi
+       . /etc/pfi.conf
+
+       # We can perform any pre-install tasks here by
+       # examining the contents of pfi_* variables.
+
+       # Interpret pfi_sshd_* options.  These basically add settings
+       # to /etc/ssh/sshd_config; it is assumed "sshd" will appear
+       # in pfi_rc_actions to restart sshd.
+
+       case ${pfi_sshd_permit_root_login} in
+       YES)
+               echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
+               ;;
+       *)
+               ;;
+       esac
+
+       case ${pfi_sshd_permit_empty_passwords} in
+       YES)
+               echo "PermitEmptyPasswords yes" >> /etc/ssh/sshd_config
+               ;;
+       *)
+               ;;
+       esac
+
+       # Interpret pfi_set_root_password.  If it is not empty, use
+       # it to set root's LiveCD password.
+
+       if [ "X$pfi_set_root_password" != "X" ]; then
+               echo "$pfi_set_root_password" | \
+                   /usr/sbin/pw usermod root -h 0
+       fi
+
+       # Lastly, the most important pre-install task is to restart
+       # any RCNG scripts listed in pfi_rc_actions with any new
+       # settings that might have been set up by pfi.conf.
+
+       if [ "X$pfi_rc_actions" != "X" ]; then
+               rev_actions=`reverse_list $pfi_rc_actions`
+
+               for _rc_elem in ${rev_actions}; do
+                       echo "Stopping ${_rc_elem}..."
+                       rcstop ${_rc_elem}
+               done
+               for _rc_elem in ${pfi_rc_actions}; do
+                       echo "Starting ${_rc_elem}..."
+                       rcstart ${_rc_elem}
+               done
+       fi
+
+       # Now remove the copy of pfi.conf that we tacked onto
+       # the end of rc.conf so the above would work
+
+       awk '$1=="#@@@@@" || cut { cut = 1 } !cut { print $0 }' \
+           </etc/rc.conf >/etc/rc.conf.new
+       mv /etc/rc.conf.new /etc/rc.conf
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/nrelease/installer/etc/ttys b/nrelease/installer/etc/ttys
new file mode 100644 (file)
index 0000000..5e816ad
--- /dev/null
@@ -0,0 +1,305 @@
+#
+# $FreeBSD: src/etc/etc.i386/ttys,v 1.8 2000/01/29 12:18:03 obrien Exp $
+# $DragonFly: src/nrelease/installer/etc/ttys,v 1.1 2004/07/10 22:26:16 dillon Exp $
+#      @(#)ttys        5.1 (Berkeley) 4/17/89
+#
+# This file specifies various information about terminals on the system.
+# It is used by several different programs.  Common entries for the
+# various columns include:
+#
+# name  The name of the terminal device.
+#
+# getty The program to start running on the terminal.  Typically a
+#       getty program, as the name implies.  Other common entries
+#       include none, when no getty is needed, and xdm, to start the
+#       X Window System.
+#
+# type The initial terminal type for this port.  For hardwired
+#      terminal lines, this will contain the type of terminal used.
+#      For virtual consoles, the correct type is cons25.  Other
+#      common values include network for network connections on
+#      pseudo-terminals, dialup for incoming modem ports, and unknown
+#      when the terminal type cannot be predetermined.
+#
+# status Must be on or off.  If on, init will run the getty program on
+#        the specified port.  If the word "secure" appears, this tty
+#        allows root login.
+#
+# name getty                           type    status          comments
+#
+# If console is marked "insecure", then init will ask for the root password
+# when going to single-user mode.
+console        none                            unknown off secure
+#
+ttyv0  "/usr/libexec/getty Pc"         cons25  on  secure
+# Virtual terminals
+ttyv2  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv3  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv4  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv5  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv6  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv7  "/usr/libexec/getty Pc"         cons25  on  secure
+#ttyv8 "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure
+# Serial terminals
+# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
+ttyd0  "/usr/libexec/getty std.9600"   dialup  on secure
+ttyd1  "/usr/libexec/getty std.9600"   dialup  off secure
+ttyd2  "/usr/libexec/getty std.9600"   dialup  off secure
+ttyd3  "/usr/libexec/getty std.9600"   dialup  off secure
+# Pseudo terminals
+ttyp0  none                    network
+ttyp1  none                    network
+ttyp2  none                    network
+ttyp3  none                    network
+ttyp4  none                    network
+ttyp5  none                    network
+ttyp6  none                    network
+ttyp7  none                    network
+ttyp8  none                    network
+ttyp9  none                    network
+ttypa  none                    network
+ttypb  none                    network
+ttypc  none                    network
+ttypd  none                    network
+ttype  none                    network
+ttypf  none                    network
+ttypg  none                    network
+ttyph  none                    network
+ttypi  none                    network
+ttypj  none                    network
+ttypk  none                    network
+ttypl  none                    network
+ttypm  none                    network
+ttypn  none                    network
+ttypo  none                    network
+ttypp  none                    network
+ttypq  none                    network
+ttypr  none                    network
+ttyps  none                    network
+ttypt  none                    network
+ttypu  none                    network
+ttypv  none                    network
+ttyq0  none                    network
+ttyq1  none                    network
+ttyq2  none                    network
+ttyq3  none                    network
+ttyq4  none                    network
+ttyq5  none                    network
+ttyq6  none                    network
+ttyq7  none                    network
+ttyq8  none                    network
+ttyq9  none                    network
+ttyqa  none                    network
+ttyqb  none                    network
+ttyqc  none                    network
+ttyqd  none                    network
+ttyqe  none                    network
+ttyqf  none                    network
+ttyqg  none                    network
+ttyqh  none                    network
+ttyqi  none                    network
+ttyqj  none                    network
+ttyqk  none                    network
+ttyql  none                    network
+ttyqm  none                    network
+ttyqn  none                    network
+ttyqo  none                    network
+ttyqp  none                    network
+ttyqq  none                    network
+ttyqr  none                    network
+ttyqs  none                    network
+ttyqt  none                    network
+ttyqu  none                    network
+ttyqv  none                    network
+ttyr0  none                    network
+ttyr1  none                    network
+ttyr2  none                    network
+ttyr3  none                    network
+ttyr4  none                    network
+ttyr5  none                    network
+ttyr6  none                    network
+ttyr7  none                    network
+ttyr8  none                    network
+ttyr9  none                    network
+ttyra  none                    network
+ttyrb  none                    network
+ttyrc  none                    network
+ttyrd  none                    network
+ttyre  none                    network
+ttyrf  none                    network
+ttyrg  none                    network
+ttyrh  none                    network
+ttyri  none                    network
+ttyrj  none                    network
+ttyrk  none                    network
+ttyrl  none                    network
+ttyrm  none                    network
+ttyrn  none                    network
+ttyro  none                    network
+ttyrp  none                    network
+ttyrq  none                    network
+ttyrr  none                    network
+ttyrs  none                    network
+ttyrt  none                    network
+ttyru  none                    network
+ttyrv  none                    network
+ttys0  none                    network
+ttys1  none                    network
+ttys2  none                    network
+ttys3  none                    network
+ttys4  none                    network
+ttys5  none                    network
+ttys6  none                    network
+ttys7  none                    network
+ttys8  none                    network
+ttys9  none                    network
+ttysa  none                    network
+ttysb  none                    network
+ttysc  none                    network
+ttysd  none                    network
+ttyse  none                    network
+ttysf  none                    network
+ttysg  none                    network
+ttysh  none                    network
+ttysi  none                    network
+ttysj  none                    network
+ttysk  none                    network
+ttysl  none                    network
+ttysm  none                    network
+ttysn  none                    network
+ttyso  none                    network
+ttysp  none                    network
+ttysq  none                    network
+ttysr  none                    network
+ttyss  none                    network
+ttyst  none                    network
+ttysu  none                    network
+ttysv  none                    network
+ttyP0  none                    network
+ttyP1  none                    network
+ttyP2  none                    network
+ttyP3  none                    network
+ttyP4  none                    network
+ttyP5  none                    network
+ttyP6  none                    network
+ttyP7  none                    network
+ttyP8  none                    network
+ttyP9  none                    network
+ttyPa  none                    network
+ttyPb  none                    network
+ttyPc  none                    network
+ttyPd  none                    network
+ttyPe  none                    network
+ttyPf  none                    network
+ttyPg  none                    network
+ttyPh  none                    network
+ttyPi  none                    network
+ttyPj  none                    network
+ttyPk  none                    network
+ttyPl  none                    network
+ttyPm  none                    network
+ttyPn  none                    network
+ttyPo  none                    network
+ttyPp  none                    network
+ttyPq  none                    network
+ttyPr  none                    network
+ttyPs  none                    network
+ttyPt  none                    network
+ttyPu  none                    network
+ttyPv  none                    network
+ttyQ0  none                    network
+ttyQ1  none                    network
+ttyQ2  none                    network
+ttyQ3  none                    network
+ttyQ4  none                    network
+ttyQ5  none                    network
+ttyQ6  none                    network
+ttyQ7  none                    network
+ttyQ8  none                    network
+ttyQ9  none                    network
+ttyQa  none                    network
+ttyQb  none                    network
+ttyQc  none                    network
+ttyQd  none                    network
+ttyQe  none                    network
+ttyQf  none                    network
+ttyQg  none                    network
+ttyQh  none                    network
+ttyQi  none                    network
+ttyQj  none                    network
+ttyQk  none                    network
+ttyQl  none                    network
+ttyQm  none                    network
+ttyQn  none                    network
+ttyQo  none                    network
+ttyQp  none                    network
+ttyQq  none                    network
+ttyQr  none                    network
+ttyQs  none                    network
+ttyQt  none                    network
+ttyQu  none                    network
+ttyQv  none                    network
+ttyR0  none                    network
+ttyR1  none                    network
+ttyR2  none                    network
+ttyR3  none                    network
+ttyR4  none                    network
+ttyR5  none                    network
+ttyR6  none                    network
+ttyR7  none                    network
+ttyR8  none                    network
+ttyR9  none                    network
+ttyRa  none                    network
+ttyRb  none                    network
+ttyRc  none                    network
+ttyRd  none                    network
+ttyRe  none                    network
+ttyRf  none                    network
+ttyRg  none                    network
+ttyRh  none                    network
+ttyRi  none                    network
+ttyRj  none                    network
+ttyRk  none                    network
+ttyRl  none                    network
+ttyRm  none                    network
+ttyRn  none                    network
+ttyRo  none                    network
+ttyRp  none                    network
+ttyRq  none                    network
+ttyRr  none                    network
+ttyRs  none                    network
+ttyRt  none                    network
+ttyRu  none                    network
+ttyRv  none                    network
+ttyS0  none                    network
+ttyS1  none                    network
+ttyS2  none                    network
+ttyS3  none                    network
+ttyS4  none                    network
+ttyS5  none                    network
+ttyS6  none                    network
+ttyS7  none                    network
+ttyS8  none                    network
+ttyS9  none                    network
+ttySa  none                    network
+ttySb  none                    network
+ttySc  none                    network
+ttySd  none                    network
+ttySe  none                    network
+ttySf  none                    network
+ttySg  none                    network
+ttySh  none                    network
+ttySi  none                    network
+ttySj  none                    network
+ttySk  none                    network
+ttySl  none                    network
+ttySm  none                    network
+ttySn  none                    network
+ttySo  none                    network
+ttySp  none                    network
+ttySq  none                    network
+ttySr  none                    network
+ttySs  none                    network
+ttySt  none                    network
+ttySu  none                    network
+ttySv  none                    network
diff --git a/nrelease/installer/usr/local/bin/installer b/nrelease/installer/usr/local/bin/installer
new file mode 100755 (executable)
index 0000000..8b799f0
--- /dev/null
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# installer - start installer frontend and backend as per pfi config.
+# $Id: installer,v 1.1 2004/07/09 23:25:40 cpressey Exp $
+# $DragonFly: src/nrelease/installer/usr/local/bin/installer,v 1.1 2004/07/10 22:26:19 dillon Exp $
+
+# auto-login on ttyv0.
+# backend (and all other logging) on ttyv0 (console.)
+# curses frontend starts on ttyv1.
+# use vidcontrol -s 2 to switch to ttyv1.
+
+### SUBS ###
+
+installer_start()
+{
+       echo -n "Starting installer.  "
+
+       if [ -r /etc/defaults/pfi.conf ]; then
+               . /etc/defaults/pfi.conf
+       fi
+
+       if [ -r /etc/pfi.conf ]; then
+               echo "Reading /etc/pfi.conf ..."
+               . /etc/pfi.conf
+       else
+               echo "/etc/pfi.conf not found, starting interactive install."
+       fi
+
+       # We can set up any install variables and such
+       # here by examining pfi_* variables.
+
+       if [ "X$pfi_run" != "X" ]; then
+               pfi_frontend=none
+               $pfi_run
+       fi
+
+       case "X$pfi_dfui_transport" in
+       Xcaps)
+               sysctl kern.caps_enabled=1
+               ;;
+       Xnpipe)
+               ;;
+       *)
+               echo "Unsupported DFUI transport '$pfi_dfui_transport'."
+               return
+               ;;
+       esac
+
+       case "X$pfi_frontend" in
+       Xcgi)
+               cp /usr/local/sbin/dfuibe_installer /var/run/dfuibe_installer
+               /var/run/dfuibe_installer -r test -t $pfi_dfui_transport
+               RESULT=$?
+               ;;
+       Xcurses)
+               sysctl kern.caps_enabled=1
+               ps auwwwxxx > /tmp/ps.txt
+               if grep -q dfuife_curses /tmp/ps.txt; then
+                       # Frontend is already running.
+               else
+                       /usr/local/sbin/dfuife_curses -r installer \
+                           -t $pfi_dfui_transport \
+                           -b /usr/local/share/dfuife_curses/fred.txt \
+                           2>/dev/ttyv0 </dev/ttyv1 >/dev/ttyv1 &
+               fi
+               sleep 1
+               vidcontrol -s 2
+               cp /usr/local/sbin/dfuibe_installer /var/run/dfuibe_installer
+               /var/run/dfuibe_installer -r installer -t $pfi_dfui_transport
+               RESULT=$?
+               sleep 1
+               killall dfuife_curses
+               vidcontrol -s 1
+               ;;
+       Xnone)
+               RESULT=0
+               ;;
+       *)
+               echo "Unknown installer frontend '$pfi_frontend'."
+               return
+               ;;
+       esac
+
+       case "$RESULT" in
+       0)
+               ;;
+       5)
+               echo "Rebooting..."
+               shutdown -r now
+               ;;
+       *)
+               ;;
+       esac
+}
+
+### MAIN ###
+
+ps auwwwxxx > /tmp/ps.txt
+if grep -q dfuibe_installer /tmp/ps.txt; then
+       # Installer is already running. Log in normally.
+else
+       installer_start
+fi
+
+rm -f /tmp/ps.txt
+
+### END of installer ###
diff --git a/nrelease/installer/usr/local/etc/thttpd.conf b/nrelease/installer/usr/local/etc/thttpd.conf
new file mode 100644 (file)
index 0000000..40f9dd3
--- /dev/null
@@ -0,0 +1,7 @@
+# $DragonFly: src/nrelease/installer/usr/local/etc/thttpd.conf,v 1.1 2004/07/10 22:26:20 dillon Exp $
+#
+dir=/usr/local/www
+user=root
+cgipat=*.cgi
+logfile=/var/log/thttpd.log
+pidfile=/var/run/thttpd.pid
diff --git a/nrelease/installer/usr/local/share/pristine/etc/master.passwd b/nrelease/installer/usr/local/share/pristine/etc/master.passwd
new file mode 100644 (file)
index 0000000..64edb13
--- /dev/null
@@ -0,0 +1,22 @@
+# $DragonFly: src/nrelease/installer/usr/local/share/pristine/etc/Attic/master.passwd,v 1.1 2004/07/10 22:26:21 dillon Exp $
+#
+root::0:0::0:0:Charlie &:/root:/bin/csh
+toor:*:0:0::0:0:Bourne-again Superuser:/root:
+installer:*:0:0::0:0:Bourne-again Superuser:/root:
+daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
+operator:*:2:5::0:0:System &:/:/sbin/nologin
+bin:*:3:7::0:0:Binaries Commands and Source:/:/sbin/nologin
+tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
+kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
+games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
+news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
+man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
+sshd:*:22:22::0:0:Secure Shell Daemon:/var/empty:/sbin/nologin
+smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/sbin/nologin
+mailnull:*:26:26::0:0:Sendmail Default User:/var/spool/mqueue:/sbin/nologin
+bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
+uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
+xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
+pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
+www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/sbin/nologin
+nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
diff --git a/nrelease/installer/usr/local/share/pristine/etc/ttys b/nrelease/installer/usr/local/share/pristine/etc/ttys
new file mode 100644 (file)
index 0000000..c0b6ad1
--- /dev/null
@@ -0,0 +1,307 @@
+#
+# $FreeBSD: src/etc/etc.i386/ttys,v 1.8 2000/01/29 12:18:03 obrien Exp $
+# $DragonFly: src/nrelease/installer/usr/local/share/pristine/etc/Attic/ttys,v 1.1 2004/07/10 22:26:21 dillon Exp $
+#      @(#)ttys        5.1 (Berkeley) 4/17/89
+#
+# This file specifies various information about terminals on the system.
+# It is used by several different programs.  Common entries for the
+# various columns include:
+#
+# name  The name of the terminal device.
+#
+# getty The program to start running on the terminal.  Typically a
+#       getty program, as the name implies.  Other common entries
+#       include none, when no getty is needed, and xdm, to start the
+#       X Window System.
+#
+# type The initial terminal type for this port.  For hardwired
+#      terminal lines, this will contain the type of terminal used.
+#      For virtual consoles, the correct type is cons25.  Other
+#      common values include network for network connections on
+#      pseudo-terminals, dialup for incoming modem ports, and unknown
+#      when the terminal type cannot be predetermined.
+#
+# status Must be on or off.  If on, init will run the getty program on
+#        the specified port.  If the word "secure" appears, this tty
+#        allows root login.
+#
+# name getty                           type    status          comments
+#
+# If console is marked "insecure", then init will ask for the root password
+# when going to single-user mode.
+console        none                            unknown off secure
+#
+ttyv0  "/usr/libexec/getty Pc"         cons25  on  secure
+# Virtual terminals
+ttyv1  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv2  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv3  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv4  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv5  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv6  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv7  "/usr/libexec/getty Pc"         cons25  on  secure
+ttyv8  "/usr/libexec/getty Pc"         cons25  on  secure
+#ttyv8 "/usr/X11R6/bin/xdm -nodaemon"  xterm   on  secure
+# Serial terminals
+# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
+ttyd0  "/usr/libexec/getty std.9600"   dialup  off secure
+ttyd1  "/usr/libexec/getty std.9600"   dialup  off secure
+ttyd2  "/usr/libexec/getty std.9600"   dialup  off secure
+ttyd3  "/usr/libexec/getty std.9600"   dialup  off secure
+# Pseudo terminals
+ttyp0  none                    network
+ttyp1  none                    network
+ttyp2  none                    network
+ttyp3  none                    network
+ttyp4  none                    network
+ttyp5  none                    network
+ttyp6  none                    network
+ttyp7  none                    network
+ttyp8  none                    network
+ttyp9  none                    network
+ttypa  none                    network
+ttypb  none                    network
+ttypc  none                    network
+ttypd  none                    network
+ttype  none                    network
+ttypf  none                    network
+ttypg  none                    network
+ttyph  none                    network
+ttypi  none                    network
+ttypj  none                    network
+ttypk  none                    network
+ttypl  none                    network
+ttypm  none                    network
+ttypn  none                    network
+ttypo  none                    network
+ttypp  none                    network
+ttypq  none                    network
+ttypr  none                    network
+ttyps  none                    network
+ttypt  none                    network
+ttypu  none                    network
+ttypv  none                    network
+ttyq0  none                    network
+ttyq1  none                    network
+ttyq2  none                    network
+ttyq3  none                    network
+ttyq4  none                    network
+ttyq5  none                    network
+ttyq6  none                    network
+ttyq7  none                    network
+ttyq8  none                    network
+ttyq9  none                    network
+ttyqa  none                    network
+ttyqb  none                    network
+ttyqc  none                    network
+ttyqd  none                    network
+ttyqe  none                    network
+ttyqf  none                    network
+ttyqg  none                    network
+ttyqh  none                    network
+ttyqi  none                    network
+ttyqj  none                    network
+ttyqk  none                    network
+ttyql  none                    network
+ttyqm  none                    network
+ttyqn  none                    network
+ttyqo  none                    network
+ttyqp  none                    network
+ttyqq  none                    network
+ttyqr  none                    network
+ttyqs  none                    network
+ttyqt  none                    network
+ttyqu  none                    network
+ttyqv  none                    network
+ttyr0  none                    network
+ttyr1  none                    network
+ttyr2  none                    network
+ttyr3  none                    network
+ttyr4  none                    network
+ttyr5  none                    network
+ttyr6  none                    network
+ttyr7  none                    network
+ttyr8  none                    network
+ttyr9  none                    network
+ttyra  none                    network
+ttyrb  none                    network
+ttyrc  none                    network
+ttyrd  none                    network
+ttyre  none                    network
+ttyrf  none                    network
+ttyrg  none                    network
+ttyrh  none                    network
+ttyri  none                    network
+ttyrj  none                    network
+ttyrk  none                    network
+ttyrl  none                    network
+ttyrm  none                    network
+ttyrn  none                    network
+ttyro  none                    network
+ttyrp  none                    network
+ttyrq  none                    network
+ttyrr  none                    network
+ttyrs  none                    network
+ttyrt  none                    network
+ttyru  none                    network
+ttyrv  none                    network
+ttys0  none                    network
+ttys1  none                    network
+ttys2  none                    network
+ttys3  none                    network
+ttys4  none                    network
+ttys5  none                    network
+ttys6  none                    network
+ttys7  none                    network
+ttys8  none                    network
+ttys9  none                    network
+ttysa  none                    network
+ttysb  none                    network
+ttysc  none                    network
+ttysd  none                    network
+ttyse  none                    network
+ttysf  none                    network
+ttysg  none                    network
+ttysh  none                    network
+ttysi  none                    network
+ttysj  none                    network
+ttysk  none                    network
+ttysl  none                    network
+ttysm  none                    network
+ttysn  none                    network
+ttyso  none                    network
+ttysp  none                    network
+ttysq  none                    network
+ttysr  none                    network
+ttyss  none                    network
+ttyst  none                    network
+ttysu  none                    network
+ttysv  none                    network
+ttyP0  none                    network
+ttyP1  none                    network
+ttyP2  none                    network
+ttyP3  none                    network
+ttyP4  none                    network
+ttyP5  none                    network
+ttyP6  none                    network
+ttyP7  none                    network
+ttyP8  none                    network
+ttyP9  none                    network
+ttyPa  none                    network
+ttyPb  none                    network
+ttyPc  none                    network
+ttyPd  none                    network
+ttyPe  none                    network
+ttyPf  none                    network
+ttyPg  none                    network
+ttyPh  none                    network
+ttyPi  none                    network
+ttyPj  none                    network
+ttyPk  none                    network
+ttyPl  none                    network
+ttyPm  none                    network
+ttyPn  none                    network
+ttyPo  none                    network
+ttyPp  none                    network
+ttyPq  none                    network
+ttyPr  none                    network
+ttyPs  none                    network
+ttyPt  none                    network
+ttyPu  none                    network
+ttyPv  none                    network
+ttyQ0  none                    network
+ttyQ1  none                    network
+ttyQ2  none                    network
+ttyQ3  none                    network
+ttyQ4  none                    network
+ttyQ5  none                    network
+ttyQ6  none                    network
+ttyQ7  none                    network
+ttyQ8  none                    network
+ttyQ9  none                    network
+ttyQa  none                    network
+ttyQb  none                    network
+ttyQc  none                    network
+ttyQd  none                    network
+ttyQe  none                    network
+ttyQf  none                    network
+ttyQg  none                    network
+ttyQh  none                    network
+ttyQi  none                    network
+ttyQj  none                    network
+ttyQk  none                    network
+ttyQl  none                    network
+ttyQm  none                    network
+ttyQn  none                    network
+ttyQo  none                    network
+ttyQp  none                    network
+ttyQq  none                    network
+ttyQr  none                    network
+ttyQs  none                    network
+ttyQt  none                    network
+ttyQu  none                    network
+ttyQv  none                    network
+ttyR0  none                    network
+ttyR1  none                    network
+ttyR2  none                    network
+ttyR3  none                    network
+ttyR4  none                    network
+ttyR5  none                    network
+ttyR6  none                    network
+ttyR7  none                    network
+ttyR8  none                    network
+ttyR9  none                    network
+ttyRa  none                    network
+ttyRb  none                    network
+ttyRc  none                    network
+ttyRd  none                    network
+ttyRe  none                    network
+ttyRf  none                    network
+ttyRg  none                    network
+ttyRh  none                    network
+ttyRi  none                    network
+ttyRj  none                    network
+ttyRk  none                    network
+ttyRl  none                    network
+ttyRm  none                    network
+ttyRn  none                    network
+ttyRo  none                    network
+ttyRp  none                    network
+ttyRq  none                    network
+ttyRr  none                    network
+ttyRs  none                    network
+ttyRt  none                    network
+ttyRu  none                    network
+ttyRv  none                    network
+ttyS0  none                    network
+ttyS1  none                    network
+ttyS2  none                    network
+ttyS3  none                    network
+ttyS4  none                    network
+ttyS5  none                    network
+ttyS6  none                    network
+ttyS7  none                    network
+ttyS8  none                    network
+ttyS9  none                    network
+ttySa  none                    network
+ttySb  none                    network
+ttySc  none                    network
+ttySd  none                    network
+ttySe  none                    network
+ttySf  none                    network
+ttySg  none                    network
+ttySh  none                    network
+ttySi  none                    network
+ttySj  none                    network
+ttySk  none                    network
+ttySl  none                    network
+ttySm  none                    network
+ttySn  none                    network
+ttySo  none                    network
+ttySp  none                    network
+ttySq  none                    network
+ttySr  none                    network
+ttySs  none                    network
+ttySt  none                    network
+ttySu  none                    network
+ttySv  none                    network