How to run script on first boot?

I need to run some bash script only once on first boot (after OS installation) of my CentOS machine This script should run before network service start (because this script will change network configuration) How can I register my script to run before network service start?


Solution 1:

If you look at the "chkconfig" line of /etc/init.d/network you'll see that the network has a start priority of "10".

/etc/init.d/yourscript:
#!/bin/bash
#
# yourscript  short description
# 
# chkconfig: 2345 9 20
# description: long description

case "$1" in
  start)
    Do your thing !!!
    chkconfig yourscript off
  ;;
  stop|status|restart|reload|force-reload)
    # do nothing
  ;;
esac

Then run chkconfig yourscript on to get it to run at boot. The chkconfig yourscript off inside the script should disable it running on any subsequent boots.

Some versions of CentOS/RHEL/Fedora have a "firstboot" program you could try to use, but that seems like a pain.

You sure you can't run your network reconfiguration script inside of a %post in a kickstart? That's what I do.

Solution 2:

Simple answer: Stick it in /etc/init.d (symlinked to /etc/rc#.d) & the first thing it does is check for a file's presence: If the file exists the script has already run (so exit). If not, run the script and touch the file.

This also lets you delete the file to force the script to run again later.