手动修改树莓派配置(仅适用systemd版本的)

手动修改树莓派配置(仅适用systemd)

我为什么这样做?

针对下载最新版的raspbian buster镜像,遇上问题如下:

  • ssh服务默认没有开启,无法通过网络远程登录。
  • hdmi没有输出。
  • 串口接收端损坏,发送端好的,无法接受串口发送的调试命令,但是可以读取log。

以上理由....都特喵扯淡,反正:

我就只是想改一下,就这。

具体步骤

1.在fat32分区中,内核启动命令行参数记录在cmdline.txt中,此处修改指定systemd作为init,并且取消quiet参数,让开机log正常打印,可以用串口读取到,这个可以直接读取tf卡盘修改。

最终的cmdline.txt内容如下:

root=PARTUUID=ea7d04d6-02 rootfstype=ext4 init=/bin/systemd elevator=deadline fsck.repair=yes rootwait  plymouth.ignore-serial-consoles

2.挂载tf卡树莓派的根分区,此处内存卡块设备为/dev/sdc,则/dev/sdc1为fat32分区,/dev/sdc2为树莓派的ext4根分区

切换root用户(#),挂载点创建到/media/pi

#mkdir /media/pi

挂载文件系统

文件系统挂载点/media/pi不是一定要这个路径,根据实际情况,如果挂载点有变,下面命令涉及/media/pi路径替换一下即可

#mount -t ext4 -o rw /dev/sdc2 /media/pi

3.确认ssh服务配置文件存在系统中。

ls查看ssh.service配置文件所在的目录。

#ls /media/pi/lib/systemd/system/ssh*

/media/pi/lib/systemd/system/ssh.service  /media/pi/lib/systemd/system/ssh@.service  /media/pi/lib/systemd/system/ssh.socket  /media/pi/lib/systemd/system/sshswitch.service

看以上输出结果,存在/media/pi/lib/systemd/system/ssh.service,确认系统已经安装了ssh服务。

4.systemd的target依赖关系

查阅systemd手册可知,启动的目标依赖关系大致如下

sysinit.target -> basic.target -> multi-user.target -> graphical.target

需要把ssh.service添加到启动流程中去。

5.添加ssh软链接到到wants文件夹

上步所示,graphical.target启动前先启动multi-user.target,ssh依赖是multi-user.target。软连接添加到multi-user.target.wants文件夹里,即可添加到启动流程中去。

#ln -s /lib/systemd/system/ssh.service /media/pi/etc/systemd/system/multi-user.target.wants/ssh.service

查看文件详细信息,确认软连接成功添加

 #ls -l /media/pi/etc/systemd/system/multi-user.target.wants/ssh.service 

lrwxrwxrwx 1 root root 31 8月  15 12:07 /media/pi/etc/systemd/system/multi-user.target.wants/ssh.service -> /lib/systemd/system/ssh.service

如上所示,软连接创建成功,/media/pi/etc/systemd/system/multi-user.target.wants/ssh.service 指向 /lib/systemd/system/ssh.service

6.ssh服务添加开机自启成功,连上网线,插入tf卡,开机,找到树莓派的ip尝试链接即可。

网络服务默认是使用networking.service来管理,默认添加到multi-user.target.wants里去,参与开机自启。

关闭了cmdline.txtquiet的参数,开机时会打印详细流程,可以通过读取串口输出来确定系统启动的情况,可以通过串口大致判断是否开机成功。(虽然pi的rxd可能因为接触不良或者坏了导致树莓派无法接收上位机的信息,如果整个串口坏掉了那就没办法了,摸着来吧)

重启后,观察硬盘读写灯(绿灯),启动时偶尔闪烁。


自动链接wifi篇

手上的树莓派2B无板载wifi,需要额外购买usb wifi模块,同时要网卡型号在树莓派中存在驱动,一般某宝备注免驱,详情需要询问。

挂载root分区到/media/pi后,修改/media/pi/etc/wpa_supplicant/wpa_supplicant.conf

#vim /media/pi/etc/wpa_supplicant/wpa_supplicant.conf

添加network结构,ssid是自己开的wifi名称,psk是wifi密码,priority是连接的优先级,越大优先级越高

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="mywifi"
    psk="12345678"
    priority=5
}

如果对vi使用不熟悉,可以参考这里

一份简单的快捷键帮助:

移动光标:
alt+h 左移动  alt+l 右移动
alt+j 下移动  alt+k 上移动
alt+xxx的快捷键都会退出编辑模式,重新按i进入即可,下同。

删除字符:
alt+x

删除当前行:
alt+d d(第二次d松开alt)

插入编辑模式:
i

保存退出
alt+: wq(松开alt+:)

取消保存并退出
alt+: q!(松开alt+:)

因为看不到log,很难判断连接失败的原因,所以直接配置wifi连接但又不成功排查起来很困难,建议先用有线连接。

由于wifi使用了dhcp自动分配ip,树莓派的ip可能无法确定(除非有些机型显示已连接的设备的ip,或者扫描),或使用其他手段扫描wifi网段的ip。

以下bash脚本,扫描当前无线局域网内存活的主机,小米手机的wifi网段为192.168.43.x,每个ip发送一个ping包,不丢包则认为主机存活。

i=1
net="192.168.42"
while [ $i -lt 254 ];
do
    echo -en "\r$net.$((++i))      "
    ping -c 1 $net.$i > /dev/null && echo "->主机在线"
done

确定wifi网段的方法

手机终端模拟器键入ifconfig命令,看到wlan网卡的ip,我的是192.168.43.1

最终扫描到的ip是192.168.43.227,使用juicessh登录树莓派即可.

wifi管理的服务由wpa_supplicant.service管理,经查看,默认已经添加到/media/pi/etc/systemd/system/multi-user.target.wants,说明服务自启是包含了wifi管理的。

手机开同名同密码的ap尝试被连接,注意是2.4G 频段,此处购买的usb wifi模块不支持5G频段。


知识储备

1.raspbian是基于debian的树莓派定制系统,系统管理上可以套用debian的方法。

2.debian10,版本代号buster,使用的init不是传统sysV init,而使用了systemd。

3.树莓派的tf卡有2个分区,一个fat32格式的boot分区,放置bios启动相关的配置(config.txt),以及内核启动参数(cmdline.txt),一个ext4格式的根分区。

4.systemd和传统的sysV init开机启动的配置有很大的差异。sysV init会读取init.d相关daemon启动脚本,但是systemd则用了它自己要求的配置文件,systemd兼容了大部分sysV的脚本。具体差异如下

  • systemd服务的配置文件位与/lib/systemd/system,/etc/systemd/system等几处位置
  • sysV init的服务启动脚本位与/etc/init.d /etc/rcX.d (X=0-6)

5.运行级别。

linux分成6个运行级别随便在博客找的说明

编号 描述 systemd对应的target
0 关机模式,系统默认运行级别不能设置为0,否则不能正常启动,一开机就自动关机 shutdown.target
1 单用户模式,root权限,用于系统维护,禁止远程登录,就像Windows下的安全模式 emergency.target
2 多用户模式,没有 NFS 网络支持 rescure.target
3 完整的多用户文本模式,有 NFS,登录后进入控制台命令模式 multi-user.target
4 系统未使用,保留一般不用
5 图形化模式,登陆后进入图形 GUI 模式 graphical.target
6 重启模式,默认运行级别不能设为6,否则不能设为6,否则不能正常启动,就会一直开机重启
  • systemd通过软链接的方法,把选中运行级别的.target配置文件软链接到/etc/systemd/system/default.target
  • sysV init 则把启动脚本放在/etc/init.d,不同运行级别需要启动的服务,则软链接到/etc/rcX.d(例如rc3.d)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349