imx8笔记--Ubuntu文件系统


操作系统: Debian8
硬件平台: i.mx8


1.下载Ubuntu基础包

$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/ubuntu-base-18.04-base-arm64.tar.gz
$ tar -xf ubuntu-base-18.04-base-arm64.tar.gz -C /opt/imx8/rootfs

解压编译后的modules至rootfs/lib目录下(重要)


2.安装qemu工具(重要)

$ sudo apt-get install qemu-user-static
$ sudo cp  /usr/bin/qemu-aarch64-static /opt/imx8/rootfs/usr/bin/

qemu工具主要是用于在宿主机上模拟arm架构的虚拟机


3.写两个挂载与卸载的脚本
ch-mount.sh

#!/bin/bash
echo "MOUNTING"
sudo mount -t proc /proc ${1}proc
sudo mount -t sysfs /sys ${1}sys
sudo mount -o bind /dev/ ${1}dev
sudo mount -o bind /dev/pts ${1}dev/pts
sudo chroot ${1}

umount.sh

#!/bin/bash
echo "UNMOUNTING"
sudo umount ${1}proc
sudo umount ${1}sys
sudo umount ${1}dev/pts
sudo umount ${1}dev

4. 运行脚本挂载文件系统:

$ sudo sh ch-mount.sh /opt/imx8/rootfs/
MOUNTING
root@debian:/#

5.安装软件
修改源: 国内的源速度会快很多,此时vi还不能用,所以得用sed来修改,其实这一步可以在重挂载前修改。

# cp /etc/apt/sources.list /etc/apt/sources.list-bak
# sed -i 's/ports\.ubuntu\.com/mirrors\.tuna\.tsinghua\.edu\.cn/g' /etc/apt/sources.list

安装软件:

# apt update
# apt install sudo
# apt install language-pack-en-base
# apt install vim 
# apt install ssh
# apt install net-tools
# apt install ethtool 
# apt install ifupdown
# apt install iputils-ping
# apt install rsyslog
# apt install htop 

6.基本设置

设置串口: 重要:不设置的话无法进入控制台,ssh包安装后才支持systemctl命令。

# systemctl enable getty@ttymxc0.service

设置root密码:

# passwd

修改DNS:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

设置网络:

# echo auto eth0 > /etc/network/interfaces.d/eth0
# echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0

设置主机名称:

# echo oroct > /etc/hostname

7.安装xfec桌面

# apt-get install xinit 
# apt-get install xdm 
# apt-get install xfce4 

8.打包文件系统
先退出

# exit

再卸载:

$ sudo sh mount.sh /opt/imx8/rootfs/

打包:

# cd rootfs
# tar -jcvf ../rootfs.tar.bz2 ./*

将打包好的文件复制至SD卡目录下,替换掉原有文件即可。


问题处理

/usr/bin/mandb: can't chmod /var/cache/man/pt_BR/CACHEDIR.TAG: Operation not permitted

解决方案

# mandb -csp

附录:移植qeum

$ wget https://download.qemu.org/qemu-4.1.1.tar.xz
$ xz -d qemu-4.1.1.tar.xz
$ tar -xvf qemu-4.1.1.tar
$ cd qemu
$ ./configure --static --disable-system --enable-linux-user
$ make && make install

编译错误解决:
ERROR: glib-2.48 gthread-2.0 is required to compile QEMU
apt-get install libgtk2.0-dev
apt-get install pkg-config

rules.mak:124: recipe for target 'qemu-nbd' failed
--disable-tools

- 阅读全文 -

Linux系统应用--搭建基于Gitea的git服务器


文章摘要: Gitea全称Git with a cup of tea,一款极易搭建的自助 Git 服务。
操作系统: Debian


1.下载安装:
从根据系统平台Gitea官方网站下载最新的二进制安装包,放入/usr/local/bin目录中。
创建数据库存db_gitea
创建git用户


2.配置自动运行脚本:

#/etc/systemd/system/gitea.service
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
Requires=mysql.service

[Service]
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/opt/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/gitea.conf
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/opt/gitea

3.配置nginx端口转发:

# /etc/nginx/sites-enabled/gitea.conf
server {
    server_name git.doit.pub;
    location / {
        proxy_pass  http://127.0.0.1:3000;
        proxy_set_header Host $proxy_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

从命令行创建用户:

# gitea admin create-user --username user --password 888888 --email user@example.com
                         

修改用户密码:

# gitea admin change-password --username user --password 123456

注意事项:
admin是指管理员账户名称

- 阅读全文 -

树莓派笔记--菜单命令


文章摘要: 本文主要列举了树莓派常用菜单对应的命令,可通过Alt+F2调出输入框输入后执行。
硬件平台:树莓派4B
操作系统:raspios


终端: lxterminal
主菜单编辑器(Main Menu Editor): alacarte
系统配置:rc_gui

- 阅读全文 -

树莓派笔记--制作安装映像


查看映像分区信息:

# fdisk -l 2020-06-21-raspios-4.19.img 

Disk 2020-06-21-raspios-4.19.img: 3.6 GiB, 3829399552 bytes, 7479296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9fb1957f

Device                       Boot  Start     End Sectors  Size Id Type
2020-06-21-raspios-4.19.img1        8192  532479  524288  256M  c W95 FAT32 (LBA)
2020-06-21-raspios-4.19.img2      532480 7479295 6946816  3.3G 83 Linux

Units:指明sectors单位(目前一般都为512字节)
Start: 分区起始地址(单位由Units说明)
End : 分区结束位置
Size : 分区大小
Type : 分区类型


挂载第1个分区

# mount 2020-06-21-raspios-4.19.img /mnt/boot -t vfat -o rw,loop,offset=4194304,sizelimit=45297664

挂载第2个分区

# mount 2020-06-21-raspios-4.19.img /mnt/rootfs/ -t ext4 -o rw,loop,offset=$((532480*512))

offset: 分区起始偏移位置,单位字节(重要,需要在位置读取分区信息),4194304 = 8192*512,可以用单位M来表示。
也可以采用乘法表达式来表述(shell规则需要加$(())),比较直观。
sizelimit:分区容量,单位字节(可省略,系统貌似会自动计算)
rw: 可读写
loop:环回设备(可省略)

查看挂载状态

$ df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/loop0      253M   51M  202M   21% /mnt/boot
/dev/loop1      3.2G  2.7G  358M   89% /mnt/rootfs

挂载完成就可以直接进行修改镜像内容了,将编译好的内核、模块、设备树文件分别替换原来的文件就可以了。


挂载脚本:

#/bin/sh
IMG_FILE=raspios.img

# Initialization
action=$1
[ -z $1 ] && action=-a

case "${action}" in
    -a | mount)
    echo mount ${IMG_FILE}
    sudo mount ${IMG_FILE} /mnt/boot   -t vfat -o rw,loop,offset=$((8192*512)) 
    sudo mount ${IMG_FILE} /mnt/rootfs -t ext4 -o rw,loop,offset=$((532480*512)) 
    ;;
    
    -r | umount)    
    echo umount ${IMG_FILE}
    sudo umount /mnt/boot
    sudo umount /mnt/rootfs
    ;;
    
    *)
    ;;
esac

增加磁盘镜像:

# dd if=/dev/zero of=raspios-hndfsj.img bs=1M count=0 seek=8000

seek指明写入的偏移位置,单位为bs指定的值;
count=0,实际上不复制数据,seek为置就为磁盘大小,否则会在seek位置再添加数据。

减小磁盘镜像:
先用分区工具无损修改分区大小,再用dd命令复制指定大小的数据至新的镜像文件中。


取消开机提示pi用户密码未修改:
删除文件:/etc/xdg/autostart/pprompt.desktop

- 阅读全文 -

Linux系统应用--修改开机logo


硬件平台: 树莓派4B
内核版本: linux-rpi-4.19


修改开机logo图片:

1.首先把PNG图片转换成ppm224文件

# pngtopnm logo.png > logo.pnm
# pnmquant 224 logo.pnm > logo224.pnm
# pnmtoplainpnm logo224.pnm > logo_linux_clut224.ppm

2.将文件替换drivers/video/logo/logo_linux_clut224.ppm

# cp logo_linux_clut224.ppm drivers/video/logo/

3.重新编译内核即可。


修改logo数量:

修改fb_show_logo函数:

// drivers/video/fbdev/core/fbmem.c    
int fb_show_logo(struct fb_info *info, int rotate)
{
    int y;
    y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
                  num_online_cpus());    //最后一个参数代表logo数量
    y = fb_show_extra_logos(info, y, rotate);    
    return y;
}

修改logo中心对齐:
1.修改fb_show_logo_line函数image.dx,image.dy的值:

// drivers/video/fbdev/core/fbmem.c  
image.dx = (info->var.xres - logo->width)  / 2;  
image.dy = (info->var.yres - logo->height) / 2; 

2.修改fbcon_prepare_logo函数中logo_height的值

// drivers/video/fbdev/core/fbcon.c
logo_height = fb_prepare_logo(info, ops->rotate);
// 添加这一行
logo_height+= (info->var.yres - logo_height) /2;

Note:info->var.xres和info->var.yres是分辨率


配置选项:

Device Drivers --->    
    Graphics support --->
        [*]Boot logo --->
            [*] Standard 224-color Linux logo      

Device Drivers --->     
    Graphics support --->
        Console display driver support --->
            <*> Framebuffer Console support

如果编译时提示错误:

drivers/video/logo/logo_linux_clut224.ppm: Binary PNM is not supported
Use pnmnoraw(1) to convert it to ASCII PNM

原因是因为ppm 图片是bin格式,需要转换成ascii 格式:

# pnmnoraw logo_linux_clut224.ppm > logo_linux_clut224_ascii.ppm

- 阅读全文 -


Copyright©2025 春天花会开, All Rights Reserved. Email: webmaster@oroct.com