Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Introduction to Linux - A Hands on Guide
This guide was created as an overview of the Linux Operating System, geared toward new users as an exploration tour and getting started guide, with exercises at the end of each chapter.
For more advanced trainees it can be a desktop reference, and a collection of the base knowledge needed to proceed with system and network administration. This book contains many real life examples derived from the author's experience as a Linux system and network administrator, trainer and consultant. They hope these examples will help you to get a better understanding of the Linux system and that you feel encouraged to try out things on your own.
Click Here to receive this Complete Guide absolutely free.
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
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??
Last edited by justiceisblind; 03-04-2002 at 07:05 PM.
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.
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.
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.