您尚未登录。

楼主 #1 2018-01-18 12:12:38

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

各位大哥,buildroot编译出来的根文件系统没有,/etc/rc.local文件,自己用vi建个/etc/rc.local文件没有执行!

各位大哥,buildroot编译出来的根文件系统没有,/etc/rc.local文件,自己用vi建个/etc/rc.local文件没有执行里面的内容,是什么问题?

# vi /etc/rc.local
/root/wifi.sh

exit 0

离线

#2 2018-01-18 13:46:49

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: 各位大哥,buildroot编译出来的根文件系统没有,/etc/rc.local文件,自己用vi建个/etc/rc.local文件没有执行!

你应该去 /etc/init.d/S80wifi 这个文件, 文件名随意,只要S开头即可, 文件要可执行。





离线

楼主 #3 2018-01-18 15:48:08

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 各位大哥,buildroot编译出来的根文件系统没有,/etc/rc.local文件,自己用vi建个/etc/rc.local文件没有执行!

晕哥 说:

你应该去 /etc/init.d/S80wifi 这个文件, 文件名随意,只要S开头即可, 文件要可执行。



晕哥,如要我开机就运行/etc/rc.local脚本,要怎么做呢?下面我是按(TF WIFI 小白编)里操用的,但不能执行/etc/rc.local脚本

6.开机自动连网
首先写一个shell脚本来加载驱动,启动wlan0,运行连网脚本,放在任意目录都可以,输入命令:
vi wifi.sh
然后按a进入插入模式,输入:
#!/bin/sh
insmod /root(你放WiFi驱动的路径)/wifi.ko(WiFi驱动的名字)
ifconfig wlan0 up
/root/connect_wx.sh
写好后按下esc,再输入:wq
保存数据后输入:
chmod 777 wifi.sh
然后添加开机启动脚本
vi /etc/rc.local
然后把你的wifi自启脚本以绝对路径形式输入exit 0上面的一行中,如果路径太长,一行写不完,就在这一行的最后面输入\然后按下enter键

离线

#4 2018-01-18 16:16:46

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: 各位大哥,buildroot编译出来的根文件系统没有,/etc/rc.local文件,自己用vi建个/etc/rc.local文件没有执行!

开机不会执行 /etc/rc.local,
开机只会执行 /etc/init.d/rcS, 除非你在/etc/init.d/rcS 文件最后一行添加  /etc/rc.local 才会执行。

否则你老老实实按照我二楼给的方法.





离线

楼主 #5 2018-01-19 09:15:35

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 各位大哥,buildroot编译出来的根文件系统没有,/etc/rc.local文件,自己用vi建个/etc/rc.local文件没有执行!

晕哥 说:

开机不会执行 /etc/rc.local,
开机只会执行 /etc/init.d/rcS, 除非你在/etc/init.d/rcS 文件最后一行添加  /etc/rc.local 才会执行。

否则你老老实实按照我二楼给的方法.

晕哥,我想知道linux启动时,最先加截什么脚本?
/etc/init.d/rcS是在那里设置开机就加载.

离线

#6 2018-01-19 11:09:08

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: 各位大哥,buildroot编译出来的根文件系统没有,/etc/rc.local文件,自己用vi建个/etc/rc.local文件没有执行!

BusyBox的 init进程依次进行以下工作:
1)为init设置信号处理进程。
2)初始化控制台。
3)解析inittab文件(/etc/inittab)。
4)执行系统初始化脚本(/etc/init.d/rcS作为缺省)。
5)执行所有阻塞的(会导致init暂停的)inittab命令(动作类型:wait)。
6)执行所有仅执行一次的inittab命令(动作类型:once)。
7)一旦完成以上工作,init进程便会循环执行以下工作:
8)执行所有终止时必须重新启动的inittab命令(动作类型:respawn)。
9)执行所有中止时必须重新启动但启动前必须前询问用户的inittab命令(动作类 型:askfirst)。

参考链接: busybox的init程序分析
没有比这个更清晰明了的了。





离线

#7 2018-01-19 11:11:51

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: 各位大哥,buildroot编译出来的根文件系统没有,/etc/rc.local文件,自己用vi建个/etc/rc.local文件没有执行!

[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 15883
[    0.000000] Kernel command line: console=ttyS0,115200 earlyprintk panic=5 rootwait mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,9M(kernel)ro,-(rootfs) root=/dev/ram0 rdinit=/sbin/init vt.global_cursor_default=0
[    0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
[    0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)

# ps
PID   USER     COMMAND
    1 root     init
    2 root     [kthreadd]
    3 root     [kworker/0:0]
    4 root     [kworker/0:0H]
    5 root     [kworker/u2:0]
    6 root     [mm_percpu_wq]
    7 root     [ksoftirqd/0]
    8 root     [rcu_sched]
    9 root     [rcu_bh]
   10 root     [migration/0]
   11 root     [cpuhp/0]
   12 root     [kdevtmpfs]
   13 root     [netns]
   14 root     [oom_reaper]
   15 root     [writeback]
   16 root     [kcompactd0]
   17 root     [crypto]
   18 root     [kblockd]
   19 root     [cfg80211]
   20 root     [kworker/0:1]
   21 root     [watchdogd]
   22 root     [kswapd0]
   47 root     [kworker/u2:1]
   49 root     [irq/23-sunxi-mm]
   75 root     -/bin/sh
   92 root     ps

/sbin/init 是在Kernel command指定的第一个进程!





离线

#8 2022-05-21 19:37:33

forever_rainy
会员
注册时间: 2022-04-09
已发帖子: 21
积分: 40

Re: 各位大哥,buildroot编译出来的根文件系统没有,/etc/rc.local文件,自己用vi建个/etc/rc.local文件没有执行!

hello
请教一个问题,在使用buildroot编译根文件系统,使用的时 buildroot2017.08.1这个文件的内容,编译的主机使用的ubuntu16.0.4 lts。编译是成功的,系统初始使用的是busybox,自己也添加了很多东西,但是出现了一个致命的问题。我的/etc/init.d/rcS在开机的时候没有执行。

首先,我确定以下文件的符后链接是正确的:/sbin/init(链接到了/bin/busybox),bash环境是ok的,文件有执行的权限,/etc/inittab有相应的执行命令,测试更改该文件内容,启动会变得不正常,说明该文件是正常执行了(该文件内的其他内容有被执行,比如设置的串口不需要密码自动登录)。开机后 /etc/init.d/文件夹下的内容没有执行(通过rcS执行该文件夹内容),我不知道是否是buildroot中某一个选项没有配置上。现在不知道怎么去解决这个问题。能提供一些帮助信息吗。

开机后手动执行/etc/init.d/rcS是成功的。

以下是/etc/inittab 的内容:
# Startup the system
::sysinit:/bin/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,rw /
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -a
::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS


# Put a getty on the serial port
#console::respawn:/sbin/getty -L  console 0 vt100 # GENERIC_SERIAL
ttyS0::respawn:/bin/sh
ttyS1::askfirst:/bin/sh

# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot

# Stuff to do before rebooting
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r


找到原因了,串口登录时没有将一些信息,显示出来,问题在这句代码上:ttyS0::respawn:/bin/sh,这个暂时还没有搞明白怎么解释这个

最近编辑记录 forever_rainy (2022-05-21 20:18:28)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn