2.ARM-linux开发板,串口终端增加、修改密码

一:概念

Linux系统初始化介绍

在Linux操作系统中,系统初始化(System init)是整个系统启动过程中的重要组成部分。它包括了引导加载程序(bootloader)引导操作系统、内核初始化、用户空间初始化以及启动关键服务等步骤。在这个过程中,init进程扮演着关键角色,负责管理系统中的进程、服务以及处理系统级别的事件。

1. 传统的SysVinit

传统的Unix和Linux系统通常使用SysVinit作为初始化系统。SysVinit是基于运行级别(runlevel)的初始化系统,通过不同的运行级别确定系统启动时需要运行的服务和进程。在SysVinit中,系统会根据运行级别执行相应的初始化脚本,启动必要的服务和进程。虽然SysVinit功能简单,但在很长一段时间内被广泛应用。

2. Systemd

随着技术的发展,一些Linux发行版开始采用更先进的初始化系统,如Systemd。Systemd不仅负责启动系统中的进程和服务,还提供了更多功能,如并行启动服务、动态加载单元、系统日志管理等。相较于传统的SysVinit,Systemd具有更快的启动速度和更灵活的配置选项,被认为是一个更加现代化和全面的初始化系统。

3. 嵌入式中的BusyBox的init

BusyBox是一个精简的工具箱,集成了许多常用的Unix工具,通常用于嵌入式系统或资源受限的环境中。在一些嵌入式Linux系统中,BusyBox的init实现被用作系统的初始化进程。

BusyBox的init实现通常被用来替代传统的SysVinit或Systemd,它负责启动系统中的其他进程、监控它们的状态以及处理系统级别的事件。虽然BusyBox的init功能相对较简单,但在一些嵌入式系统中足以满足需求,并且能够有效地利用系统资源。

在BusyBox中,/etc/inittab 文件是一个配置文件,用于定义系统初始化时的行为和动作。它包含了系统重启、挂起以及虚拟控制台设置等内容。如果缺少/etc/inittab 文件,BusyBox会使用默认的配置来进行系统初始化。

下面是一些/etc/inittab 文件可以定义的内容:

  1. 系统重启和挂起设置:/etc/inittab 文件可以指定系统在何种情况下需要进行重启或挂起操作,以及如何处理这些操作。

  2. 虚拟控制台设置:/etc/inittab 文件可以定义虚拟终端(tty1 到 tty4)的启动shell动作。这些虚拟终端可以让用户在系统中切换不同的终端会话。

  3. 其他初始化动作:除了上述功能外,/etc/inittab 文件还可以定义其他系统初始化时需要执行的动作,例如启动特定的服务或程序。

如果系统中缺少虚拟控制台设备文件,例如 tty1到 tty4,BusyBox 在初始化时可能会报错,因为它无法创建这些虚拟终端。这些虚拟终端对于系统管理和用户交互非常重要,因此确保这些设备文件存在是很关键的。

在 BusyBox 的 /etc/inittab 文件中,通常包含以下字段:

  1. id:用于标识条目的唯一ID。
  2. runlevels:指定进程应该在哪些运行级别下启动。
  3. action:指定在指定运行级别下如何执行进程。
  4. process:要启动的进程或命令。

在 BusyBox 的 /etc/inittab 文件中,action 字段用来指定下面表中可应用到进程的动作之一。这些动作包括:

sysinit

init提供初始化命令行的路径

respawn

如果进程终止,立即重新启动该进程。

askfirst

类似respawn,不过它的主要用途是减少系统上执行的终端应用程序的数量。它将会促使init在控制台上显示“Please press Enter to active this console”的信息,并在重新启动之前等待用户按下enter

wait

告诉init必须等到相应的进程完成后,才启动下一个进程。

once

仅启动一次该进程,而且不会等待它完成,如果进程退出,则不会重新启动。

ctratldel

当按下Ctrl+Alt+Delete组合键时,执行相应的进程

shutdown

当系统关机时,执行相应的进程

restart

init重新启动时,执行相应的进程,通常此处所执行的进程就是init本身

boot系统引导时启动的进程。
bootwait系统引导时启动的进程,等待其终止后再启动下一个进程。
off禁用该进程,不启动它。
ondemand按需启动,只有当需要时才启动该进程。
initdefault设置默认的运行级别。

最常见的:

::sysinit::在系统初始化时执行的任务。
::respawn::启动一个进程,并在其终止后自动重新启动。
::askfirst::在执行进程之前要求用户确认。
::once::执行一次性进程。

二:修改inittab文件

1.查看自己当前是哪个串口设备

# cat /proc/cmdline
noinitrd root=/dev/mtdblock2 rootfstype=yaffs2 rootflags=inband-tags console=ttyS0,115200n8 rdinit=/sbin/init mem=64M

ttyS0就是我当前的串口设备。

2.打开串口登录加密的注释:

# Put a getty on the serial port
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL

sbin下的getty是Linux下的一个开启和设置终端的命令,进行终端的开启、终端初始化、设置终端。

3.把有类似如下的,全部注释掉

注意:如果不需要串口登录密码,注释串口需要加密后。一定要打开以下类似的注释!否则不可与shell终端交互

::respawn:-/bin/sh  保持一个 shell 进程在后台运行,以便用户可以通过 shell 与系统进行交互。

::askfirst:-/bin/sh    询问用户是否要启动一个 shell 进程,用户可以选择是或否

tty3::askfirst:-/bin/sh  在第 3 个虚拟终端上询问用户是否要启动 shell 进程。用户可选择是或否

或者:  

# Start an "askfirst" shell on the console (whatever that may be)
::once:-/bin/sh

上面这个没注释的报错情况:

输入用户名和密码后,会卡顿,这种出现的情况应该是被抢占,不能接收串口数据,具体情况我不是特别的了解。

4.增加密码

命令行下敲入passwd

我这里的密码为root,设定密码并确认密码后,reboot重新启动

重启后就会需要用户名跟密码。

如果需要重新登录,输入:exit

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译 Linux 内核需要以下步骤: 1. 获取 Linux 内核源代码。你可以从官方网站或 GitHub 上下载最新的内核源代码。 2. 安装交叉编译工具链。如果你的开发环境是 x86 架构的,你需要安装交叉编译工具链来编译适用于 ARM 架构的内核。你可以使用 apt-get 命令或其他包管理器来安装工具链。例如,在 Ubuntu 或 Debian 上,你可以使用以下命令来安装: ``` sudo apt-get install gcc-arm-linux-gnueabihf ``` 3. 配置内核。进入内核源代码目录,使用以下命令来配置内核: ``` make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_zero2_defconfig ``` 这将使用默认配置文件来配置内核。 4. 编译内核。使用以下命令来编译内核: ``` make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs modules ``` 这将编译内核镜像、设备树和内核模块。 5. 安装内核。将编译好的内核镜像和设备树文件复制到 SD 卡的 boot 分区中。例如,在 Ubuntu 或 Debian 上,你可以使用以下命令来安装: ``` sudo cp arch/arm/boot/zImage /media/boot/ sudo cp arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero2.dtb /media/boot/ ``` 6. 配置引导加载程序。编辑 SD 卡的 boot 分区中的 boot.cmd 文件,并添加以下内容: ``` setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 fatload mmc 0:1 ${kernel_addr_r} zImage fatload mmc 0:1 ${fdt_addr_r} sun8i-h2-plus-orangepi-zero2.dtb bootz ${kernel_addr_r} - ${fdt_addr_r} ``` 这将配置引导加载程序以加载内核镜像和设备树,并指定内核参数。 7. 生成引导加载程序镜像。使用以下命令来生成引导加载程序镜像: ``` mkimage -C none -A arm -T script -d boot.cmd boot.scr ``` 这将生成一个名为 boot.scr 的文件,它是引导加载程序镜像。 8. 将引导加载程序镜像复制到 SD 卡的 boot 分区中: ``` sudo cp boot.scr /media/boot/ ``` 9. 将 SD 卡插入 Orange Pi Zero 2 开发,并启动子。如果一切正常,你应该看到内核启动信息在串口终端中输出。 注意:这只是一个简单的指南,实际的操作可能会因环境和设备而有所不同。请确保你熟悉 Linux 内核编译和 Orange Pi Zero 2 开发的使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值