ARM 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\]\# 'else[   31.849883] vcc5v0: disabling\[\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,够用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/128555.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云备份——服务端客户端联合测试

一,准备工作 服务端清空备份文件信息、备份文件夹、压缩文件夹 客户端清空备份文件夹 二,开始测试 服务端配置文件 先启动服务端和客户端 向客户端指定文件夹放入稍微大点的文件,方便后续测试断点重传 2.1 上传功能测试 客户端自动上传成功…

【FPGA】通俗理解从VGA显示到HDMI显示

注:大部分参考内容来自“征途Pro《FPGA Verilog开发实战指南——基于Altera EP4CE10》2021.7.10(上)” 贴个下载地址: 野火FPGA-Altera-EP4CE10征途开发板_核心板 — 野火产品资料下载中心 文档 hdmi显示器驱动设计与验证 — …

《服务器无状态设计:为什么如何实现无状态API?》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

高速路自动驾驶功能HWP功能定义

一、功能定义 高速路自动驾驶功能HWP是指在一般畅通高速公路或城市快速路上驾驶员可以放开双手双脚,同时注意力可在较长时间内从驾驶环境中转移,做一些诸如看手机、接电话、看风景等活动,该系统最低工作速度为60kph。 如上两种不同环境和速度…

你参与的APP开发项目安全吗?

Android将安全设计贯穿系统架构的各个层面,覆盖系统内核、虚拟机、应用程序框架层以及应用层各个环节,力求在开放的同时,也恰当保护用户的数据、应用程序和设备的安全。Android安全模型主要提供以下几种安全机制: 进程沙箱隔离机…

【100天精通Python】Day59:Python 数据分析_Pandas高级功能-多层索引创建访问切片和重塑操作,pandas自定义函数和映射功能

目录 1 多层索引(MultiIndex) 1.1 创建多层索引 1.1.1 从元组创建多层索引 1.1.2 使用 set_index() 方法创建多层索引 1.2 访问多层索引数据 1.3 多层索引的层次切片 1.4 多层索引的重塑 2 自定义函数和映射 2.1 使用 apply() 方法进行自定义函…

Stable Diffusion — ControlNet 超详细讲解

Stable Diffusion — ControlNet 超详细讲解 ControlNet 最近非常火🔥!ControlNet 和 Stable Diffusion 的结合使 Stable Diffusion 能够接受指导图像生成过程的条件输入,从而增强了 Stable Diffusion 的性能。今天为大家深入剖析 ControlNe…

Axure RP仿QQ音乐app高保真原型图交互模板源文件

Axure RP仿QQ音乐app高保真原型图交互模板源文件。本套素材模板的机型选择华为的mate30,在尺寸和风格方面,采用标准化制作方案,这样做出来的原型图模板显示效果非常优秀。 原型中使用大量的动态面板、中继器、母版,涵盖Axure中技…

SpringMVC中的综合案例

目录 一.常用注解 实例: 二.参数转递 2.1. 基础类型 2.2. 复杂类型 2.3. RequestParam 2.4.PathVariable 2.5.RequestBody 2.6.RequestHeader 2.7. 请求方法 三.返回值 3.1.void 3.2.String 3.3 StringModel 3.4 ModelAndView 四、页面跳转 4.1.转发 4.…

Python爬虫 教程:IP池的使用

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、简介 爬虫中为什么需要使用代理 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率…

Redis(详细)

目录 Redis是什么 Redis的主要特点 Redis的使用场景 会话存储 缓存存储 实现分布式锁 Redis为什么这么快 基于内存操作 高效的数据结构 多路I/O复用模型 单线程执行 Redis常见的数据结构 Redis有序列表的实现 跳跃表的执行流程 Redis分布式锁实现 使用分布式锁…

【iOS】MVC

文章目录 前言一、MVC各层职责1.1、controller层1.2、model层1.3、view层 二、总结三、优缺点3.1、优点3.2、缺点 四、代码示例 前言 MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此…

win10自带wifi共享功能

1、按下【wini】组合键打开windows设置,点击【网络和internet】; 2、按照下图,打开个移动热点,设置名称、密码。

【C++】详解std::thread

2023年9月10日,周日下午开始 2023年9月10日,周日晚上23:35完成 虽然这篇博客我今天花了很多时间去写,但是我对std::thread有了一个完整的认识 不过有些内容还没完善,以后有空再更新.... 目录 头文件类的成员类型方法(construc…

LVS DR模式负载均衡群集部署

目录 1 LVS-DR 模式的特点 1.1 数据包流向分析 1.2 DR 模式的特点 2 DR模式 LVS负载均衡群集部署 2.1 配置负载调度器 2.1.1 配置虚拟 IP 地址 2.1.2 调整 proc 响应参数 2.1.3 配置负载分配策略 2.2 部署共享存储 2.3 配置节点服务器 2.3.1 配置虚拟 IP 地址 2.3.2…

iOS IdiotAVplayer实现视频分片缓存

文章目录 IdiotAVplayer 实现视频切片缓存一 iOS视频边下边播原理一 分片下载的实现1 分片下载的思路2 IdiotAVplayer 实现架构 三 IdiotAVplayer 代码解析IdiotPlayerIdiotResourceLoaderIdiotDownLoader IdiotAVplayer 实现视频切片缓存 一 iOS视频边下边播原理 初始化AVUR…

自动化运维——ansible (五十二) (01)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、概述 1.1 为什么要用自动化运维软件 1.2 自动化运维 1.3 自动化运维要注意的方面 1.4 自动化运维主要关注的方面 1.5 常见的开源自动化运维软件 1.6 自动化运维软件…

K8S:kubectl陈述式及声明式资源管理

文章目录 一.陈述式资源管理方法1.陈述式资源管理概念2.基本信息查看(1)查看版本信息(2)查看资源对象简写(3)查看集群信息(4)配置kubectl自动补全(5)node节点…

外传-Midjourney的局部重绘功能

今天在抄袭。。。啊不,借鉴 midjourney 官网教程的时候,发现多了一个 局部重绘的功能,意外发觉还不错,分享一下用法。 先给大家说一下,我这段时间都在学习 SD,局部重绘是基操,而 MJ 一直是次次…

为什么要使用设计模式,以及使用设计模式的好处

在软件开发中,衡量软件质量只要包含如下指标: 正确性可维护性可读性可扩展性简洁性可测试性健壮性灵活性可复用性 然而,对于一些刚入行的新程序员来说,往往会注意不到上面这些问题,从而产生了一些让人头皮发麻的烂代…