Unable to install the latest FreePBX Distro on Raid configurations?

Install CD boots up and after a bit starts the pre-install scripts and then …

“The following error was found while parsing your kickstart configuration:
The following Problem occurred on line 1 of the kickstart file:
Specified nonexistent disk sda in partition command”

Has done this on 2 different systems … one with Raid1 and another with Raid5.
Can someone please tell me how to work around the install issue with sda?

Is it seeing the CDrom drive as sda?
How do I do install manually? Whats the magic button I need to press?
I am kind of confused why the install doesn’t have some sort of intelligence…
Maybe this is a CentOS 5 issue?

Also … is it ok to run yum update after installation and not break anything?

PS: I do NOT want to use software Raid, so please dont suggest anything of the like. tnx. :slight_smile:

This appears to be the kickstart file that is linked to a URL (I cant change it?)

#CentOS FreePBX Distro Kickstart
#Copyright Schmooze Com. Inc 2010

#Set out logging level
logging --level=debug

#System authorization infomation
auth --useshadow --enablemd5

#Network information
network --bootproto=query --device=eth0

#Language modules to install
lang en_US
keyboard us

#Use non-interactive text mode install
text

#Install Red Hat Linux instead of upgrade
install

The place to check for packages and other install related files (such as initrd)

url --url http://yum.freepbxdistro.org/centos/5/os/i386

#Firewall configuration
firewall --disabled
selinux --disabled

#Do not configure XWindows
skipx

Define Repos for install process.

repo --name=Centos-extras --baseurl=http://yum.freepbxdistro.org/centos/5/extras/i386
repo --name=Centos-base --baseurl=http://yum.freepbxdistro.org/centos/5/os/i386
repo --name=Centos-updates --baseurl=http://yum.freepbxdistro.org/centos/5/updates/i386/
repo --name=pbx --baseurl=http://yum.freepbxdistro.org/pbx/1.8.x.x/i386
repo --name=kernel-dependent --baseurl=http://yum.freepbxdistro.org/kernel-dependent/2.6.18-194.17.1/i386

System bootloader configuration

bootloader --location=mbr

Clear the Master Boot Record

zerombr yes

Partition clearing information

clearpart --all --initlabel

Reboot when complete to load first boot script

reboot --eject

Now bring in the actual partition setup

%include /tmp/part-include

Pre is where we do things that need to be done before we install

%pre

Add an asterisk user

groupadd -r asterisk
useradd -r -M -s -g asterisk /sbin/nologin -d /var/lib/asterisk asterisk 2> /dev/null || :

Detect hard drives

Find the number of hard drives we have, if we find only one, no raid, more then one? raid.

harddrives=list-harddrives | wc -l
count=0

if [ “$harddrives” -gt “1” ]
then
for disk in list-harddrives | awk '{print $1}'
do
# Creates the BOOT partition that is 100mb in size
echo “part raid.0$count --size=100 --ondisk=$disk --asprimary” >> /tmp/part-include

	# Creates the SWAP partition (1024mb)
	echo "part raid.1$count --size=1024 --ondisk=$disk" >> /tmp/part-include

	# Creates the root (/) partition that is able to grow to fill
	echo "part raid.2$count --size=100 --grow --ondisk=$disk" >> /tmp/part-include

	((count = count + 1))
done

((count = count - 1))

echo -n "raid /boot --level=1 --device=md0 --fstype=ext3 " >> /tmp/part-include
for disk in `seq 0 $count`
do
	echo -n "raid.0$disk " >> /tmp/part-include
done
echo "" >> /tmp/part-include

echo -n "raid swap --level=1 --device=md1 --fstype=swap " >> /tmp/part-include
for disk in `seq 0 $count`
do
	echo -n "raid.1$disk " >> /tmp/part-include
done
echo "" >> /tmp/part-include

echo -n "raid / --level=1 --device=md2 --fstype=ext3 " >> /tmp/part-include
for disk in `seq 0 $count`
do
	echo -n "raid.2$disk " >> /tmp/part-include
done
echo "" >> /tmp/part-include

else
echo “part /boot --fstype ext3 --size=100” >> /tmp/part-include
echo “part / --fstype ext3 --size=1024 --grow” >> /tmp/part-include
echo “part swap --size=256 --grow --maxsize=768” >> /tmp/part-include
fi

Make all disks bootable

for disk in list-harddrives | awk '{print $1}'
do
echo “device (hd0) /dev/$disk” >> /tmp/grub-include
echo “root (hd0,0)” >> /tmp/grub-include
echo “setup (hd0)” >> /tmp/grub-include
done

echo “quit” >> /tmp/grub-include

/sbin/grub --batch <<EOT 1>/dev/null 2>/dev/null
cat /tmp/grub-include
EOT

Package install information

%packages

NOTE: The Kernel packages need to match what we tell Sangoma to compile Wanpipe against or we will have issues

kernel-2.6.18-194.17.1.el5
kernel-devel-2.6.18-194.17.1.el5
kernel-headers-2.6.18-194.17.1.el5

Vim goodies

vim-enhanced-7.0.109-6.el5

Apache

httpd-2.2.3-43.el5.centos.3
php-eaccelerator-0.9.6-1.el5.pp

MySQL

mysql-5.0.77-4.el5_5.3
mysql-server-5.0.77-4.el5_5.3

PHP

php-5.1.6-27.el5
php-gd-5.1.6-27.el5
php-pdo-5.1.6-27.el5
php-pear-1.4.9-6.el5
php-pear-DB-1.7.13-1.el5.centos
php-mysql-5.1.6-27.el5
zend-optimizer-3.3.3-3

Various utilities

dnsmasq-2.45-1.1.el5_3
lm_sensors-2.10.7-9.el5
gcc-4.1.2-48.el5
gcc-c+±4.1.2-48.el5
gdb-7.0.1-23.el5_5.2.i386
incron-0.5.9-1.el5.rf
screen-4.0.3-1.el5_4.1

Network Tools

ntp-4.2.2p1-9.el5.centos.2.1
nmap-4.11-1.1
openvpn-2.0.9-1.el5.rf

Dahdi

kmod-dahdi-linux-2.4.1.2-1_centos5.2.6.18_194.17.1.el5
dahdi-linux-kmod-debuginfo-2.4.1.2-1_centos5.2.6.18_194.17.1.el5
dahdi-firmware-2.4.1.2-1_centos5
dahdi-firmware-oct6114-064-1.05.01-1_centos5
dahdi-firmware-oct6114-128-1.05.01-1_centos5
dahdi-firmware-vpmadt032-1.07-1_centos5
dahdi-firmware-tc400m-MR6.12-1_centos5
dahdi-linux-2.4.1.2-1_centos5
dahdi-linux-devel-2.4.1.2-1_centos5
dahdi-linux-debuginfo-2.4.1.2-1_centos5
dahdi-tools-2.4.1-1_centos5
dahdi-tools-debuginfo-2.4.1-1_centos5
dahdi-tools-doc-2.4.1-1_centos5
libpri-1.4.11.5-1_centos5
libpri-debuginfo-1.4.11.5-1_centos5
libpri-devel-1.4.11.5-1_centos5
libtonezone-2.4.1-1_centos5
libtonezone-devel-2.4.1-1_centos5

Asterisk

asterisk18-1.8.4.2-1_centos5
asterisk18-addons-1.8.4.2-1_centos5
asterisk18-addons-bluetooth-1.8.4.2-1_centos5
asterisk18-addons-core-1.8.4.2-1_centos5
asterisk18-addons-mysql-1.8.4.2-1_centos5
asterisk18-addons-ooh323-1.8.4.2-1_centos5
asterisk18-core-1.8.4.2-1_centos5
asterisk18-curl-1.8.4.2-1_centos5
asterisk18-dahdi-1.8.4.2-1_centos5
asterisk18-voicemail-1.8.4.2-1_centos5
asterisk18-curl-1.8.4.2-1_centos5
asterisk-sounds-core-en-alaw-1.4.19-1_centos5
asterisk-sounds-core-en-ulaw-1.4.19-1_centos5
asterisk-sounds-core-en-gsm-1.4.19-1_centos5
asterisk-sounds-extra-en-alaw-1.4.9-1_centos5
asterisk-sounds-extra-en-ulaw-1.4.9-1_centos5
asterisk-sounds-extra-en-gsm-1.4.9-1_centos5
moh-sounds-1.0.0-2

Flite

asterisk18-app_flite-0.6-5
flite-1.3-9

TFTP and FTP Server

tftp-server-0.49-2.el5.centos
vsftpd-2.0.5-16.el5_5.1.i386

Java

jre-1.6.0_18-fcs

FreePBX

freepbx-2.9.0-8

Play audio files from asterisk

mpg123-1.9.1-1.el5.rf
sox-12.18.1-1
esound-devel-0.2.36-3.i386
libtool-ltdl-1.5.22-7.el5_4.i386

Install postifx to handle email

-sendmail
postfix-2.3.3-2.1.el5_2

fax conversion applications

libtiff-3.8.2-7.el5_5.5
libtiff-devel-3.8.2-7.el5_5.5.i386
ghostscript-8.70-9custom

SVN

subversion-1.4.2-4.el5_3.1.i386

Wanpipe for Sangoma Cards

Forced to Move to First Boot since the anaconda Kernel is older than what we are using in the distro.

FreePBX Landing Page

freepbxdistro-header-2.9.0-5

Sysadmin RPM for Sysadmin Module

Moved to Firstboot so we can create the incrontab

Fail2ban RPM for Security

fail2ban-0.1-1

Install iksemel for SRTP

iksemel-1.4-1.el5.rf.i386
iksemel-devel-1.4-1.el5.rf.i386

Install spandsp for faxing

spandsp-0.0.6-1.i386
spandsp-debuginfo-0.0.6-1
spandsp-devel-0.0.6-1

%post

ntp settings

echo “driftfile /var/lib/ntp/drift” > /etc/ntp.conf
echo “server 0.pool.ntp.org” >> /etc/ntp.conf
echo “server 1.pool.ntp.org” >> /etc/ntp.conf
echo “server 2.pool.ntp.org” >> /etc/ntp.conf
echo “server 127.127.1.0” >> /etc/ntp.conf
echo “fudge 127.127.1.0 stratum 10” >> /etc/ntp.conf

cp -f /boot/grub/grub.conf /boot/grub/grub.conf.old
sed -e “s/hiddenmenu/#hiddenmenu/” /boot/grub/grub.conf.old > /boot/grub/grub.conf

cp -f /boot/grub/grub.conf /boot/grub/grub.conf.old2
sed -e “s/default=0/default=1/” /boot/grub/grub.conf.old2 > /boot/grub/grub.conf

cp -f /etc/xinetd.d/tftp /tmp/xinetd.tftp.old
sed -e “s/\Wdisable\Wyes/ disable = no/” /tmp/xinetd.tftp.old > /etc/xinetd.d/tftp

Change which user apache runs as so freepbx can modify asterisk files

sed -i “s/^User apache$/User asterisk/” /etc/httpd/conf/httpd.conf
sed -i “s/^Group apache$/Group asterisk/” /etc/httpd/conf/httpd.conf

The standard timeout will prevent us from downloading modules and installing them

sed -i “s/^Timeout 120$/Timeout 300/” /etc/httpd/conf/httpd.conf

Change the port we listen on for web connections

sed -i “s/^Listen 80$/Listen TODO/” /etc/httpd/conf/httpd.conf

Improve the amount of memory php can use

sed -i “s/^memory_limit = 16M.*$/memory_limit = 64M/” /etc/php.ini

Make a bunch of processes start on boot

/sbin/chkconfig httpd on
/sbin/chkconfig mysqld on
/sbin/chkconfig ntpd on
/sbin/chkconfig dnsmasq on
/sbin/chkconfig incrond on
/sbin/chkconfig fail2ban on

Various file ownership changes

/bin/chown -R asterisk:asterisk /var/www/html
/bin/chown -R asterisk:asterisk /var/lib/php/session

Create rc.local

/bin/echo “# Make sure asterisk starts on boot” >> /etc/rc.local
/bin/echo “/usr/local/sbin/amportal start” >> /etc/rc.local

Set rc.local to run /etc/pbxact_first_boot.sh so that we can run our first boot commands

Note: This is only being done because certain commands don’t like being called in our post install

/bin/echo “/etc/pbx_first_boot.sh” >> /etc/rc.local

The following creates a first boot file that will run any commands

for applications that are not installed or configured during the

anaconda install process.

/bin/cat <> /etc/pbx_first_boot.sh
#!/bin/bash

pull in all freepbx modules and load them

/usr/local/sbin/amportal chown
sudo -u asterisk /var/lib/asterisk/bin/module_admin download sysadmin
sudo -u asterisk /var/lib/asterisk/bin/module_admin install sysadmin
sudo -u asterisk /var/lib/asterisk/bin/module_admin install sysadmin
sudo -u asterisk /var/lib/asterisk/bin/module_admin upgradeall
sudo -u asterisk /var/lib/asterisk/bin/retrieve_conf
sudo -u asterisk /var/lib/asterisk/bin/module_admin reload

Sysadmin RPM for Sysadmin Module Moved to Firstboot or we can create the incrontab

/usr/bin/yum -y install sysadmin-2.1.8-1

Install dahdi.conf file

/usr/bin/yum -y install schmooze-dahdi-1.0.0-2

Remove the entry from firstboot

rm -rf /etc/pbx_first_boot.sh
sed -i ‘s//etc/pbx_first_boot.sh//’ /etc/rc.local
/usr/local/sbin/amportal chown
rm -rf /tmp/ks-script-*
rm -rf /tmp/xinetd.tftp.old

updatedb
sleep 10; reboot

EOF

make this file executable

/bin/chmod 555 /etc/pbx_first_boot.sh

Clear all other repos

rm -f /etc/yum.repos.d/*.repo

Add the FreePBX repo

/bin/cat <<‘EOTT’ > /etc/yum.repos.d/FreePBX.repo

FreePBX-Base.repo

If the mirrorlist= does not work for you, as a fall back you can try the

remarked out baseurl= line instead.

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.freepbxdistro.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://yum.freepbxdistro.org/centos/$releasever/os/$basearch/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.freepbxdistro.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://yum.freepbxdistro.org/centos/$releasever/updates/$basearch/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.freepbxdistro.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://yum.freepbxdistro.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.freepbxdistro.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://yum.freepbxdistro.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.freepbxdistro.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://yum.freepbxdistro.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#Core PBX Packages
[pbx]
name=pbx
mirrorlist=http://mirrorlist.freepbxdistro.org/?pbxver=1.8.x.x&release=$releasever&arch=$basearch&repo=pbx
#baseurl=http://yum.freepbxdistro.org/pbx/1.8.x.x/$basearch/
gpgcheck=0
enabled=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-FreePBX

#Core Kernel Dependent Packages
[kernel-dependent]
name=kernel-dependent
mirrorlist=http://mirrorlist.freepbxdistro.org/?kernver=2.6.18-194.17.1&release=$releasever&arch=$basearch&repo=kernel-dependent
#baseurl=http://yum.freepbxdistro.org/kernel-dependent/2.6.18-194.17.1/$basearch/
gpgcheck=0
enabled=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-FreePBX

EOTT

write resolv.conf file

/bin/echo “nameserver 127.0.0.1” >> /etc/resolv.conf

set up java stuff

mkdir /usr/java
ln -s /usr/java/jre1.6.0_18 /usr/java/latest

install and configure aastra config file

mkdir /tftpboot
/bin/chown -R asterisk:asterisk /tftpboot

change sshd_config settings

sed -i “s/#UseDNS yes/UseDNS no/g” /etc/ssh/sshd_config

Setup logger.conf

cat <<‘EOF’ >/etc/asterisk/logger_general_custom.conf
dateformat=%F %T
EOF

cat <<‘EOF’ >/etc/asterisk/logger_logfiles_custom.conf
; Format is “filename” and then “levels” of debugging to be included:
; debug
; notice
; warning
; error
; verbose
;
console => notice,warning,error
full => notice,warning,error,debug,verbose
EOF

add logger rotation for asterisk logs

cat <<‘EOF’ >/etc/logrotate.d/asterisk

/var/log/asterisk/queue_log {
daily
missingok
rotate 30
notifempty
sharedscripts
create 0640 asterisk asterisk
}

/var/spool/mail/asterisk /var/spool/mail/root /var/log/asterisk/messages /var/log/asterisk/event_log /var/log/asterisk/full /var/log/asterisk/dtmf {
daily
missingok
rotate 7
notifempty
sharedscripts
create 0640 asterisk asterisk
postrotate
/usr/sbin/asterisk -rx ‘logger reload’ > /dev/null 2> /dev/null
endscript
}
EOF

create sudoers settings for user asterisk

sed -i “s/Defaults\s*requiretty/#Defaults requiretty/g” /etc/sudoers

add MOTD banner on SSH login

/bin/cat <<‘EOF’ > /etc/motd

======================================
Welcome to The FreePBX Distro

EOF

Create Upgrade Notes Section

mkdir /var/log/pbx
mkdir /var/log/pbx/install
mkdir /var/log/pbx/upgrade
chown -R asterisk:asterisk /var/log/pbx

fix php.ini config parameters

sed -i ‘s/upload_max_filesize = ./upload_max_filesize = 100M/’ /etc/php.ini
sed -i 's/post_max_size = .
/post_max_filesize = 100M/’ /etc/php.ini

run a weekly updatedb to keep locate up to date

echo -e “#”!"/bin/bash\nupdatedb" > /etc/cron.weekly/update-locate.sh
chmod +x /etc/cron.weekly/update-locate.sh

#Set nano as default editor for crons
echo “export VISUAL=nano” >> /root/.bashrc

set permission of file that the FreePBX dahdi needs

chown -R asterisk:asterisk /etc/modprobe.d/dahdi.conf

set version number in /etc/asterisk/freepbxdistro-version

echo “1.8.1.4-3” > /etc/asterisk/freepbxdistro-version
echo “1.0.0.0” > /etc/asterisk/freepbxdistro-failsafe