首页
壁纸
直播
留言板
更多
视频
统计
友情链接
实用工具
Search
1
给孙小姐的一封情书
111 阅读
2
armUbuntu | uboot常用指令
62 阅读
3
Linux | Linux通过stty命令操作串口设备(linux串口操作命令)
55 阅读
4
armUbuntu系统构建
53 阅读
5
编译 openwrt 及初始配置-及部分排错
50 阅读
取次花丛懒回顾
默认分类
C#
MySQL
LabVIEW
Java
Android
PHP
Python
handsome
相册
百度地图
嵌入式
嵌入式Ubuntu
linux
Unity
Golang
Rust
Search
标签搜索
C#
handsome
Git
动态壁纸
开源
Unity3d
Unity
csharp
魔傲手记
累计撰写
117
篇文章
累计收到
18
条评论
首页
栏目
取次花丛懒回顾
默认分类
C#
MySQL
LabVIEW
Java
Android
PHP
Python
handsome
相册
百度地图
嵌入式
嵌入式Ubuntu
linux
Unity
Golang
Rust
页面
壁纸
直播
留言板
视频
统计
友情链接
实用工具
搜索到
117
篇与
的结果
2023-10-18
给孙小姐的一封情书
和孙小姐在一起已经九个年头了。 2014 年确立关系。 2017 年共赴神都洛阳。 2019 开启异地恋,我留洛阳参加工作,你去郑州继续进修。 时至今日,已度过 4 个年头的异地恋。期间度过了疫情,我们身处两地,被隔离在不同的区域中。那段时光并不是特别美好,但却让我们的感情更加坚定。 很多年前我们与焦作相识,一起度过了无数甜蜜美好的时光,成为了彼此生命中的重要人物。回想起我们一起经历的事情,我内心充满了感激和珍惜。 我们曾一起度过了无数个快乐和难熬的日子。无论是学习还是生活,我们总是互相鼓励、支持和帮助。你总是给予我最真诚的建议和关怀,让我感受到你对我的深深关心。 记得那年夏天,我们还是懵懂的大学生,一起参参加社团联合会的各项活动,为不同的社团提供帮助。你总是阳光开朗,无私地帮助他人,这种善良和乐观的态度深深地打动了我。 我们曾一起度过了许多欢笑和泪水。在我遇到困难和挫折时,你总是在我身边给我力量和支持。你的聪明才智、坚定意志和乐观向上的态度成为了我学习和成长的榜样。 我们曾一起追逐过许多梦想。你的努力和付出一直激励着我不断前进。在你身上,我看到了坚持和努力的重要性,也学会了对待事业和人生的积极态度。 都说没有经历过异地恋的爱情是不完整的,在我们恋爱的第四个年头,我们也补齐了这段不完整的恋爱。时至今日,异地恋已有四年之久,当初种下的恋爱树,现在也要结果了。与 2023 年 10 月 13日,一同窥望婚姻的殿堂,一纸契约定下我们往后的余生。 在这个特别的时刻,我想向你表达我内心深处的情感和真挚的爱意。自从我们相识以来,我的生活因为有了你而变得更加丰富和美好,我的内心也因着对你的深深眷恋而愈发充实。 每当我想起我们一起经历的点点滴滴,我的心中便涌动起一阵幸福的暖流。我们一起度过了无数的欢笑和泪水,共同经历了生活的风风雨雨。无论是甜蜜的时光还是困难的日子,你始终是我坚强的后盾,给予我无尽的勇气和支持。 在我遇到挫折和困难时,你总是在我身边默默地守护着我,给我温暖和鼓励。你那乐观、善良和坚定的品质深深地打动了我,也让我深信你就是我今生最爱的人。 我愿意陪伴你度过人生中的每一个重要时刻,分享你的喜怒哀乐。我愿意与你一同携手,共同面对未来的挑战和困难,一同追寻生命中的美好和幸福。 我知道婚姻并不仅仅是一场盛大的仪式,更是我们共同承担责任和关心彼此的承诺。我会珍惜我们之间的爱情,用我的全心全意去呵护并照顾你,让你在我的怀抱里感受到幸福和安心。 最后,我想对你说,我爱你,将来的每一天都是为了你而精彩! 爱你的, 王先生
2023年10月18日
111 阅读
3 评论
0 点赞
2023-09-28
armUbuntu | uboot常用指令
清除环境变量env default -a保存环境变量清除过环境变量之后也要保存才能生效saveenv设置板子IP地址,mac地址,网关地址,子网掩码,目标IP地址setenv ipaddr 192.168.10.50 setenv ethaddr 00:04:9f:04:d2:35 setenv gatewayip 192.168.10.1 setenv netmask 255.255.255.0 setenv serverip 192.168.10.100 saveenv
2023年09月28日
62 阅读
0 评论
0 点赞
2023-09-27
armUbuntu系统构建
移植 Ubuntu 的最小根文件系统硬件 正点原子的I.MX6ULL开发板环境系统 (Ubuntu 16.04,搭建好TFTP目录和NFS目录)EMMC启动 10100110使用 mfgtool 上位机固化系统(OTG 方式) 01000000以 ALPHA 底板为例,请先插上开发板的 12v 电源,OTG 接口不能供电给开发板。底板拨码开关 BOOT_CFG 设置如下,设置为 USB 连接方式,“1”代码 ON,“0”代表“OFF”。将拨码数字 2 处拨到 ON,其他的为 OFF。下载下载地址http://cdimage.ubuntu.com/最小系统(根文件系统)选择ubuntu-baseUbuntu 针对不同的 CPU 架构提供相应的 ubuntu base 根文件系统,有 amd64(64 位 X86)、 armhf、 i386(32 位 X86)、 powerpc、 ppc64el 等系统的。我用的I.MX6ULL 是 Cortex-A 内核的 CPU,并且有硬件浮点运算单元,因此选择 armhf 版本。在http://cdimage.ubuntu.com/ubuntu-base/releases/16.04.5/release/中找到“ubuntu-base-16.04.5-base-armhf.tar.gz”,也就是 16.04.5 版本的 ubuntu base 根文件系统,将其下载下来。ubuntu 根文件系统构建搭建TFTP目录-TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。我们可以使用 TFTP 来加载内核 zImage、设备树和其他较小的文件到开发板 DDR 上,从而实现网络挂载。示例中~/tmp/tftp目录为tftp目录有需要自行替换~(用户目录为)/home/alientek安装和配置 xinetd安装sudo apt-get install xinetd查询/etc/下是否存在 xinetd.conf 文件,没有的话则自己新建一个。sudo vi /etc/xinetd.confxinetd.conf 文件内容如下:# Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults { # Please note that you need a log_type line to be able to use log_on_success # and log_on_failure. The default is the following : # log_type = SYSLOG daemon info } includedir /etc/xinetd.dTFTP 目录新建 TFTP 目录,这里建立在 ~/tmp 目录下,目录名为 tftp。将 tftp 目录赋予可读可写可执行权限。创建 mkdir -p ~/tmp/tftp 赋予权限 sudo chmod ~/tmp/tftptftp-hpa 和 tftpd-hpa 服务程序安装 tftp-hpa 和 tftpd-hpa 服务程序sudo apt-get install tftp-hpa tftpd-hpa打开 tftpd-hpa 配置文件sudo vi /etc/default/tftpd-hpa修改 tftp 目录为 TFTP 服务器工作目录执行以下指令创建/etc/xinetd.d/tftp 配置文件。(如果没有 xinetd.d 这个目录,可以先自己手动创建)sudo vi /etc/xinetd.d/tftp/etc/xinetd.d/tftp文件内容注意 server_args = -s 后面要添加自己的 tftp 工作路径。 servicetftp { socket_type = dgram wait = yes disable = no user = root protocol = udp server = /usr/sbin/in.tftpd server_args = -s /home/alientek/tmp/tftp -c #log_on_success += PID HOST DURATION #log_on_failure += HOST per_source = 11 cps =100 2 flags =IPv4 }重启 tftpd-hpa 服务sudo service tftpd-hpa restart重启 xinetd 服务sudo service xinetd restart至此创建完成搭建NFS目录网络文件系统,英文 Network File System(NFS),是由 SUN 公司研制的 UNIX 表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。我们可以在 Ubuntu 上制作开发板的根文件系统,然后使用 NFS 来加载根文件系统到开发板的DDR 上。示例中~/tmp/nfs目录为nfs目录有需要自行替换~(用户目录为)/home/alientek安装 NFS 服务安装 NFSsudo apt-get install nfs-kernel-serverNFS 共享目录新建 NFS 共享目录,并给予 NFS 目录可读可写可执行权限。sudo mkdir ~/tmp/nfs sudo chmod 777 ~/tmp/nfs/配置 NFS 服务执行以下指令打开 etc/exports 文件sudo vi /etc/exports进入 etc/exports 文件,在最后添加如下内容/home/alientek/tmp/nfs *(rw,sync,no_root_squash)/home/alientek/tmp/nfs 表示 NFS 共享的目录*表示允许所有的网络段访问rw 表示访问者具有可读写权限sync 表示将缓存写入设备中,可以说是同步缓存的意思no_root_squash 表示访问者具有 root 权限。重启 NFS 服务器sudo /etc/init.d/nfs-kernel-server restart查看 NFS 共享目录showmount -e如果输出正确则配置完成解压缩 ubuntu base 根文件系统为了存放 ubuntu base 根文件系统,先在 PC 的 Ubuntu 系统中的 nfs 目录下创建一个名为 ubuntu_rootfs 的目录,命令如下:cd /home/alientek/tmp/nfs mkdir ubuntu_rootfs将“ubuntu-base-16.04.5-base-armhf.tar.gz”拷贝到上面创建的“rootfs”目录中,然后使用如下命令对其解压缩:sudo tar -zxvf ubuntu-base-16.04.5-base-armhf.tar.gzubuntu base 解压以后就是大家最常见的 linux 根文件系统,但是目前还不能直接使用,还需要对其做一些其他的配置。安装 qemu需要在 PC 的 Ubuntu 上安装 qemu 工具,命令如下:sudo apt-get install qemu-user-static将刚刚安装的 qemu-user-static 拷贝到刚刚解压出来的 ubuntu base 目录中,也就是rootfs/usr/bin 目录下,命令如下:cd /home/alientek/tmp/nfs/ubuntu_rootfs sudo cp /usr/bin/qemu-arm-static ./usr/bin/设置软件源我们在 ubuntu 下使用 apt-get 安装软件的时候,是从网上下载软件并安装的,因此需要指定软件源。在设置软件源之前先将 Ubuntu 主机下的 DNS 配置文件/etc/resolv.conf 拷贝到根文件系统中,命令如下:(nameserver 223.6.6.6)cd /home/alientek/tmp/nfs/ubuntu_rootfs sudo cp /etc/resolv.conf ./etc/resolv.conf设置软件源,打开根文件系统中的 ubuntu_rootfs/etc/apt/sources.list 文件,在此文件最后面添加软件源,比如国内常用的清华源、中科大源等等,这些软件源可以直接在网上查找。cd /home/alientek/tmp/nfs/ubuntu_rootfs vim ./etc/apt/sources.list根据网上的推荐,我们使用如下所示的中科大软件源(这里非常感谢一位网名为“兔子”的网友提醒并测试):#中科大源 deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe也可使用清华源:清华源地址:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/arm需要使用 ubuntu-ports 镜像:(https://mirror.tuna.tsinghua.edu.cn/help/ubuntu-ports/)[https://mirror.tuna.tsinghua.edu.cn/help/ubuntu-ports/]ubuntu16.04 的 ARM 源# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse # deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse # # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse # deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-proposed main restricted universe multiverse # # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-proposed main restricted universe multiverseubuntu22.04 的 ARM 源# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse # deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse在主机挂载并配置根文件系统在主机挂载根文件系统接下来将上面制作的根文件系统挂载到主机上,需要挂载 proc、sys、dev、dev/pts 等文件系统,最后使用 chroot 将主机的根文件系统切换到我们前面制作的根文件系统中。这里我们通过两个脚本文件来完成挂载和卸载操作,首先是挂载脚本 mount.sh,在rootfs 目录下创建一个名为 mount.sh 的 shell 脚本,然后在里面输入如下所示内容:#!/bin/bash echo "MOUNTING" sudo mount -t proc /proc /home/alientek/tmp/nfs/ubuntu_rootfs/proc sudo mount -t sysfs /sys /home/alientek/tmp/nfs/ubuntu_rootfs/sys sudo mount -o bind /dev /home/alientek/tmp/nfs/ubuntu_rootfs/dev sudo mount -o bind /dev/pts /home/alientek/tmp/nfs/ubuntu_rootfs/dev/pts sudo chroot /home/alientek/tmp/nfs/ubuntu_rootfs再编写一个卸载的脚本文件,新建名为 unmount.sh 的 shell 脚本,在里面输入如下所示内容:#!/bin/bash echo "UNMOUNTING" sudo umount /home/alientek/tmp/nfs/ubuntu_rootfs/proc sudo umount /home/alientek/tmp/nfs/ubuntu_rootfs/sys sudo umount /home/alientek/tmp/nfs/ubuntu_rootfs/dev sudo umount /home/alientek/tmp/nfs/ubuntu_rootfs/dev/pts最后给予 mount.sh 和 unmount.sh 这两个 shell 脚本可执行权限,命令如下:sudo chmod 777 mount.sh unmount.sh一切准备就绪以后执行 mount.sh 脚本,将制作的根文件系统挂载到主机下,输入如下命令:./mount.sh安装常用的命令和软件由于 ubuntu base 是一个最小根文件系统,很多命令和软件都没有,因此我们需要先安装一下常用的命令和软件,输入如下命令(注意!是在电脑的 Ubuntu 下输入这些命令,因为现在电脑的 Ubuntu 正挂载着我们移植的 Ubuntu-base 根文件系统):更新列表apt update更新包(这一步可以忽略)apt upgrade安装1(1和2选一个就行)apt install -y sudo vim kmod net-tools ethtool ifupdown language-pack-en-base rsyslog htop iputils-ping wget curl apt-transport-https安装2(1和2选一个就行)apt update apt install sudo apt install vim apt install kmod apt install net-tools apt install ethtool apt install ifupdown apt install language-pack-en-base apt install rsyslog apt install htop apt install iputils-ping apt install wget apt install curl apt install apt-transport-https我们就先安装这些命令和软件,保证 ubuntu base 根文件系统能够在开发板上正常启动即可,等启动以后再根据实际情况继续安装其他的命令和软件。设置 root 用户密码设置一下 root 用户的密码,这里我设置简单一点,root 用户密码也设置为“root”,相当于用户名和密码一样,命令如下:passwd root输入“passwd root”以后会让你输入 root 用户密码,输入两次设置本机名称和 IP 地址输入如下命令设置本机名称和 IP 地址:echo "alientek_imx6ul" > /etc/hostname echo "127.0.0.1 localhost" >> /etc/hosts echo "127.0.0.1 alientek_imx6ul" >> /etc/hosts设置串口终端ubuntu 根文件系统在开发板上启动以后我们通常也希望串口终端正常工作,这里根据网友的介绍需要创建一个链接。首先确定自己所使用的串口设备文件,比如正点原子的 ALPHA 开发 板 使 用 的 UART1 对 应 的 串 口 设 备 文 件 为 ttymxc0 ,我们需要添加一个名为 getty@ttymxc0.service 的链接,链接到 getty@.service 服务上,输入如下命令:ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttymxc0.service设置好以后就可以退出根文件系统了,输入如下命令退出:exit退出以后再执行一下 unmount.sh 脚本取消挂载,命令如下:./unmount.sh至此,ubuntu base 根文件系统就已经制作好了,接下来就是挂载到开发板上去测试。打包:cd ubuntu_rootfs tar -jcvf ubuntu_rootfs.tar.bz2 *ubuntu 根文件系统测试nfs 挂载测试tftp和nfs都搭建完成后,在tftp中放入zImage和imx6ull-alientek-emmc.dtb;并在开发板uboot中设置好tftp和nfs(bootargs和bootcmd)首先设置开发板uboot的网络相关信息I.MX6U-ALPHA 开发板有两个网口:ENET1 和 ENET2,一定要连接 ENET2(靠近com3口那一侧的),不能连接错了环境变量描述ipaddr开发板 ip 地址,可以不设置,使用 dhcp 命令来从路由器获取 IP 地址。ethaddr开发板的 MAC 地址,一定要设置。gatewayip网关地址。netmask子网掩码。serverip服务器 IP 地址,也就是 Ubuntu 主机 IP 地址,用于调试代码。配置网络相关环境setenv ipaddr 192.168.1.120 setenv ethaddr b8:ae:1d:01:00:00 setenv gatewayip 192.168.1.1 setenv netmask 255.255.255.0 setenv serverip 192.168.1.163 saveenv也可使用dhcp指令从路由器获取ip键入dhcp即可(路由器需要打开dhcp功能/开发板和电脑直连也不可以使用)。注意,网络地址环境变量的设置要根据自己的实际情况,确保 Ubuntu 主机和开发板的 IP 地址在同一个网段内,比如我现在的开发板和电脑都在 192.168.1.0 这个网段内,所以设置开发板的 IP 地址为 192.168.1.120,我的 Ubuntu 主机的地址为 192.168.1.163,因此 serverip 就是 192.168.1.253。ethaddr 为网络 MAC 地址,是一个 48bit 的地址,如果在同一个网段内有多个开发板的话一定要保证每个开发板的 ethaddr 是不同的,否则通信会有问题!设置好网络相关的环境变量以后,使用ping命令测试以下是否可以正常访问Ubuntu主机ping 192.168.1.163如果提示host 192.168.1.163 is alive则代表网络通讯正常其次设置开发板tftp和nfs根文件系统已经制作完成了,接下来就是测试从网络启动 linux 系统的唯一目的就是为了调试!不管是为了调试 linux 系统还是 linux 下的驱动。每次修改 linux 系统文件或者 linux 下的某个驱动以后都要将其烧写到 EMMC 中去测试,这样太麻烦了。我们可以设置 linux 从网络启动,也就是将 linux 镜像文件和根文件系统都放到 Ubuntu 下某个指定的文件夹中,这样每次重新编译 linux 内核或者某个 linux 驱动以后只需要使用 cp 命令将其拷贝到这个指定的文件夹中即可,这样就不用需要频繁的烧写 EMMC,这样就加快了开发速度。我们可以通过 nfs 或者 tftp 从 Ubuntu 中下载 zImage 和设备树文件,根文件系统的话也可以通过 nfs 挂载。这里我们使用 tftp 从 Ubuntu 中下载 zImage 和设备树文件,前提是要将 zImage 和设备树文件放到 Ubuntu 下的 tftp 目录中。搭建好tftp并且放入zImage和设备树文件(dtb文件),nfs目录是制作好的根文件系统设置 bootargs 和 bootcmd 这两个环境变量先用 tftp 从 Ubuntu 中下载 zImage 和设备树文件到开发板,再用 nfs 挂载根文件系统,在 uboot 里面设置 bootargs 和 bootcmd 环境变量的值如下:setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000' setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs \ nfsroot=192.168.1.163:/home/alientek/tmp/nfs/ubuntu_rootfs,proto=tcp rw \ ip=192.168.1.120:192.168.1.163:192.168.1.1:255.255.255.0::eth0:off' saveenvbootargs格式参考:setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs \nfsroot=虚拟机 IP 地址:文件系统路径,proto=tcp rw \ip=开发板 IP 地址:虚拟机 IP 地址:网关:子网掩码::开发板网口:off'saveenv设置完成后,执行 boot 指令可以启动挂载。boot如果能ping通ip不能ping通域名,则可能是dns配置问题,检查两处:查看这两个文件是否有/etc/resolv.confnameserver 223.6.6.6/etc/systemd/resolved.confDNS=223.6.6.6(223.6.6.6是阿里公共dns,可以替换成自己的)。如果没有添加上面的阿里公共dns,然后sudo /etc/init.d/networking restart重启网卡即可。ubuntu 根文件系统烧写通过 nfs 挂载根文件系统测试成功,接下来就可以使用 MfgTool 将 ubuntu 根文件系统烧写到开发板上的 EMMC 或者 NAND 中,烧写方法我们已经在《第三十九章 系统烧写》章节做了详细的讲解(正点原子官方文档是在Windows下进行烧写,这里以Ubuntu下进行烧写为例)。打包 ubuntu 根文件系统首先打包 ubuntu 根文件系统,命令如下:cd ubuntu_rootfs sudo tar -jcvf ubuntu_rootfs.tar.bz2 *打包完成以后就可以使用 MfgTool 工具将 ubuntu 根文件系统烧写到开发板的 EMMC 或NAND 中。烧写 ubuntu 根文件系统暂未挂在上,明天再试
2023年09月27日
53 阅读
1 评论
0 点赞
2023-09-20
一文搞懂网络知识,IP、子网掩码、网关、DNS、端口号
@TOC网络的基本概念客户端:应用 C/S(客户端/服务器) B/S(浏览器/服务器)服务器:为客户端提供服务、数据、资源的机器请求:客户端向服务器索取数据响应:服务器对客户端请求作出反应,一般是返回给客户端数据URLUniform Resource Locator(统一资源定位符)网络中每一个资源都对应唯一的地址——URLIP 、子网掩码 、路由器 、DNSIP地址IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址(每个机器都有一个编码,如MAC上就有一个叫MAC地址的东西)的差异。是32位二进制数据,通常以十进制表示,并以“.”分隔。IP地址是一种逻辑地地址,用来标识网络中一个个主机,在本地局域网上是惟一的。IPIP(网络之间互连的协议)它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址有唯一性,即每台机器的IP地址在全世界是唯一的。这里指的是网络上的真实IP它是通过本机IP地址和子网掩码的"与"运算然后再通过各种处理算出来的(要遵守TCP协议还要加报文及端口什么的,我没有细追究,现在还用不上,反正暂时知道被处理过的就行了),顺便教大家查自己真实IP的方法:子网掩码要想理解什么是子网掩码,就不能不了解IP地址的构成。互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。IP地址的网络号和主机号各是多少位呢?如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。什么是子网掩码子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分子网掩码的设定必须遵循一定的规则。与IP地址相同,子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示;右边是主机位,用二进制数字“0”表示。假设IP地址为“192.168.1.1”子网掩码为“255.255.255.0”。其中,“1”有24个,代表与此相对应的IP地址左边24位是网络号;“0”有8个,代表与此相对应的IP地址右边8位是主机号。这样,子网掩码就确定了一个IP地址的32位二进制数字中哪些是网络号、哪些是主机号。这对于采用TCP/IP协议的网络来说非常重要,只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。常用的子网掩码有数百种,这里只介绍最常用的两种子网掩码。子网掩码是“255.255.255.0”的网络:最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。子网掩码是“255.255.0.0”的网络:后面两个数字可以在0~255范围内任意变化,可以提供255²个IP地址。但是实际可用的IP地址数量是255²-2,即65023个。IP地址的子网掩码设置不是任意的。如果将子网掩码设置过大,也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地主机不在同一子网内的目标主机的数据,会因为错误的判断而认为目标主机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正确到达目标主机,导致网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关(文章下方有解释)的负担,造成网络效率下降。因此,子网掩码应该根据网络的规模进行设置。如果一个网络的规模不超过254台电脑,采用“255.255.255.0”作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此“255.255.255.0”是最常用的IP地址子网掩码;假如在一所大学具有1500多台电脑,这种规模的局域网可以使用“255.255.0.0”。网关网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192.168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目标主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此 所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。路由器(Windows下叫默认网关,网关就是路由,路由就是网关不要蒙)如果搞清了什么是网关,默认网关也就好理解了。就好像一个房间可以有多扇门一样,一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。下方是百度百科给出的解释如何设置默认网关 一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式。手动设置:手动设置适用于电脑数量比较少、TCP/IP参数基本不变的情况,比如只有几台到十几台电脑。因为这种方法需要在联入网络的每台电脑上设置“默认网关”,非常费劲,一旦因为迁移等原因导致必须修改默认网关的IP地址,就会给网管带来很大的麻烦,所以不推荐使用。需要特别注意的是:默认网关必须是电脑自己所在的网段中的IP地址,而不能填写其他网段中的IP地址。自动设置:自动设置就是利用DHCP服务器来自动给网络中的电脑分配IP地址、子网掩码和默认网关。这样做的好处是一旦网络的默认网关发生了变化时,只要更改了DHCP服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的IP地址。这种方法适用于网络规模较大、TCP/IP参数有可能变动的网络。另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,其原理和方法和DHCP有相似之处。由于篇幅所限,就不再详述了。缺省网关缺省网关(Default Gateway)是计算机网络中一个如何将数据包转发到其他网络中的节点。在一个典型的TCP / IP网络,节点(如服务器、工作站和网络设备)都有一个定义的默认路由设置(指向默认网关)。可以在没有特定路由的情况下,明确出发送数据包的下一跳IP地址。下方是百度百科给出的解释:可以看出缺省网关就是默认网关,那么有人会说既然有一样为什么又凭空多出来一个缺省网关,我的理解是这样的,应该说默认网关是缺省网关的一个子集。缺省网关有一个定义的默认路由设置(指向默认网关),缺省网关就相当于一个代理服务器暂时管理发送的数据包,当发送到目标主机时先由目标主机的缺省网关接收再找到对应的默认网关,就相当于缺省网关是父类,默认网关是子类~~DNS服务器域名服务器(Domain Name Server)。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器 。DHCP服务器DHCP指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。提升地址的使用率。MAC地址MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。(知道这个就行了,不用往下看了)MAC(Media Access Control,介质访问控制)地址前24位叫做组织唯一标志符(Organizationally Unique Identifier,即OUI),是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家。后24位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中MAC地址后24位是不同的。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一定是全球唯一的。比如,著名的以太网卡,其物理地址是48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。以太网地址管理机构(除了管这个外还管别的)(IEEE)(IEEE:电气和电子工程师协会)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。在一个稳定的网络中,IP地址和MAC地址是成对出现的。如果一台计算机要和网络中另一外计算机通信,那么要配置这两台计算机的IP地址,MAC地址是网卡出厂时设定的,这样配置的IP地址就和MAC地址形成了一种对应关系。在数据通信时,IP地址负责表示计算机的网络层地址,网络层设备(如路由器)根据IP地址来进行操作;MAC地址负责表示计算机的数据链路层地址,数据链路层设备(如交换机)根据MAC地址来进行操作。IP和MAC地址这种映射关系由ARP(Address Resolution Protocol,地址解析协议)协议完成。服务器服务器的分类按照软件开发阶段来分,服务器可以大致分为2种(1)远程服务器别名:外网服务器、正式服务器使用阶段:应用上线后使用的服务器使用人群:供全体用户使用速度:服务器的性能、用户的网速(2)本地服务器别名:内网服务器、测试服务器使用阶段:应用处于开发、测试阶段使用的服务器使用人群:仅供公司内部的开发人员、测试人员使用速度:由于是局域网,所以速度飞快,有助于提高开发测试效率本地服务器的选择远程服务器就是本地内网服务器开放外网访问而已如果处于学习、开发阶段,自己搭建一个本地服务器即可端口号端口包括物理端口和逻辑端口。物理端口是用于连接物理设备之间的接口,逻辑端口是逻辑上用于区分服务的端口。TCP/IP协议中的端口就是逻辑端口,通过不同的逻辑端口来区分不同的服务。端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区 分不同的服务的。公认端口(Well-Known Ports)这类端口也常称之为"常用端口"。这类端口的端口号从0到1023,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口是不可再重新定义它的作用对象。80端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。注册端口(Registered Ports)端口号从1025到49151。分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是分配好的公认端口的常用程序。动态和/或私有端口(Dynamic and/or Private Ports)之所以称为动态端口,因为它一般不固定分配某种服务,而是动态分配。
2023年09月20日
22 阅读
0 评论
0 点赞
2023-09-19
Ubuntu | 安装aria2
安装sudo apt-get install aria2配置mkdir /etc/aria2 #新建文件夹 touch /etc/aria2/aria2.session #新建session文件 chmod 777 /etc/aria2/aria2.session #设置aria2.session可写 vim /etc/aria2/aria2.conf #创建配置文件aria2.conf: ## 全局设置 ## ============================================================ # 日志 #log-level=warn #log=/PATH/.aria2/aria2.log # 后台运行 #daemon=true # 下载位置, 默认: 当前启动位置 dir=/home/Aria2/Downloads/ # 从会话文件中读取下载任务 都用绝对路径 input-file=/etc/aria2/aria2.session # 在Aria2退出时保存`错误/未完成`的下载任务到会话文件 save-session=/etc/aria2/aria2.session # 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0 save-session-interval=30 # 断点续传 continue=true # 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M #disk-cache=32M # 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc # 预分配所需时间: none < falloc ? trunc < prealloc # falloc和trunc则需要文件系统和内核支持 # NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项 file-allocation=none # 客户端伪装 user-agent=netdisk;5.2.6;PC;PC-Windows;6.2.9200;WindowsBaiduYunGuanJia referer=http://pan.baidu.com/disk/home # 禁用IPv6, 默认:false disable-ipv6=true # 其他 always-resume=true check-integrity=true ## 下载位置 ## ============================================================ # 最大同时下载任务数, 运行时可修改, 默认:5 max-concurrent-downloads=10 # 同一服务器连接数, 添加时可指定, 默认:1 max-connection-per-server=10 # 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M # 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载 min-split-size=10M # 单个任务最大线程数, 添加时可指定, 默认:5 split=5 # 整体下载速度限制, 运行时可修改, 默认:0 #max-overall-download-limit=0 # 单个任务下载速度限制, 默认:0 #max-download-limit=0 # 整体上传速度限制, 运行时可修改, 默认:0 #max-overall-upload-limit=0 # 单个任务上传速度限制, 默认:0 #max-upload-limit=0 ## RPC设置 ## ============================================================ # 启用RPC, 默认:false enable-rpc=true # 允许所有来源, 默认:false rpc-allow-origin-all=true # 允许非外部访问, 默认:false rpc-listen-all=true # 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同 #event-poll=select # RPC监听端口, 端口被占用时可以修改, 默认:6800 rpc-listen-port=6800 # 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项 #rpc-secret=<TOKEN> # 是否启用 RPC 服务的 SSL/TLS 加密, # 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接 #rpc-secure=true # 在 RPC 服务中启用 SSL/TLS 加密时的证书文件, # 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥 #rpc-certificate=/path/to/certificate.pem # 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件 #rpc-private-key=/path/to/certificate.key ## BT/PT下载相关 ## ============================================================ # 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true #follow-torrent=true # BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999 listen-port=51413 # 单个种子最大连接数, 默认:55 #bt-max-peers=55 # 打开DHT功能, PT需要禁用, 默认:true enable-dht=false # 打开IPv6 DHT功能, PT需要禁用 #enable-dht6=false # DHT网络监听端口, 默认:6881-6999 #dht-listen-port=6881-6999 dht-file-path=/opt/var/aria2/dht.dat dht-file-path6=/opt/var/aria2/dht6.dat # 本地节点查找, PT需要禁用, 默认:false #bt-enable-lpd=false # 种子交换, PT需要禁用, 默认:true enable-peer-exchange=false # 每个种子限速, 对少种的PT很有用, 默认:50K #bt-request-peer-speed-limit=50K # 设置 peer id 前缀 peer-id-prefix=-TR2770- # 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0 seed-ratio=0 # 强制保存会话, 即使任务已经完成, 默认:false # 较新的版本开启后会在任务完成后依然保留.aria2文件 #force-save=false # BT校验相关, 默认:true #bt-hash-check-seed=true # 继续之前的BT任务时, 无需再次校验, 默认:false bt-seed-unverified=true # 保存磁力链接元数据为种子文件(.torrent文件), 默认:false bt-save-metadata=true bt-max-open-files=16 # Http/FTP 相关 connect-timeout=120 启动aria2aria2c --conf-path=/etc/aria2/aria2.conf如果没有提示错误,按ctrl+c停止运行命令,转为后台运行:aria2c --conf-path=/etc/aria2/aria2.conf -D参数使用使用 aria2 下载文件,只需在命令后附加地址即可。注意:命令是aria2c。比如我们下载ubuntu如:aria2c http://www.mirror.tw/pub/ubuntu/releases/jaunty/ubuntu-9.04-desktop-i386.iso分段下载利用 aria2 的分段下载功能可以加快文件的下载速度,对于下载大文件时特别有用,为了使用 aria2 的分段下载功能,你需要在命令中指定 s 选项。如:aria2c -s 2 http://www.mirror.tw/pub/ubuntu/releases/jaunty/ubuntu-9.04-desktop-i386.iso这将使用 2 个连接来下载该文件,s 后面的参数值介于 1~5 之间,你可以根据实际情况选择。使用 c 选项可以断点续传文件如:aria2c -c http://www.mirror.tw/pub/ubuntu/releases/jaunty/ubuntu-9.04-desktop-i386.iso下载 torrent 文件你也可以使用 aria2 下载 BitTorrent 文件。如: aria2c -o gutsy.torrent http://cdimage.ubuntu.com/daily-live/current/gutsy-desktop-i386.iso.torrent服务模式开机启动增加开机启动脚本sudo vim /etc/init.d/aria2c添加如下内容:#!/bin/sh ### BEGIN INIT INFO # Provides: aria2 # Required-Start: $remote_fs $network # Required-Stop: $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Aria2 Downloader ### END INIT INFO case "$1" in start) echo -n "已开启Aria2c" sudo aria2c --conf-path=/home/***/.aria2/aria2.conf -D ;; stop) echo -n "已关闭Aria2c" killall aria2c ;; restart) killall aria2c sudo aria2c --conf-path=/home/***/.aria2/aria2.conf -D ;; esac exit修改文件权限为755 (a+x)sudo chmod 755 /etc/init.d/aria2c添加aria2c服务到开机启动sudo update-rc.d aria2c defaults启动服务sudo service aria2c start查看服务状态sudo systemctl status aria2c
2023年09月19日
17 阅读
0 评论
0 点赞
1
...
15
16
17
...
24