A small script to customize FreeBSD

Xn Nooby xnooby at gmail.com
Tue May 31 03:19:42 UTC 2011


Hello.  I wrote a script to install FreeBSD 8.2 on to a real machine,
or a 64-bit Virtualbox VM.  It has a modular approach where you can
pick which functions will be run on a different target system. It can
be tweaked easily.  I wrote it so that I could do a quick "plain
vanilla install", and then run this script to set up my user, SVN
server, gnome, firefox4, flash, nvidia driver, vbox additons, and
other things. I thought I would post it in case other beginners need
some thing like this to help them configure a machine.  I started off
with detailed notes, then thought I might as well script it. When you
run it, the only user interaction is having to enter the user password
twice.  Let me know if anyone has any suggestions.


#!/bin/sh

loadMe() {
echo loadMe...
pw useradd -n theuser -s /bin/csh -m
pw usermod theuser -G wheel,operator
passwd theuser

echo '#exec openbox-session' >> /home/theuser/.xinitrc
chown theuser:theuser /home/theuser/.xinitrc
chmod u+x /home/theuser/.xinitrc

echo '#!/bin/sh' > /home/theuser/init_theuser.sh
echo 'nspluginwrapper -v -a -i' >> /home/theuser/init_theuser.sh
chown theuser:theuser /home/theuser/init_theuser.sh
chmod u+x /home/theuser/init_theuser.sh
}


loadPorts() {
echo loadPorts...
freebsd-update fetch install
portsnap fetch extract
}


loadX11() {
echo loadX11...
pkg_add -r xorg
echo 'dbus_enable="YES"' >> /etc/rc.conf
echo 'hald_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/hald start
/usr/local/etc/rc.d/dbus start
Xorg -configure
sed '
/Section "Device"/ a\
Option "DRI" "Off"
' xorg.conf.new > xorg.conf.sed
cp xorg.conf.sed /etc/X11/xorg.conf
}


loadSoundHP() {
echo loadsoundHP...
kldload snd_driver
cat /dev/sndstat
echo 'snd_atiixp_load="YES"' >> /boot/loader.conf
echo 'snd_uaudio_load="YES"' >> /boot/loader.conf
}


loadSoundVMW() {
echo loadsoundVMW...
kldload snd_driver
cat /dev/sndstat
echo 'snd_es137x_load="YES"' >> /boot/loader.conf
}


loadSoundXPS() {
echo loadsoundXPS...
kldload snd_driver
cat /dev/sndstat
echo 'snd_hda_load="YES"' >> /boot/loader.conf
}

loadSoundVBX() {
echo loadsoundVBX...
kldload snd_driver
cat /dev/sndstat
echo 'snd_ich_load="YES"' >> /boot/loader.conf
}

loadFF() {
echo loadFF...
pkg_add -r firefox
echo 'sem_load="YES"' >> /boot/loader.conf
}


loadApps() {
echo loadApps...
apps="bash unzip p7zip vlc xmms subversion mplayer openbox icewm
cmdwatch xfe miro filezilla"
for x in $apps
do
pkg_add -r $x
done
}

loadVboxAdds() {
echo loadVboxAdds...
#cd /usr/ports/emulators/virtualbox-ose-additions
#make install clean
pkg_add -r virtualbox-ose-additions
echo 'vboxguest_enable="YES"' >> /etc/rc.conf

sed '
/Section "Screen"/ a\
DefaultDepth 24
' /etc/X11/xorg.conf > /etc/X11/xorg.conf.sed
cp /etc/X11/xorg.conf.sed /etc/X11/xorg.conf

sed '
/Depth     24/ a\
Modes "1024x768"
' /etc/X11/xorg.conf > /etc/X11/xorg.conf.sed
cp /etc/X11/xorg.conf.sed /etc/X11/xorg.conf

sed -e 's/"vesa"/"vboxvideo"/' /etc/X11/xorg.conf > /etc/X11/xorg.conf.sed
cp /etc/X11/xorg.conf.sed /etc/X11/xorg.conf

echo '#!/bin/sh' >> /etc/rc.local
echo '/usr/local/sbin/VBoxService' >> /etc/rc.local
chmod a+x /etc/rc.local

}

loadFonts() {
echo loadFonts...
cd /usr/ports/x11-fonts/webfonts
make install clean
pkg_add -r dejavu
cd
sed '
/Section "Module"/ a\
Load "freetype"\
Load "type1"
' /etc/X11/xorg.conf > /etc/X11/xorg.conf.sed
cp /etc/X11/xorg.conf.sed /etc/X11/xorg.conf
sed '
/Section "Files"/ a\
FontPath "/usr/local/lib/X11/fonts/webfonts/"\
FontPath "/usr/local/lib/X11/fonts/dejavu/"
' /etc/X11/xorg.conf > /etc/X11/xorg.conf.sed
cp /etc/X11/xorg.conf.sed /etc/X11/xorg.conf
fc-cache -f -v
}


loadFlash() {
echo loadFlash...
kldload linux
#cd /usr/ports/emulators/linux_base-f10
#make install clean
pkg_add -r linux_base-f10
echo 'linux_enable="YES"' >> /etc/rc.conf
echo 'linproc /usr/compat/linux/proc linprocfs rw 0 0' >> /etc/fstab
mount -a
#cd /usr/ports/www/nspluginwrapper
#make install clean
pkg_add -r nspluginwrapper
cd /usr/ports/www/linux-f10-flashplugin10
make makesum
make install clean
cd
mkdir /usr/local/lib/browser_plugins
ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so
/usr/local/lib/browser_plugins/
rehash
}

loadVB() {
echo loadVB...
pkg_add -r virtualbox-ose
echo 'vboxnet_enable="YES"' >> /etc/rc.conf
echo 'vboxdrv_load="YES"' >> /boot/loader.conf
pw groupmod vboxusers -m theuser
}

loadSvn() {
echo loadSvn...
pkg_add -r subversion
mkdir /home/svn-repo
pw user add -n svn -u 3690 -d /home/svn-repo
chsh -s /bin/false svn
echo 'svnserve_enable="YES"' >> /etc/rc.conf
echo 'svnserve_data="/home/svn-repo"' >> /etc/rc.conf
echo 'svnserve_user="svn"' >> /etc/rc.conf
echo 'svnserve_group="svn"' >> /etc/rc.conf
rehash
svnadmin create /home/svn-repo
cd /home/svn-repo/conf
echo 'theuser = theuserpw' >> passwd
sed '
/# anon-acces/ a\
anon-access = none\
auth-access = write\
password-db = passwd
' svnserve.conf > svnserve.conf.sed
cp svnserve.conf.sed svnserve.conf
cd
chown -R svn:svn /home/svn-repo/
chmod -R 770 /home/svn-repo/*
/usr/local/etc/rc.d/svnserve start
}

testy() {
echo testy...
}

loadGnome() {
echo loadGnome...
pkg_add -r gnome2
pkg_add -r gnome2-fifth-toe
pkg_add -r gnome2-hacker-tools
pkg_add -r gnome2-office
pkg_add -r gnome2-power-tools
echo 'proc /proc procfs rw 0 0' >> /etc/fstab
echo '#gnome_enable="YES"' >> /etc/rc.conf
echo '#exec gnome-session' >> /home/theuser/.xinitrc
}

loadnVidia() {
echo loadnVidia...
cd /usr/ports/x11/nvidia-driver
make install clean
echo 'nvidia_load="YES"' >> /boot/loader.conf
sed -e 's/"nv"/"nvidia"/' /etc/X11/xorg.conf > /etc/X11/xorg.conf.sed
cp /etc/X11/xorg.conf.sed /etc/X11/xorg.conf

cd /usr/ports/x11/nvidia-xconfig
make install clean
cd /usr/ports/x11/nvidia-settings
make install clean
}

# =======================

itype=xps

# enable export to track 8.2-STABLE
export PACKAGESITE="ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8-stable/Latest/"

# =======================

if [ $itype = vbox64 ]; then
loadPorts
loadX11
loadFF
loadApps
loadFonts
loadFlash
loadMe
loadSvn
loadVboxAdds
loadSoundVBX
#loadGnome
fi

# =======================

if [ $itype = xps ]; then
loadPorts
loadX11
loadFF
loadApps
loadFonts
loadFlash
loadMe
loadSvn
loadSoundXPS
loadGnome
loadVB
loadnVidia
fi


More information about the freebsd-questions mailing list