xref: /dragonfly/share/examples/rconfig/auto.sh (revision ec21d9fb)
1#!/bin/csh
2#
3# A file like this is typically copied to /usr/local/etc/rconfig/auto.sh on
4# the rconfig server and the rconfig demon is run via 'rconfig -s -a'.  When
5# you boot the DragonFly CD you have to bring up the network, typically
6# via 'dhclient interfacename', then run 'rconfig -a' or
7# 'rconfig -a ip_of_server' if the server is not on the same LAN.
8#
9# WARNING!  THIS SCRIPT WILL COMPLETELY WIPE THE DISK!
10
11set disk = ad0
12set slice = s1
13set xdisk = $disk$slice
14
15# Refuse to do anything if the machine wasn't booted from CD
16#
17set cdboot = 0
18foreach i ( `df / | awk '{ print $1; }'` )
19    if ( $i =~ acd* ) then
20	set cdboot = 1
21    endif
22end
23
24if ( $cdboot == 0 ) then
25    echo "Aborting auto init script, machine was not booted from CD"
26    exit 1
27endif
28
29# Wipe the disk entirely
30#
31
32echo "FDISK - ALL DATA ON THE DRIVE WILL BE LOST"
33foreach i ( 5 4 3 2 1 )
34    echo -n " $i"
35    sleep 1
36end
37
38dd if=/dev/zero of=/dev/$disk bs=32k count=16
39fdisk -IB $disk
40boot0cfg -B $disk
41boot0cfg -v $disk
42dd if=/dev/zero of=/dev/$xdisk bs=32k count=16
43
44echo "DISKLABEL"
45sleep 1
46
47disklabel -B -r -w $xdisk
48disklabel $xdisk > /tmp/disklabel.$xdisk
49cat >> /tmp/disklabel.$xdisk << EOF
50a: 256m * 4.2BSD
51b: 1024m * swap
52d: 256m * 4.2BSD
53e: 256m * 4.2BSD
54f: 6144m * 4.2BSD
55g: * * 4.2BSD
56EOF
57disklabel -R $xdisk /tmp/disklabel.$xdisk
58disklabel $xdisk
59
60echo "NEWFS"
61sleep 1
62
63newfs /dev/${xdisk}a
64newfs -U /dev/${xdisk}d
65newfs -U /dev/${xdisk}e
66newfs -U /dev/${xdisk}f
67newfs -U /dev/${xdisk}g
68
69echo "MOUNT"
70sleep 1
71
72mount /dev/${xdisk}a /mnt
73mkdir /mnt/var
74mkdir /mnt/tmp
75mkdir /mnt/usr
76mkdir /mnt/home
77
78mount /dev/${xdisk}d /mnt/var
79mount /dev/${xdisk}e /mnt/tmp
80mount /dev/${xdisk}f /mnt/usr
81mount /dev/${xdisk}g /mnt/home
82
83echo "CPDUP ROOT"
84cpdup / /mnt
85echo "CPDUP VAR"
86cpdup /var /mnt/var
87echo "CPDUP ETC"
88cpdup /etc.hdd /mnt/etc
89echo "CPDUP DEV"
90cpdup /dev /mnt/dev
91echo "CPDUP USR"
92cpdup /usr /mnt/usr
93
94echo "CLEANUP"
95chmod 1777 /mnt/tmp
96rm -rf /mnt/var/tmp
97ln -s /tmp /mnt/var/tmp
98
99cat >/mnt/etc/fstab << EOF
100# Example fstab based on /README.
101#
102# Device                Mountpoint      FStype  Options         Dump    Pass#
103/dev/${xdisk}a		/		ufs	rw		1	1
104/dev/${xdisk}b		none		swap	sw		0	0
105/dev/${xdisk}d		/var		ufs	rw		2	2
106/dev/${xdisk}e		/tmp		ufs	rw		2	2
107/dev/${xdisk}f		/usr		ufs	rw		2	2
108/dev/${xdisk}g		/home		ufs	rw		2	2
109proc			/proc		procfs	rw		0	0
110# example MFS remount (for a pristine MFS filesystem do not use -C)
111#swap			/mnt		mfs	rw,-C,-s=4000	0	0
112EOF
113
114cat >/mnt/etc/rc.conf << EOF
115ifconfig_em0="DHCP"
116sshd_enable="YES"
117sendmail_enable="NONE"
118dumpdev="/dev/${xdisk}b"
119EOF
120
121if ( ! -d /mnt/root/.ssh ) then
122    mkdir /mnt/root/.ssh
123endif
124cat > /mnt/root/.ssh/authorized_keys << EOF
125# put your ssh public keys here so you can ssh into the 
126# newly configured machine
127EOF
128
129# Allow public-key-only access to the root account
130#
131sed -e 's/#PermitRootLogin no/PermitRootLogin without-password/' < /mnt/etc/ssh/sshd_config > /mnt/etc/ssh/sshd_config.new
132mv -f /mnt/etc/ssh/sshd_config.new /mnt/etc/ssh/sshd_config
133
134