Raspberry Pi stuck on script at startup - linux

I wanted to have my Raspberry Pi update the system clock from a GPS on start up but now something has gone wrong and I can't login.
I created a bash script that calls 'sudo -i' and a few other gpsd related instructions. I pointed the /etc/profile towards the script. If I Ctrl+C to get to a prompt I get root access but the directories are listing nothing when I use the 'ls' command. If I exit from root I get stuck again. I figure that if I could delete the bash script the problem would go away but I don't know how to view that partition of the SD card on a PC. Any suggestions?

Ok, I solved the problem. There is a ext4 partition editor called ExtFS for Windows. You can view and edit an ext4 partition easily in this program. You can download it here.

Related

Rapsberry Pi without user and auto start node program

Before posting this question i have gone through different blogs but couldn't find any good solution so posting this question.
I have raspberry pi set up with pi user.
I want to set up it without login and run node program on start up so there would not require any manual intervention.
I am not able to edit /etc/rc.local file. It gives me Can't open file to write error.
I am not able to open /etc/sudoers file as well. While opening it, it gives me error as well. So not sure what to do now. If anyone can help to solve this file issues and after that any good document to start the Pi without user and auto start node program will be so helpful.
You can't start the Pi without any user.
And you need to be root to edit this file: sudo vi /etc/rc.local (on raspbian)
There is already an auto login process at startup, for the standard pi user, so you just need to add your command line for starting node.
https://www.raspberrypi.org/documentation/linux/usage/rc-local.md

Centos 7 Emergency Mode infinite error

I cant boot my linux machine due to /etc/fstab having bad lines of code. Currently my machine will attempt to boot and will infinitely loop the message "Welcome to Emergency Mode!..." . I can't get to the console or login.
Hitting escape at the start up screen and entering the rescue mode does not work either. Using grub2 i can see my fstab file via : cat (lvm/centos-root)/etc/fstab.
How can i edit this file and remove the bad lines of code?
Boot from a live DVD, or boot in rescue mode from the installation disk. If necessary (it probably won't be), manually mount the main system's root partition somewhere (e.g. /mnt/rescue). Edit /mnt/rescue/etc/fstab appropriately. Perform a clean reboot.

Stop Raspberry Pi from running program at boot

I was trying to figure out how to run a program at boot, but after realizing this program is an infinite loop, I have no way of getting out, or back to the terminal. Right when I give the Pi power it just goes right to the program on a black background. I don't remember exactly what I did to make it run at boot, I believe I just added some code in a place right above something that said "exit 0" and below something that says "esac". I don't remember the command that even got me there. (I am new to the Pi and Python and have just been playing around..unsucessfully.)
If anyone could help me either delete this program or get me to be able to edit it so I can fix the infinite loop that would be great. I'd rather not have to completely over-write the sd card with a fresh raspbian. But like I said I can't do anything at boot, and Ctrl + C doesn't do anything nor Ctrl + Alt + Delete.
EDIT: When I put the SD card in my computer, I see a list of 11 files:
bootcode
cmdline
config
fixup
fixup_cd
issue
kernel
kernel_cutdown
kernel_emergency
start.elf
start_cd.elf
None of these mean anything to me...
Update: Looks like I failed to get that you want to interrupt the running bootprocess and stop the script.
The simplest idea would be to turn of the pi, unplug the sd card and plug it into your desktop, (re)move the script and boot again.
Processes spawned during boot are stored in scripts in /etc/init.d/.... These scripts are called by the init process, the first process on a Linux machine (PID:1)
But init starts not all scripts in /etc/init.d. This depends on the run level. On a debian system there are 7 run levels.
For every run level there is a folder called like:
/etc/rc0.d
...
/rc6.d
in which are softlinks to scripts from /etc/init.d are stored.
To remove a script from being executed on every boot you'll delete all links from that folders. Usually on debian systems this is done using the update-rc.d tool:
update-rc.d NAME_OF_INIT_SCRIPT remove
You should also have a look at the file /etc/rc.local
Alt + PrintScn + k to kill the process stuck running from rc.local
You can use the cmdline.txt.
First, add or modify the cmdline.txt file on your sd card. Add "init=/bin/sh", then restart your Pi, and you can see a command line prompt.
Type 'sudo nano /etc/rc.local' to edit the file, and comment or delete the line containing the error. After that restart.
I had exactly the same issue, couldn't quit the process using CTRL+C. I edited the cmdline.txt like stated above, but then the pi didn't load the necessary usb drivers for my keyboard.
So eventually I logged in over SSH to the pi, and modified my rc.local file that way.
In my case worked combination "Alt" + "F4", it stops the current session and opens the login screen
I had the same problem as explained at the beginning of this Post. My Python app was caught in an endless loop.
I tried the Ctrl+Alt+F2 Command as recommended in many posts found in Internet without any terminal window being open. Apparently, after many other trials and reboots I saw a glimpse of a Terminal window each time the loop of my application restarted. It was impossible to catch anything until I started recording the screen using the slow motion video of my mobile phone and, yes, a terminal window with the Linux prompt was active, and able to accept keyboard entries.
All I did was (almost blindly) editing the culprit file with the
sudo nano filename command
and entering some characters in order to actually corrupt such file, saving and closing it, a rebooting the Pi.
At the end of the boot, the file produced an error but the system kept ready to operate.
I was then able to fix the bug in a normal way.
It hope this may be useful to others. In my case it spared me of burning a new Raspbian and losing all my previous work.
I got myself stuck in exactly the same problem. Luckily I had the ssh enabled, apparently this is disabled by default on Raspbian Jessie, so this may not work for all.
The exit 0 is the line in /etc/rc.local where you would have added in the script that is now running in a continuous mode. If you can ssh into the Pi using Putty and the Pi's IP address then
sudo nano /etc/rc.local
Scroll down to the bottom of the file and remove the offending program, then sudo reboot
They way to prevent this issue from happening is to add an & (ampersand) to the end of the line to fork the process and run it as a separate process like so
python /home/pi/myscript.py &
as specified in https://www.raspberrypi.org/documentation/linux/usage/rc-local.md
The ampersand allows the command to run in a separate process and continue booting with the process running.

Starting a process when Linux starts (Ubuntu)

I have a process (Spark chat client) which needs to be run when my Ubuntu boots up. For this I have done followings.
I created a run.sh file which will fire up my application (and I check it's working)
I created a symbolic link from both /etc/rc5.d/ and /etc/rc3.d/ to my run.sh file. (A symbolic link is also working fine)
But my processes don't start up when my machine boots. (Is this the way to do it or am I doing the wrong thing here?)
I'm running on Ubuntu 10.04 LTS (Lucid Lynx).
Your solution would've worked in most Linux distributions. However, Ubuntu never goes past runlevel 2.
Just in case, this means the contents of rc?.d with ? > 2 are not used unless you manually raise the runlevel as root. Use rc2.d :)
The symlinks you created in /etc/rc5.d/ and /etc/rc3.d/ should be named S##name. S is for start, and the number ## gives an order in which the scripts are run.
Note also that the symlinks in these directories usually points to the actual script located in /etc/init.d/.
It looks like you want to run an X program when a user logs in, not a service on startup. Remember, in Linux there is no GUI; X is a program that runs to display graphics on the screen.
You likely want to set up a program to start on KDE/Gnome login. Each has their own way to do it, but is generally boils down to pointing at a script and saying "Run this."
Put the command to run that script in the /etc/rc.local file. I think it will run each time you log in to the system.

Run a script when I put a pendrive in

I want to have automatic backup of some directories on my pendrive whenever I insert a pendrive to my laptop running Ubuntu 10.04. What whould be the simplest solution for that?
Either write a udev rule to run the script, or write a D-Bus client that listens to hal.
Not sure on Linux, but for Windows I have seen an autorun file added that references a batch file to do the job. Worked exactly as you described!

Resources