• ARM Linux DIY(十一)板子名称、开机 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";
    };
    
    • 1
    • 2
    • 3
    • 4

    开机

    U-Boot 2022.01 (Sep 07 2023 - 22:58:03 +0800) Allwinner Technology
    
    CPU:   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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    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
    #
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    开机 logo

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

    LCD 控制台

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

    tty0::respawn:/bin/sh
    
    • 1

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

    console 免登录

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

    ttyS0::respawn:/bin/sh
    
    • 1

    开机

    [    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
    #
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

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

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

    开机

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

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

    # cd ~
    # pwd
    /
    
    • 1
    • 2
    • 3

    后来又找到了一个方案

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

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

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

    命令提示符

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

    # echo $PS1
    #
    
    • 1
    • 2

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

    if [ "$PS1" ]; then
            if [ "`id -u`" -eq 0 ]; then
                    export PS1='# '
            else
                    export PS1='$ '
            fi
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    修改后

    if [ "$PS1" ]; then
            if [ "`id -u`" -eq 0 ]; then
                    export PS1='\u@\h:\w\# '
            else
                    export PS1='\u@\h:\w\$ '
            fi
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    if [ "$PS1" ]; then
            if [ "`id -u`" -eq 0 ]; then
                    export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]# '
            else
                    export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$ '
            fi                                                                                    
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    文件系统大小

    使用 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

  • 相关阅读:
    【Spring Boot】Spring Boot集成RabbitMQ
    深入浅出排序算法之计数排序
    小米商城侧边栏【显示向右箭头】
    速盾:cdn影响seo吗?
    【洛谷 P1029】[NOIP2001 普及组] 最大公约数和最小公倍数问题 题解(辗转相除法)
    【CSH 入门基础 9 -- 输出 csh 脚本中每一句命令】
    List 删除其中的空元素或者null元素
    Google-Spyder:Google搜索引擎关键词检索结果抓取
    Junit单元测试
    基于粒子群优化的支持向量机房价预测分析
  • 原文地址:https://blog.csdn.net/lyndon_li/article/details/132748622