强制处理
sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/
sudo mkdir /var/lib/dpkg/info/
sudo apt-get update
强制处理
sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/
sudo mkdir /var/lib/dpkg/info/
sudo apt-get update
1、下载安装包
wget https://www.tcpdump.org/release/libpcap-1.9.1.tar.gz
2、解压安装包
tar xvf libpcap-1.9,1.tar.gz
cd libpcap-1.9.1
3、配置编译安装
export CC=aarch64-linux-gnu-gcc
export CFLAGS='-Os'
./configure --host=aarch64-unknown-linux-gnu --with-pcap=linux
make
make install
unset CC
unset CFLAGS
1、重启指令
systemctl start network
或者
systemctl start systemd-networkd
1、驱动安装
2、查询pcie port码
root@ssss:~# lspci
0000:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 8d90 (rev 20)
0000:01:00.0 Ethernet controller: Device 1ec4:555 (rev 01)
0001:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 8d90 (rev 20)
0002:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 8d90 (rev 20)
3、删除pcie设备
echo 1 > /sys/bus/pci/devices/0000\:03\:00.0/remove
4、重新加载pcie设备
echo 1 > /sys/bus/pci/rescan
内核变更(升级或者降级)
检查目标内核版本是否存在
sudo apt search 'linux-image-5.11.0-44-generic'
若存在,继续安装
sudo apt install 'linux-image-5.11.0-44-generic’
更新
sudo vi /etc/default/grub
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.11.0-44-generic"
执行内核锁定步骤
sudo update-initramfs -u -k all
sudo update-grub
reboot
安装新版本内核头文件,用于开发编译
sudo apt install linux-headers-5.11.0-44-generic
锁定内核版本
sudo apt-mark hold linux-headers-5.11.0-44-generic linux-image-5.11.0-44-generic
arm系统不同于x86服务器,可能是因为外设驱动的问题,无法在启动阶段通过编辑grub进入单用户模式而得以修改root的密码。所以,可如下操作:
1、用其他外置启动盘启动系统,通常是U盘
2、挂载原系统(在eMMC)上的文件系统的 /etc目录
3、vi该目录下的shadow,删除其中root之后两个冒号之间的加密密码
4、保存、退出vi,sync并且shutdown系统
5、拔除外置启动盘,重加电启动原系统
6、此时root已无需密码即可登录,登录后及时passwd修改密码
linux服务管理有两种方式service和systemctl
/lib/systemd/system/ 和 /etc/systemd/system 存放所有可用的单元文件
systemctl test.service start
比如需要开机启动 start_main 程序
第一步:编写要启动的sh脚本
例如 ubuntu@name:/home$ test.sh
#!/bin/bash
./home/start_main
第二步:编写start.service
#**** *.service***
# THIS IS A GENERATED FILE, NOT RECOMMENDED TO EDIT.
[Unit]
Description="startup service"
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /home/test.sh
[Install]
WantedBy=multi-user.target
将文件放在/usr/lib/systemd/system 或者 /etc/systemd/system目录下,然后可以测试一下:
sudo systemctl start test.service
sudo systemctl enable test.service
设置test脚本开机启动。如果上一步没有出问题,这一步基本上也不会有什么问题,系统会打印出如下信息:
Created symlink /etc/systemd/system/multi-user.target.wants/test.service → /usr/lib/systemd/system/test.service.
在/etc/init.d目录下创建链接文件到前面的脚本: ln -s /home/test/blog/startBlog.sh /etc/init.d/startBlog。 /或者直接在/etc/init.d目录下创建脚本,
进入/etc/init.d目录,用 update-rc.d 命令将连接文件 startBlog 添加到启动脚本中去:update-rc.d startBlog defaults 99。
其中的99表示启动顺序,取值范围是0-99。序号越大的越晚执行。
移除启动的脚本:update-rc.d -f startBlog remove。
-f选项表示强制执行。
1、memtester是一个内存压力测试工具,主要是捕获内存错误和一直处于很高或者很低的坏位, 其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算等等. 通过给定测试内存的大小和次数, 可以对系统现有的内存进行测试。
sudo apt install memtester
//指令 测试内存大小 测试次数
memtester 240G 10
2、mbw是一个内存带宽测试工具,通常用来评估用户层应用程序进行内存拷贝操作所能达到的带宽,可测试在内存拷贝(memcpy)、字符串拷贝(dumb)、和内存卡拷贝(mcblock)三种方式下的内存拷贝速度。
sudo apt install mbw -y
mbw -q -n 10 245760
-q:隐藏日志
-n 10:表示运行10次
124000(MB):表示测试所用内存大小,用剩余内存的一半测试
#结果分析:
#只需关注平均值(AVG),内存分配速率越大,性能越好,三次AVG分别对应内存拷贝,字符串拷贝,内存卡拷贝。
nohup mbw -q -n 1000 124000 >> ./mbw.log 2>&1 &
top -p mbw[pid]
1、Cyclictest是rt-tests下一个使用最广泛的测试工具,主要用来测试使用内核的延迟,从而判断内核的实时性。
#sudo yum install numactl-devel #CentOS安装
#apt-get install libnuma-dev #Ubuntu安装
#运行5个线程,线程优先级80,无限循环
sudo cyclictest -t 5 -p 80 -n
#clock_nanosleep 线程优先级80,间隔10000微秒,10000次循环,无负载
cyclictest -t1 -p 80 -n -i 10000 -l 10000
#POSIX间隔计时器 线程优先级80,间隔10000微秒,10000次循环,无负载
cyclictest -t1 -p 80 -i 10000 -l 10000
sudo cyclictest -t1 -p 80 -n -i 10000 -l 10000
结果:T: 0 (17769) P:80 I:10000 C: 10000 Min: 3 Act: 13 Avg: 14 Max: 36
结果分析:
T: 0 序号为0的线程
P: 0 线程优先级为0
C: 9397 计数器。线程的时间间隔每达到一次,计数器加1
I: 1000 时间间隔为1000微秒(us)
Min: 最小延时(us)
Act: 最近一次的延时(us)
Avg:平均延时(us)
Max: 最大延时(us)
2、实时操作系统的实时性能指标
2.1 指标1 中断响应时间(可屏蔽中断)
计算机接收到中断信号到操作系统作出响应,并完成切换转入中断服务程序的时间。对于抢先式内核,要先调用一个特定的函数,该函数通知内核即将进行中断服务,使得内核可以跟踪中断的嵌套。抢先式内核的中断响应时间由下式给出:中断响应时间=关中断的最长时间+保护CPU内部寄存器的时间+进入中断服务函数的执行时间+开始执行中断服务例程(ISR)的第一条指令时间中断响应时间是系统在最坏情况下响应中断的时间,某系统100次中有99次在50ms之内响应中断,只有一次响应中断的时间是250ms,只能认为中断响应时间是250ms。
2.2 指标2 任务切换时间
除为中断处理提供确定性外,实时处理也需要支持周期性间隔的任务调度。大量控制系统要求周期性采样与处理。某个特定任务必须按照固定的周期(p)执行,从而确保系统的稳定性。考虑一下汽车的防抱死系统(ABS)。控制系统对车辆的每个车轮的转速进行采样(每秒最多20次)并控制每个制动器的压力(防止它锁死)。为了保持控制系统的正常工作,传感器的采样与控制必须按照一定的周期间隔。这意味着必须抢占其他处理,以便ABS任务能按照期望的周期执行。当多任务内核决定运行另外的任务时,它把正在运行任务的当前状态(即CPU寄存器中的全部内容)保存到任务自己的栈区之中。然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU 的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。CPU 的寄存器越多,额外负荷就越重。
1、安装stress工具时,只需要打开终端,输入如下命令
sudo apt-get install stress
2、启动参数
stress --cpu 4
1、安装
apt install linux-tools-common
apt install linux-tools-5.13.0-40-generic
apt install linux-cloud-tools-5.13.0-40-generic
2、版本查看
perf -v
rc-local服务简介Linux中的rc-local服务是一个开机自动启动的,调用开发人员或系统管理员编写的可执行脚本或命令的,它的启动顺序是在系统所有服务加载完成之后执行。
ubuntu20.04系统已经默认安装了rc-local.service服务,但是不知什么原因系统把这个服务给“隐蔽”了,所以如果不做一番操作是无法使用的。
将rc-local服务设置为开机自启动(本文操作都在root用户下,或使用sudo)。
首先将rc-local.service文件复制到system目录下
cp /usr/lib/systemd/system/rc-local.service /etc/systemd/system/
新建rc.local文件
大家不用奇怪,ubuntu20.04中/etc/目录下是没有rc.local文件的,需要我们手动建立一个。
touch /etc/rc.local
chmod 755 /etc/rc.local
echo '''#!/bin/bash''' >> /etc/rc.local
设置开机启动rc-local
systemctl start rc-local
systemctl enable rc-local
init 6
重启系统后,通过命令systemctl status rc-local查看服务已经正常开启了。
3.在rc.local中添加你开机需要自动执行的脚本
至此,你就可以在rc.local文件中添加你想添加的开机自启动脚本了。