blob: 4dfd5fc32a094bc592305f3b0ae5717b4ea93439 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
#!/bin/bash
#CD=/mnt/cd
. /etc/profile
. /etc/systemconfig
TFTP=/data/srv/tftp
CD=/data/srv/tftp/live
DESTCD=/data/srv/tftp/CD
BASE=/data/srv/tftp/masterbuild
MODULES=$DESTCD/MythVantage/base/
myip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
SRCFILES=$BASE/mnt/live/mnt/MythVantage/base/
function log () {
echo $1
}
function check_xvfb () {
export DISPLAY=127.0.0.1:25
Xvfb -ac :25 &
}
function create_base_image() {
echo $SRCFILES
if [ -f $SRCFILES/data.lzm ]
then
mkdir $HOST_IMG_DIR
cd $SRCFILES
echo "Creating image.." > $BASE/tmp/.install_state
LIST=`ls *.lzm`
for i in $LIST
do
echo $i
echo $i > $BASE/tmp/.install_percent
lzm2dir $i \/$HOST_IMG_DIR
done
for i in sys proc dev tmp
do
mkdir /$HOST_IMG_DIR/$i
done
chmod 777 /$HOST_IMG_DIR/tmp
mknod /$HOST_IMG_DIR/dev/null c 1 3
mknod /$HOST_IMG_DIR/dev/null c 1 5
mknod /$HOST_IMG_DIR/dev/console c 5 1
chmod +s /$HOST_IMG_DIR/usr/bin/Xorg
chmod +s /$HOST_IMG_DIR/usr/bin/crontab
chmod +s /$HOST_IMG_DIR/usr/bin/sudo
chmod +s /$HOST_IMG_DIR/bin/mount
#copy fstab from masterbuild
cp -f $BASE/etc/fstab /$HOST_IMG_DIR/etc/fstab
echo "Done: installing data" > $BASE/tmp/.install_state
return 0
else
echo "Error: no modules" > $BASE/tmp/.install_state
log "couldn't find modules to install"
return 1
fi
}
function configure_image () {
echo "Configuring system" > $BASE/tmp/.install_state
cp -f $BASE/etc/systemconfig $HOST_IMG_DIR/etc/systemconfig
chown root:mythtv $HOST_IMG_DIR/etc/systemconfig
chmod 775 "$HOST_IMG_DIR" /etc/systemconfig
cp /etc/mtab $HOST_IMG_DIR/etc/mtab
mount --bind /dev $HOST_IMG_DIR/dev
chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,this_is_install
#copy syssettings template to here.
SE=$BASE$TEMPLATES/settings/syssettings
mkdir -p $HOST_IMG_DIR/$TEMPLATES/settings/syssettings
cp -rp $SE/* ${HOST_IMG_DIR}/$TEMPLATES/settings/syssettings
chown root:mythtv $HOST_IMG_DIR/etc/systemconfig
chown -R mythtv:mythtv $HOST_IMG_DIR/$TEMPLATES/settings/syssettings
chmod -R 775 $HOST_IMG_DIR/$TEMPLATES/settings/syssettings
#update remotedb with this host settings
OLDDISPLAY=$DISPLAY
check_xvfb
chroot $HOST_IMG_DIR $MV_ROOT/bin/MythVantage -t restore,default_1
chroot $HOST_IMG_DIR $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings
if [ ! $? = 0 ]
then
touch $mountpoint/tmp/.dbsysfailed
chmod 777 $mountpoint/tmp/.dbsysfailed
else
#Run second time
chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,this_is_install
chroot "$HOST_IMG_DIR" $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL
fi
chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh advanced,this_is_install
cp -f $BASE/etc/X11/xorg.conf $HOST_IMG_DIR/etc/X11/xorg.conf
echo "Done" > $BASE/tmp/.install_state
DISPLAY=$OLDDISPLAY
#cp /tmp/mythvantage_install.log $HOST_IMG_DIR/var/log/
}
function create_tftp_boot () {
CFGFILE=$TFTP/pxelinux.cfg/01-$2
echo "DEFAULT mythfe" > $CFGFILE
echo "LABEL mythfe" >> $CFGFILE
echo "kernel masterbuild/boot/vmlinuz26STB" >> $CFGFILE
echo "append vga=normal root=/dev/nfs rw netboot nfsroot=$myip:/data/srv/tftp/$1 ip=dhcp init=/sbin/runit" >> $CFGFILE
echo "TIMEOUT 2" >> $CFGFILE
}
function create_nfs_export () {
echo "/data/srv/tftp/$1 *(rw,no_root_squash,anonuid=1000,anongid=1000) " >> /etc/exports
exportfs -arv
}
#-------------------------------------------------------------------------------MAIN PROGRAM ---------------------------------------------------------------------
if [ x$1 = x -o x$2 = x ]
then
echo "usage: hostname macaddress"
exit 1
fi
image_name=$1
mac_address=`echo $2| tr "[:upper:]" "[:lower:]"`
echo "using image_name of $image_name"
echo "using mac_address of $mac_address"
HOST_IMG_DIR=$TFTP/$1
create_base_image $image_name
configure_image
umount $HOST_IMG_DIR/dev
create_tftp_boot $image_name $mac_address
create_nfs_export $image_name
#create_dhcp_entry $mac_address
|