分类 Linux 下的文章

服务器开启 tftp 用来传输 dtb 和 kernel vmimage

配置 tftp 服务端

首先安装 tftp 服务, sudo apt install tftpd-hpa,然后检查服务是否启动,sudo systemctl status tftpd-hpa,这个需要等待一会才能返回信息。

然后配置 tftp 服务, sudo vim /etc/default/tftpd-hpa,username 这一项要和 tftp 目录的 owner 相对应,address 是对应的端口号, options 中的 secure 是自动更新目录,create 是可以创建和上传文件。 修改如下:

TFTP_DIRECTORY="/tftpboot"

然后是配置 tftp 目录:

sudo mkdir /tftp
sudo chown tftp:tftp /tftp

接着是重启并检查状态:

sudo systemctl restart tftpd-hpa
sudo systemctl status tftpd-hpa

在客户端安装 tftp 客户端,测试服务端有没有问题。

首先安装 tftp 客户端 sudo apt install tftp-hpa, 然后再服务器端使用 ifconfig 或者 ip -a 来获取服务器地址,然后再客户端使用 tftp 192.168.0.10 类似的命令来连接上服务器端的 tftp 服务。 在 tftp 的环境下,输入 verbose 开启 verbose 模式,然后可以通过 get xxx.txt 来下载文件,通过 put xxx.txt 来上传文件。 都是从当前目录进行上传和下载,最后使用 quit 来退出 tftp 模式。

可以使用 ? 或者 help 来查询命令。

参考:

https://linuxhint.com/install_tftp_server_ubuntu/ https://wangchujiang.com/linux-command/c/tftp.html

服务器开启 nfs 用来共享 rootfs

配置 nfs 服务器端

首先安装nfs,sudo apt install nfs-kernel-server.

然后创建 nfs 文件夹, sudo mkdir -p /nfs/rootfs/, 然后因为 nfs 传输 root 属性的文件时会改为 nobody:nogroup,所以需要修改文件夹的 owner,sudo chown nobody:nogroup /nfs/rootfs/

然后修改 exports,sudo vim /etc/exports,内容增加 /nfs/rootfs *(rw,sync,no_root_squash)

然后重启 nfs 服务,sudo systemctl restart nfs-kernel-server

然后检查 ufw 状况, sudo ufw status,如果启动,那么需要 sudo ufw allow from 203.0.113.24 to any port nfs 类似这样的来放行。

安装 nfs 客户端

首先安装 nfs, sudo apt install nfs-common. 然后新建测试文件夹,mkdir nfs_test 挂载nfs,sudo mount 192.168.0.10:/nfs/rootfs /home/xyz/nfs_test/ 使用 df -h 可以查看挂载的情况,使用 du -sh ./nfs_test/ 可以查看文件夹内部使用情况。

测试

在客户端上创建一个文件,在客户端上就能够查看到,使用 ll 命令可以查看 owner,如果在服务器端配置 exports 里面的 no_root_squash,那么就是 root,否则就是 nobody:nogroup

参考:

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-18-04 https://blog.csdn.net/flfihpv259/article/details/53926871?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-8.control&dist_request_id=1332042.22423.16193225079781727&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-8.control https://blog.csdn.net/qq_36357820/article/details/78488077

修改内核

修改内核中的选项

File systems  ---> 
   [*] Network File Systems  ---> 
       <*>   NFS client support 
       <*>     NFS client support for NFS version 2
       <*>     NFS client support for NFS version 3     
       [*]   Root file system on NFS

General setup  --->
   [N] Initial RAM filesystem and RAM disk (initramfs/initrd) support

准备文件

准备内核和设备树

复制 boot.img 和 dtb.img 到 tftp 目录

修改boot

修改 uboot 变量

setenv nfsfile boot.img
setenv rootpath /nfs/rootfs/
setenv ipaddr 10.15.5.3
setenv serverip 10.15.5.30
setenv nfsargs 'set bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} proto=tcp nfsvers=3 clkin_hz=(25000000) earlyprintk=serial,uart0,115200 console=ttySC0,115200 mem=224M'
setenv nfsboot 'tftp ${loadaddr} ${nfsfile};tftp ${dtbaddr} ${dtbfile};run nfsargs;run addip;bootm ${loadaddr} - ${dtbaddr}'
setenv bootcmd run nfsboot

测试网络

使用 ping 来测试和服务器之间通不通。

下载内核

tftp

参考:

https://docs.khadas.com/zh-cn/vim3/LoadImagesWithUBootViaTFTP.html https://blog.csdn.net/Slade99X/article/details/104774142

加载文件系统

kernel 通过 drm 向 hdmi 设备进行显示,资料可以参考: https://zhuanlan.zhihu.com/p/59784377 https://zhuanlan.zhihu.com/p/60504398 https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html?highlight=writeback https://www.kernel.org/doc/html/v4.17/gpu/drm-kms.html https://blog.csdn.net/u014674293/article/details/105774238 https://www.cnblogs.com/mao0504/p/5619107.html https://blog.csdn.net/hexiaolong2009/article/details/89810355

调整 hdmi 分辨率: https://forum.khadas.com/t/hdmi-resolutions-testing/618/6

增加分辨率: https://cc.bingj.com/cache.aspx?q=%e5%a6%82%e4%bd%95%e8%ae%a9linux%e5%86%85%e6%a0%b8%e6%94%af%e6%8c%81%e6%9b%b4%e5%a4%9a%e5%88%86%e8%be%a8%e7%8e%87&d=4907167835104881&mkt=zh-CN&setlang=zh-CN&w=UBOysQ8Kvqy3hdq6jwa-IuOL_R-qi-XU

xz 格式是一种新的压缩率高的格式,但是需要消耗很多时间进行压缩,幸好支持多线程。 和 tar 命令联合使用的时候,如下格式即可。T0 表示尽可能多的线程。

tar cvf archive.tar.xz --use-compress-program='xz -1T0' *.csv

参考: https://www.baeldung.com/linux/xz-compression https://stackoverflow.com/questions/22244962/multiprocessor-support-for-xz https://www.itranslater.com/qa/details/2122665251421291520 https://github.com/batocera-linux/batocera.linux/pull/1415

debian

1. useradd -m xyz m 表示在 home 下创建相应的用户目录。

2. passwd xyz

3. usermod -a -G wheel xyz

如果出现错误提示,那么需要 usermod: group 'wheel' does not exist, 需要 addgroup wheel 参考: https://superuser.com/questions/716636/i-cant-add-a-user-to-the-wheel-group/716637

4. vi /etc/pam.d/su

auth       required   pam_wheel.so

5. vi /etc/login/refs

SU_WHEEL_ONLY yes

参考: https://blog.csdn.net/cbbbc/article/details/51712913

6. apt-get update, apt install sudo 安装 sudo

chmod u+w /etc/sudoers vi /etc/sudoers chmod u-w /etc/sudoers

%wheel  ALL=(ALL:ALL) ALL

参考: https://blog.csdn.net/xiaotengyi2012/article/details/7340822

7. 创建用户后,可能出现 tab 按键不能使用的问题。

vi /etc/passwd,找到用户名对应的哪一行, 把 sh 改为 bash 参考: https://blog.csdn.net/rzhzhz/article/details/7573201 https://www.cnblogs.com/klobohyz/archive/2011/12/22/2297392.html

centos

useradd xyz
passwd xyz
usermod -aG wheel xyz

参考: https://phoenixnap.com/kb/how-to-create-add-sudo-user-centos

ubuntu

adduser -m xyz
ls /home
passwd xyz
usermod -aG sudo xyz

参考: https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04

今天碰到一个情况,分辨率太大,导致左下角的菜单显示不出来,无法调整分辨率。

cd /usr/share/applications
sudo lxrandr

就可以运行分辨率设置的程序了。