×

树莓派开机启动配置文件

树莓派开机启动配置文件(树莓派启动过程)

admin admin 发表于2023-03-31 07:27:08 浏览50 评论0

抢沙发发表评论

本文目录一览:

树莓派Linux启动过程简介

    昨天在写关于linux设置脚本开机启动的文章时,有个疑问就是开机时怎么确认运行级别,然后遍历执行/etc/rcN.d/目录下的所有服务程序。带着疑问, 在前人的基础上 学习总结一下linux系统初始化的工作的内容,现在树莓派4B上展示出来。

1、加载内核

    当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。树莓派4B的内核是Raspbian GNU/Linux 10 (buster),基于Debian。-树莓派开机启动配置文件

2、初始化进程init

    内核文件加载以后,运行第一个程序init,它的作用是初始化系统环境。init位于目录/sbin,进程号PID为1,即1号进程,其他所有进程都由init衍生,是init的子进程。

    同时还有个0号进程,idle进程,在系统初始化时由内核kernel自身从无到有创建,通过调用kernel_thread创建一个内核线程去执行init函数,0号进程创建1号进程。

3、运行级别

    具体介绍请参考笔者的文章-Linux运行级别简介  ,但是开机时是怎么确定运行级别的呢?

    init进程首先读取文件 /etc/inittab,它是运行级别的设置文件。但是各个发行版不太一样,init的配置文件也不一样,有可能使用/etc/event.d里面的配置文件,最新版的改用为/etc/init目录。-树莓派开机启动配置文件

4、开机启动程序

    具体详情请参考文章-linux中/etc/init.d设置开机启动 ,确定运行级别后,执行rcN.d目录下的文件,这些链接文件是连接到init.d目录下的程序。init进程逐一加载开机启动程序,其实就是运行这个目录里的启动脚本。-树莓派开机启动配置文件

    比如运行级别为5(图形化多用户)时启动的程序:

5、用户登录

    开机启动程序加载完毕以后用户登录。用户的登录方式有三种:

    命令行登录:init进程调用getty程序。

    ssh登录:init进程调用sshd程序。

    图形界面登录:init进程调用显示管理器,Gnome图形界面对应的显示管理器为gdm。

6 、login shell

    默认shell时bash,命令行界面,让用户可以直接与操作系统对话。读取环境变量,具体请参考笔者文章-Linux环境变量的设置。

树莓派设置开机启动脚本

由于北邮校内网需要Drcom拨号,每次用curl命令很麻烦,所以开始了这次写开机启动脚本的过程。

init 进程读取 /etc/inittab文件中的信息,并进入预设的运行级别。

Debian中的运行级别

查看系统当前运行级别使用 runlevel 命令,通常情况下 /etc/rcS.d/目录下的启动脚本首先被执行,然后是/etc/rcN.d/目录,N为 /etc/inittab 中的initdefault。-树莓派开机启动配置文件

/etc/rc2.d 中的部分文件如下:

有K开头的文件,有S开头的文件,K的意思是Kill,S为Start。K和S后面紧跟着的数字就是关闭和启动的顺序,数字越大关闭或启动顺序越靠后。

将自定义脚本放在 /etc/init.d 目录下面,就可以使用 service yourshellname start|stop 当然需要脚本中写好start,stop功能。但是不能开机自启动。-树莓派开机启动配置文件

使用update-rc.d函数将脚本设置为开机自启动。

1)设置脚本启动和关闭依赖$remote_fs,$syslog,并且启动运行级别为2-5,关闭运行级别为0,1,6。

update-rc.d foobar defaults

上面一条命令就会在/etc/rc2.d rc3.d rc4.d rc5.d中创建软链接 S03drcom - ../init.d/drcom ,在rc0.d rc1.d rc6.d中创建软链接 K01drcom - ../init.d/drcom 。-树莓派开机启动配置文件

2)设置脚本启动关闭都为顺序20,并且启动运行级别为2-5,关闭运行级别为0,1,6。

update-rc.d foobar start 20 2 3 4 5 . stop 20 0 1 6 .

同理。

3)移除连接。

update-rc.d yourshellname remove

参考文献:

[1] 开机自动执行脚本 与 update-rc.d

[2] 树莓派开机自启动脚本制作

[3] Debian init 开机启动管理

[4] 树莓派开机启动程序及启动脚本的制作

树莓派开机自启python gui程序

如果希望在树莓派开机进入界面后,自动开始一个python的gui程序,按照如下方法,以my_program.py文件为例:

1.给文件设置运行权限

chmod +x my_program.py

2.在这个.py文件最开始,加上python编译器的地址

比如 #!/usr/bin/env python

如果不清楚python编译器的地址是什么,可以用 which python命令查看。如果是用python3,是用 which python3.

3.打开自启动的文件(用户为pi的时候)

nano /home/pi/.config/lxsession/LXDE-pi/autostart

增加一行

@/home/pi/folder/my_program.py

注意:如果.py文件中存在地址,要写绝对地址。

树莓派不进入桌面启动Python gui

设置开机启动Python gui具体配置如下:

一、设置python GUI程序开机启动,这个方法能让你的程序在树莓派没进入桌面之前就启动。

①新建一个.sh的文件,随便起个名字,比如start.sh。如果你的python文件在桌面app文件夹中。则start.sh内容如下:

cd/home/pi/Desktop/app

sudo python3 program.py。

利用cpolar-内网穿透家中的树莓派,并开机自启动

本教程介绍如何在树莓派中安装cpolar,并且设置成开机自启动,这样就可以远程任意地方内网穿,访问家中的树莓派。

登录到cpolar后台,获取到自己的token值,然后复制到命令中,替换xxxxxxxx

配置文件会保存在 /home/pi/.cpolar/cpolar.yml,记录下该

路径

如下图,就说明已经配置好了

http 意思是创建一个http协议的隧道

8080 指定内网web站点的8080端口

按ctrl+C可退出。

如果还没有安装vim,可以先安装

我们先对vim做基本配置,目的是为了以防止稍后编辑时,多出TAB键。

在配置文件末尾添加如下内容:

set tabstop=2

set softtabstop=2

set shiftwidth=2

set expandtab

除了在cpolar命令行中,我们还可以在配置文件中添加多个隧道。这样多个隧道可以同时启动。

本例中,我们添加一个web隧道,一个ssh隧道

编辑cpolar的配置文件

在文件下面,我们编辑成如下内容:

参数说明:

注:这里的配置文件是yaml格式,每一级的参数前面,会缩进两个空格,不能使用TAB键,不能使用TAB键,不能使用TAB键。(重要说三遍)

如上图,则配置成功,如果提示某行错误,请根据行号及报错信息修改。

根据后台的进ID,杀掉后台运行的cpolar进程,本例如图中的28440,即为cpolar的后台进程ID

杀掉cpolar后台进程

编辑开机脚本

在exit 0前面,加入

如图:

保存退出

访问cpolar后台的状态页面: