openwrt系统安装bash,并配置root用户默认shell为bash

引言:openwrt默认的shell解释权是ash,这个解释器不支持历史记录,路径补全也是只支持英文,不支持中文,语法也只支持​​POSIX 标准语法​​,像数组、正则表达式都是不支持的,修改后方便编写复杂shell脚本。

1.把bash编译进固件

  • 运行make menuconfig进入图形化配置界面
  • Utilities -> Shells -> bash
  • 把bash打上星号后保存退出,运行make V=99编译固件

2.配置root用户默认shell为Bash

  • 修改etc/shells文件,这个文件是约束合法 Shell​​:该文件列出的所有路径对应的 Shell 被认为是系统支持的“合法” Shell。​​当用户尝试通过以下方式修改登录 Shell 时,系统会检查目标 Shell 是否在 /etc/shells 中​​。运行 echo "/bin/bash" >> /etc/shells把bash加入该文件。
  • 修改root用户的默认shell为Bash:修改/etc/passwd文件root行的/bin/ash为/bin/bash。
  • 验证root用户的默认shell是否已更改为Bash:上述修改完成后重新登录shell运行echo $SHELL命令查看当前窗口的shell解释权

3.脚本修改解释权为bash

  • 修改有需求的脚本首行为 #!/bin/bash,#!/bin/ash和#!/bin/sh都是指向的/bin/ash。
### 安装配置容器于OpenWRT #### 选择合适的容器技术 对于资源有限的小型设备而言,如运行OpenWRT系统的路由器,在其上部署容器化应用是一个挑战。考虑到性能开销以及硬件支持情况,轻量级的容器解决方案更为合适。例如LXC(Linux Containers),它允许创建多个隔离的操作系统用户空间实例而不需要额外的虚拟机管理程序层。 #### 准备工作 为了能够在OpenWRT平台上顺利安装使用容器功能,首先需要确保所使用的固件版本已经包含了必要的内核模块和支持特性。如果官方默认镜像不满足需求,则可能要寻找社区维护的支持更好特性的自定义构建版本或者自行编译带有特定选项启用的定制版固件[^1]。 #### LXC组件安装 通过opkg包管理系统来获取所需的软件包。具体来说,可以执行如下命令序列完成基本环境搭建: ```bash opkg update && opkg install lxc ``` 这一步骤会下载安装LXC及其依赖项到目标设备上。 #### 配置网络接口 为了让容器能够访问外部网络,通常还需要设置桥接网卡或者其他形式的NAT转发机制。这里以简单的brctl工具为例说明如何建立一个名为`br-lan`的新桥梁连接现有LAN端口: ```bash opkg install kmod-br-netfilter bridge-utils ifconfig br-lan up brctl addbr br-lan brctl addif br-lan eth0.1 #假设eth0.1是你想要加入bridge的真实物理接口名称 ``` 以上操作完成后记得保存当前网络设定以便重启后继续生效。 #### 创建第一个容器 有了上述准备之后就可以着手创建首个测试用途的Linux Container了。下面给出一段脚本用于快速启动基于Debian发行版的基础容器实例: ```bash lxc-create -t download -n mydebiancontainer \ -- --dist debian --release buster --arch armel lxc-start -n mydebiancontainer -d ``` 这段指令将会自动拉取适合ARM架构处理器的最小化Debian Buster根文件系统映像,将其作为新的LXC容器启动起来。 #### 进入容器内部 一旦成功建立了容器,便可以通过以下方式进入其中进行进一步探索或开发活动: ```bash lxc-attach -n mydebiancontainer ``` 此时相当于获得了该容器内的root shell权限,可以在里面自由地安装各种应用程序和服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忘帆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值