当前位置: 首页 > news >正文

ARM Linux DIY(十一)板子名称、开机 logo、LCD 控制台、console 免登录、命令提示符、文件系统大小

文章目录

    • 前言
    • 板子名称
      • uboot Model
      • kernel 欢迎词、主机名
    • 开机 logo
    • LCD 控制台
    • console 免登录
    • 命令提示符
    • 文件系统大小

前言

经过前面十篇文章的介绍,硬件部分调试基本完毕,接下来的文章开始介绍软件的个性化开发。

板子名称

uboot Model

既然是自己的板子,那开机信息当然也要显示自己的。在 uboot 的 dts 文件中,将 model 改为 “V3s DIY”
arch/arm/dts/sun8i-v3s-licheepi-zero.dts

/ {model = "V3s DIY";compatible = "licheepi,licheepi-zero", "allwinner,sun8i-v3s";
};

开机

U-Boot 2022.01 (Sep 07 2023 - 22:58:03 +0800) Allwinner TechnologyCPU:   Allwinner V3s (SUN8I 1681)
Model: V3s DIY // 这里已更改
DRAM:  64 MiB
WDT:   Not starting watchdog@1c20ca0
MMC:   mmc@1c0f000: 0
Loading Environment from FAT... Unable to read "uboot.env" from mmc0:1... In:    serial@1c28000
Out:   serial@1c28000
Err:   serial@1c28000
Net:   No ethernet found.
Hit any key to stop autoboot:  0 

kernel 欢迎词、主机名

在这里插入图片描述
开机

[    2.006117] Run /sbin/init as init process
[    2.148117] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)Welcome to V3s LYJ
v3s-diy login: root
#

开机 logo

在这里插入图片描述
运行
在这里插入图片描述
Linux 吉祥物小企鹅已跃然屏上

LCD 控制台

使用 LCD 作为控制台,键盘作为输入,一台卡片电脑就成型了
在 /etc/inittab 中添加下面这行

tty0::respawn:/bin/sh

tty0 对应 /dev/fb0,也就是 LCD 屏幕的帧缓冲区,原理参考《lcd如何与tty1相对应?》
这样,LCD 就显示 /bin/sh 作为控制台了。
在这里插入图片描述

console 免登录

console 需要输入 root 才能进入系统,简直浪费生命,我需要上电后直接可以输入命令操作
step1: 关闭 getty (登录)进程
在这里插入图片描述
step2: /etc/inittab 中添加

ttyS0::respawn:/bin/sh

开机

[    1.843403] Run /sbin/init as init process
[    1.986286] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
# 
# ls
bin         lib         lost+found  opt         run         tmp
dev         lib32       media       proc        sbin        usr
etc         linuxrc     mnt         root        sys         var
#

这多爽啊,不用在一遍一遍地输入 root 甚至 password 了。

不过,我还想开机后就在 /root 目录,这样更方便些,改成如下

ttyS0::respawn:/bin/sh -c "cd /root; exec /bin/sh"
tty0::respawn:/bin/sh -c "cd /root; exec /bin/sh"

开机

[    1.862823] Run /sbin/init as init process
[    2.005049] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
# pwd
/root

已经基本实现了要求。
不过还是有点瑕疵,就是直接运行 /bin/sh 作为 shell,相当于没有用户的概念,这样执行 cd ~ 就会进入根目录而不是 /root

# cd ~
# pwd
/

后来又找到了一个方案

ttyS0::respawn:/bin/sh -c "exec /bin/login -f root"

这样才是正规的使用 root 用户

[    1.840405] Run /sbin/init as init process
[    1.987648] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
# pwd
/root

命令提示符

像 Ubuntu 等系统,命令行提示符显示用户名、主机名、当前路径,有很好的提示作用
在这里插入图片描述
而我们的系统,一直就只显示一个 #,好不枯燥
在这里插入图片描述
所以这里也要改造一下,
我们知道,命令提示符显示的是 PS1 这个环境变量,我们看下它的值,就是一个 # 号,

# echo $PS1
#

我们在 /etc/profile 文件中修改一下该环境变量
原始

if [ "$PS1" ]; thenif [ "`id -u`" -eq 0 ]; thenexport PS1='# 'elseexport PS1='$ 'fi
fi

修改后

if [ "$PS1" ]; thenif [ "`id -u`" -eq 0 ]; thenexport PS1='\u@\h:\w\# 'elseexport PS1='\u@\h:\w\$ 'fi
fi

运行,用户、主机名、当前路径都显示出来了
在这里插入图片描述
如果能像 Ubuntu 那样显示颜色就更好了,那就给它点颜色瞧瞧

if [ "$PS1" ]; thenif [ "`id -u`" -eq 0 ]; thenexport PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]# 'elseexport PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$ 'fi                                                                                    
fi

运行
在这里插入图片描述
越来越漂亮了

文件系统大小

使用 buildroot 默认编译出来的文件系统大小只有几十兆,这样卡片电脑能够使用的 flash 空间就有限,现将其扩大为 512M
在这里插入图片描述
开机

root@v3s-diy:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               487.6M    210.8M    240.9M  47% /
devtmpfs                 18.3M         0     18.3M   0% /dev
tmpfs                    26.8M         0     26.8M   0% /dev/shm
tmpfs                    26.8M     28.0K     26.8M   0% /tmp
tmpfs                    26.8M     20.0K     26.8M   0% /run

总大小 487M,剩余 240M,够用了。

相关文章:

ARM Linux DIY(十一)板子名称、开机 logo、LCD 控制台、console 免登录、命令提示符、文件系统大小

文章目录 前言板子名称uboot Modelkernel 欢迎词、主机名 开机 logoLCD 控制台console 免登录命令提示符文件系统大小 前言 经过前面十篇文章的介绍,硬件部分调试基本完毕,接下来的文章开始介绍软件的个性化开发。 板子名称 uboot Model 既然是自己的…...

【Unity程序技巧】Unity中的单例模式的运用

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…...

java leetcodetop100 (3,4 )最长连续数列,移动零

top3 最长连续数列 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 * * 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 * * * * 示例 1: * * 输入:nums [100,…...

用Vite从零到一创建React+ts项目

方式一:使用create-react-app命令创建项目 1、使用以下命令初始化一个空的npm 项目 npm init -y 2、输入以下命令安装React npm i create-react-app ps:如果失败的话尝试(1:使用管理员身份执行命令(2:切换镜像重…...

HTTP状态码301(永久重定向)不同Web服务器的配置方法

文章目录 301状态码通常在那些情况下使用301永久重定向配置Nginx配置301永久重定向Windows配置IIS301永久重定向PHP下的301重定向Apache服务器实现301重定向 301重定向是否违反相关法规?推荐阅读 当用户或搜索引擎向服务器发出浏览请求时,服务器返回的HT…...

vue-element-admin项目部署 nginx动态代理 含Docker部署、 Jenkins构建

介绍三种方式: 1.直接部署到nginx中 2.用nginx docker镜像部署 3.使用Jenkins构建 1.直接用nginx部署 vue-element-admin项目下有两个.env文件,.env.production是生产环境的,.env.developpment是开发环境的 vue-element-admin默认用的是mock数…...

使用Python来写模拟Xshell实现远程命令执行与交互

一、模块 这里使用的是 paramiko带三方库 pip install paramiko二、效果图 三、代码实现(这里的IP,用户名,密码修改为自己对应服务器的) import paramiko import timeclass Linux(object):# 参数初始化def __init__(self, ip, us…...

mybatis 数据库字段为空or为空串 忽略条件过滤, 不为空且不为空串时才需nameParam过滤条件

name未配置视为不考虑name条件 select * from user where (( (ISNULL(name)) OR (name) ) OR name #{user.nameParam} ) 三个or语句 推荐这个 select * from user where ISNULL(name) OR name OR name #{user.nameParam} select * from user where ISNULL(name) OR …...

【玩玩Vue】通过vue-store实现枚举管理,用于下拉选项和中英文翻译等

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、store基础用法1.在src下新建store文件夹,在store下新建module文件夹2.在module下新建enums.js文件3.在store下新建getters.js…...

ISCSI:后端卷以LVM 的方式配置 ISCSI 目标启动器

写在前面 准备考试整理相关笔记博文内容涉及使用 LVM 做ISCSI 目标后端块存储 Demo理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的&#…...

八公山豆腐发展现状与销售对策研究

1.引言 八公山豆腐作为中国传统特色食品之一,一直以来备受人们的喜爱。然而,在现代社会中,由于消费者对于营养健康的追求以及市场竞争的加剧,八公山豆腐的市场份额逐渐缩小。因此,为了更好地推广和发展八公山豆腐&…...

排序算法-插入排序

属性 当插入第i(i>1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移 直接插入排序…...

多位数按键操作(闪烁)数码管显示

/*----------------------------------------------- 内容&#xff1a;按键加减数字&#xff0c;多个数码管显示 ------------------------------------------------*/ #include<reg52.h> //包含头文件&#xff0c;一般情况不需要改动&#xff0c;头文件包含特殊功能寄存…...

MyEclipse项目导入与导出

一、项目导出 1、右键选择项目名称&#xff0c;弹出菜单中选择“export”&#xff0c;如下图所示 2、选择“恶心“export”&#xff0c;弹出菜单如下&#xff1b;在“General“选项中&#xff0c;选择“File System”选项 3、点击“next”&#xff0c;进入保存位置选择界面&am…...

ArrayList和LinkedList

最近在刷回溯算法时&#xff0c;遇见了List<Integer> A new ArrayList<>(); LinkedList<Integer> B new LinkedList<>();这类型的表达方式 很好奇的问题是&#xff1a; 1、List<Integer> A new ArrayList<>();为什么是正确的写法 2…...

Linux 配置 Nginx 服务完整详细版

目录 前言 配置Nginx监听端口和服务器块 # 防DDoS配置 # 日志配置 # 设置服务器块 监听端口 网站根目录 默认文件 静态文件目录 图像文件目录 # 自定义错误页面 # 反向代理配置 # 配置SSL/TLS 1、获取SSL/TLS证书 2、安装证书 3、配置SSL/TLS # 配置SSL协议版本…...

Python实现猎人猎物优化算法(HPO)优化LightGBM回归模型(LGBMRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...

无涯教程-JavaScript - ODD函数

描述 ODD函数返回四舍五入到最接近的奇数整数的数字。 ODD函数是Excel中的15个舍入函数之一。 语法 ODD (number)争论 Argument描述Required/OptionalNumberThe value to round.Required Notes 无论数字的符号如何,值都将从零舍入到下一个奇数。如果number是一个奇数整数…...

Easyui里的datagrid嵌入select下拉框

问题&#xff1a; 想使用datagird里嵌入select下拉框&#xff0c;并在提交form表单时获取datagrid选中的每行数据里的每个下拉框选中的值。 解决方案&#xff1a; 其中economicIssuesSelect使用下拉框&#xff0c;重点关注 initEconomicIssues(row)方法。这里的方法需要传递ro…...

计算机专业毕业设计项目推荐03-Wiki系统设计与实现(JavaSpring+Vue+Mysql)

Wiki系统设计与实现&#xff08;JavaSpringVueMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法

使用 ROS1-Noetic 和 mavros v1.20.1&#xff0c; 携带经纬度海拔的话题主要有三个&#xff1a; /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码&#xff0c;来分析他们的发布过程。发现前两个话题都对应了同一…...