INIT: cannot execute "/etc/rc.d/rc.S
HELP!! I'm getting this error when I boot into linux:
INIT: cannot execute "/etc/rc.d/rc.S
The system then proceeds to boot, but when I try to login, I get an error that my filesystem isn't read write. When I boot it with the zipslack 8.0 bootdisk I get the same error but I can login and do most everything. Here's the contents of the rc.S file
# /etc/rc.d/rc.S: System initialization script.
# Mostly written by: Patrick J. Volkerding, <firstname.lastname@example.org>
# Start devfsd if necessary
if [ -r /dev/.devfsd ]; then
if [ -x /sbin/devfsd ]; then
echo "Starting devfs daemon: /sbin/devfsd /dev"
# enable swapping
# Start update.
# Test to see if the root partition is read-only, like it ought to be.
if echo -n >> "Testing filesystem status"; then
rm -f "Testing filesystem status"
# Check the integrity of all filesystems
if [ ! $READWRITE = yes ]; then
/sbin/fsck -A -a
# If there was a failure, drop into single-user mode.
if [ $? -gt 1 ] ; then
echo "*** An error occurred during the file system check. ***"
echo "*** You will now be given a chance to log into the ***"
echo "*** system in single-user mode to fix the problem. ***"
echo "*** Running 'e2fsck -v -y <partition>' might help. ***"
echo "Once you exit the single-user shell, the system will reboot."
PS1="(Repair filesystem) \#"; export PS1
echo "Unmounting file systems."
umount -a -r
mount -n -o remount,ro /
echo "Rebooting system."
# Remount the root filesystem in read-write mode
echo "Remounting root device with read-write enabled."
/sbin/mount -w -v -n -o remount /
if [ $? -gt 0 ] ; then
echo "Attempt to remount root device as read-write failed! This is going to"
echo "cause serious problems."
echo "If you're using the UMSDOS filesystem, you **MUST** mount the root partition"
echo "read-write! You can make sure the root filesystem is getting mounted "
echo "read-write with the 'rw' flag to Loadlin:"
echo "loadlin vmlinuz root=/dev/hda1 rw (replace /dev/hda1 with your root device)"
echo "Normal bootdisks can be made to mount a system read-write with the rdev command:"
echo "rdev -R /dev/fd0 0"
echo "You can also get into your system by using a bootkernel disk with a command"
echo "like this on the LILO prompt line: (change the root partition name as needed)"
echo "LILO: mount root=/dev/hda1 rw"
echo "Please press ENTER to continue, then reboot and use one of the above methods to"
echo -n "get into your machine and start looking for the problem. "
echo "Testing filesystem status: read-write filesystem"
if cat /etc/fstab | grep ' / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
if [ ! "$ROOTTYPE" = "umsdos" ]; then # no warn for UMSDOS
cat << EOF
*** ERROR: Root partition has already been mounted read-write. Cannot check!
For filesystem checking to work properly, your system must initially mount
the root partition as read only. Please modify your kernel with 'rdev' so that
it does this. If you're booting with LILO, add a line:
to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it.
If you boot from a kernel on a floppy disk, put it in the drive and type:
rdev -R /dev/fd0 1
If you boot from a bootkernel disk, or with Loadlin, you can add the 'ro' flag.
This will fix the problem *AND* eliminate this annoying message. :^)
echo -n "Press ENTER to continue. "
# remove /etc/mtab* so that mount will create it with a root entry
/bin/rm -f /etc/mtab* /etc/nologin /etc/shutdownpid
# mount file systems in fstab (and create an entry for /)
# but not NFS or SMB because TCP/IP is not yet configured
/sbin/mount -a -v -t nonfs,nosmbfs
# Clean up temporary files on the /var volume:
/bin/rm -f /var/run/utmp /var/run/*.pid /var/log/setup/tmp/*
# Looks like we have to create this.
cat /dev/null > /var/run/utmp
# Detect SGI Visual Workstation, since hwclock will make those freeze up:
if fgrep -l Cobalt-APIC /proc/interrupts 1> /dev/null 2> /dev/null ; then
echo "SGI Visual Workstation detected. Not running hwclock."
# Set the system time from the hardware clock using hwclock
elif [ -x /sbin/hwclock ]; then
echo "Setting system time from hardware clock."
if [ -e /etc/hardwareclock ]; then
HC=`cat /etc/hardwareclock | while read LINE ; do
if [ "$LINE" = "UTC" -o "$LINE" = "utc" ]; then
elif [ "$LINE" = "localtime" ]; then
# Default to localtime if there is no /etc/hardwareclock:
# /sbin/hwclock --$HC --hctosys
# The line above *should* work with --localtime, but doesn't. Omitting
# the argument defaults it to localtime, so use that.
if [ "$HC" = "utc" ]; then
/sbin/hwclock --utc --hctosys
if [ "$ROOTTYPE" = "umsdos" ]; then # we need to update any files added in DOS:
echo "Synchronizing UMSDOS directory structure:"
echo " umssync -r99 -v- /"
umssync -r99 -v- /
# Setup the /etc/motd to reflect the current kernel level:
# THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.
# COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.
echo "`/bin/uname -a | /bin/cut -d\ -f1,3`." > /etc/motd
# Configure ISA Plug-and-Play devices:
if [ -r /etc/isapnp.conf ]; then
if [ -x /sbin/isapnp ]; then
# This loads any kernel modules that are needed. These might be required to
# use your CD-ROM drive, bus mouse, ethernet card, or other optional hardware.
if [ -x /etc/rc.d/rc.modules ]; then
# Initialize PCMCIA devices:
# NOTE: This had been closer to the top of this script so that PCMCIA devices
# could be fsck'ed along with the other drives. This had some unfortunate
# side effects, however, since root isn't yet read-write, and /var might not
# even be mounted the .pid files can't be correctly written in /var/run and
# the pcmcia system can't be correctly shut down. If you want some PCMCIA
# partition to be mounted at boot (or when the card is inserted) then add
# the appropriate lines to /etc/pcmcia/scsi.opts.
if [ -x /etc/rc.d/rc.pcmcia ] ; then
. /etc/rc.d/rc.pcmcia start
# Run serial port setup script:
# (CAREFUL! This can make some systems hang if the rc.serial script isn't
# set up correctly. If this happens, you may have to edit the file from a
# boot disk)
# . /etc/rc.d/rc.serial
# Carry an entropy pool between reboots to improve randomness.
# Load and then save 512 bytes, which is the size of the entropy pool.
if [ -f /etc/random-seed ]; then
echo "Using /etc/random-seed to initialize /dev/urandom."
cat /etc/random-seed >/dev/urandom
dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
What are the permissions on the file?
They should be 755.
I'll try to chmod 755 /etc/rc.d/rc.S thanks.
I did a chmod 755 on the rc.S I get the same error. Just for kicks I tried to run the script. I can run all the other scripts in the /etc/rc.d folder but the rc.S when i type ./rc.S this is the error I get:
bash: ./rc.S: bad interpreter: No Such file or Directory.
I don't think this is very good. Any ideas on where I could get a new rc.S file without having to download the entire distro again??
The error you are getting means that the first line points to an interpreter that doesn't exist. In your script that would be /bin/sh
You could change it to /bin/bash or you could make a symbolic link to bash:
ln -s /bin/bash /bin/sh
I guess the rest of the scripts all point to /bin/bash otherwise they would also cause problems.
The rc scripts all point to #!(/bin/sh), I'm guessing that something changed in the script that isn't allowing it to run at start. It can be something as simple as no carriage return at the end of the script to a symbol. If you need, I or someone else could easily send you a fresh rc.S to see if that helps.
That would be ever so helpful. My email address is email@example.com
Hmm... I opened it in KDE's advanced editor, scrolled down to the bottom of the file and saved it again, and when I rebooted i didn't get the error. don't know what was wrong with it, but it works fine now.
I'm posting this whereever I see the 'bad interprer' question...hope it helps.
If you are using Linux 7.X, vim is the editor being used.
vim can save a file in both unix and dos format.
When saved in dos format, you will get the 'bad interpreter'
message when trying to run a script that uses the
"#!/path/to/interpreter becasue of the garbage chars in the
file (that vim doesn't show you unless you tell it to).
You can vim the file and issue ":set fileformat=unix" and save.
Try this and see if it fixes the issue.
I am having a similar problem but I can't get zipslack to load at all. Is there anyway to edit the text in a "unix" format from dos?
Are you trying to edit the linux.bat file? If you are, you can use the msdos Notepad to edit it.
actually I was refering to namelocr's post about using the vim editor (or vi, elvis, etc.)...
possibly editing rc.S or inittab
This script is in the "sysvinit.tgz" package of Slackware ["disk a1" on 8.0].
I recall having trouble due to the "devfs" section at the top. I didn't have that package configured and decided not to run it eventually. I commented out that whole first section.
Also, check to make sure you have at symlink between rc.0 and rc.6.
Just guessing. I looked at what you have pretty closely, and it seems to match mine, but it wouldn't hurt to obtain the package and reinstall that script, I guess. Another thing to check is your rc.serial since that can be problematic and is called by rc.S as well.
|All times are GMT -5. The time now is 02:35 AM.|