# 进入容器
docker exec -it <container_name> sh
# 在容器内执行(以 Alpine 为例)
apk add tzdata
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
# 退出后重启容器使配置完全生效
docker restart <container_name>
# 进入容器
docker exec -it <container_name> sh
# 在容器内执行(以 Alpine 为例)
apk add tzdata
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
# 退出后重启容器使配置完全生效
docker restart <container_name>
在图形化界面中,可以直接在settings -> Power 下进行设定

Ubuntu默认会运行acpid服务,因此可以按照下面描述的方法来进行设置。具体来说,你可以在Ubuntu命令行界面下执行以下步骤:
1、打开acpid服务的配置文件/etc/acpi/events/powerbtn,如果该文件不存在,可以先创建一个:
sudo touch /etc/acpi/events/powerbtn
2、编辑该文件,在其中添加以下内容:
vim /etc/acpi/events/powerbtn
添加内容:
event=button/power
action=/sbin/poweroff
其中,event表示事件类型,这里指的是按下power按钮;action表示要执行的动作,这里指的是关机操作。
3、重启acpid服务,让修改生效:
sudo systemctl restart acpid
现在,当你按下power按钮时,Ubuntu系统就会自动执行关机操作。
Unoconv是一个开源工具,用于将各种文档格式转换为PDF格式。可以使用以下命令安装:
$ sudo apt-get install unoconv
转换文件的命令如下:
$ unoconv -f pdf filename.doc
其中,filename.doc为待转换的Word文件名。
使用Unoconv工具的优点是非常简单易用,但需要注意的是,该工具需要依赖OpenOffice或LibreOffice来实现转换,所以在使用前需要确保已经安装了相应的软件。
与Unoconv类似,LibreOffice也提供了一个命令行工具soffice,可以用于将各种文档格式转换为PDF格式。可以使用以下命令安装LibreOffice:
$ sudo apt-get install libreoffice
转换文件的命令如下:
$ soffice --convert-to pdf filename.doc
其中,filename.doc为待转换的Word文件名。
使用LibreOffice命令行工具的优点是它不依赖于其他软件,并且支持各种Office文档格式。但是转换速度可能会比其他工具慢一些。
Pandoc也是一个开源工具,可以将各种文档格式转换为PDF格式。可以使用以下命令安装Pandoc:
$ sudo apt-get install pandoc
转换文件的命令如下:
$ pandoc -s filename.doc -o filename.pdf
其中,filename.doc为待转换的Word文件名。
使用Pandoc工具的优点是它支持各种文档格式,并且可以自定义文档样式,转换后的PDF文件也会自动添加书签,方便查阅。但是需要注意的是,Pandoc工具并不是专门用于文档转换的,所以在转换复杂文档时可能会出现格式错误。
在Word文件转换为PDF格式时,由于Linux和Windows系统的字体库不一样,可能导致PDF文档出现乱码或格式错误。为了解决这个问题,我们可以在Linux系统中安装Microsoft Office的字体Liberation字体,实现Linux和Windows字体的兼容。
安装Liberation字体的命令如下:
$ sudo apt-get install fonts-liberation
安装完毕后,我们就可以在Word文件转换成PDF文件时使用Liberation字体了。
以上就是在Linux下实现Word文件转PDF的方法,我们可以根据需要选择不同的工具来实现转换,以满足我们的工作需求。同时,为了避免字体的兼容性问题,我们也可以安装Liberation字体来保证转换后的PDF文件格式正确。
sudo: error in /etc/sudo.conf, line 0 while loading plugin ‘sudoers_policy’
sudo: /usr/lib/sudo/sudoers.so must only be writable by owner
sudo: fatal error, unable to load plugins
用ll查看了一下sudoer.so和sudo的用户权限,发现owner都是非root用户,所以才导致当前用户没有权限执行sudo命令,修改权限后,即可解决此问题。
chmod 644 /usr/lib/sudo/sudoers.sosu 输入密码进入suchown -R root /usr/lib/sudo
1.编辑源:打开源文件
sudo vi /etc/apt/sources.list
2.添加高版本的源:把此行源添加到最后一行
deb http://mirrors.aliyun.com/ubuntu/ jammy main
3.更新源
sudo apt update
4.安装高版本GLIBC
sudo apt install libc6
5.查看结果:如下图所示
strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_

6.添加路径:打开环境配置文件
sudo gedit /etc/bash.bashrc或者sudo vim /etc/bash.bashrc
7.配置环境:把下方代码加到刚才打开的配置文件的最后一行
PATH=$PATH:/usr/local/host/bin
注意:/etc/bash.bashrc 这个路径要换成自己的路径
8.使环境变量生效
source ~/.bash.bashrc
目前市面上按物理规格来看,常见的SD卡有三种:
标准的SD卡,这种卡比较大,在有些相机或者PC电脑上会使用;
第二种是miniSD,这种卡我没怎么使用,不作详述;
最后一种是叫TF卡,也称mirco SD,这种卡比较小,是我们最常接触的,像我们的手机里面使用的就是这种卡。很多人基本上都管我们手机使用的那种卡叫SD卡,这样的叫法实际上不够准确,更准确应该是叫TF卡,但是不管怎样,都没人会去计较,能理解就行。
本文中,如果我说SD卡,都是泛指这三类SD卡,除非特意说明。并且如果特指,我会使用标准SD卡或者TF卡等名称代替。
Capacity of Memory
SD卡按容量(Capacity)分类,可以分为标准容量卡、高容量卡,扩展容量卡,详细如下:
Standard Capacity SD Memory Card (SDSC): 这种卡容量小于等于2GB
High Capacity SD Memory Card (SDHC): 这种卡容量大于2GB,小于等于32GB
Extended Capacity SD Memory Card (SDXC):这种卡容量大于32GB, 小于等于2TB
如果你买了一张16G或者32G的SD卡,你会发现SD卡上面印有”HC”字样,代表该卡是SDHC卡,同理,64G的SD卡上面印着”XC”,表示SDXC卡
Voltage range
SD卡按供电范围划分,分两种:
High Voltage SD Memory Card: 操作的电压范围在2.7-3.6V
UHS-II SD Memory Card: 操作的电压范围VDD1: 2.7-3.6V, VDD2: 1.70-1.95V
UHS-II类型的卡参考协议文档: SD Specifications Part 1 UHS-II Simplified Addendum
Bus Speed Mode (using 4 parallel data lines)
SD卡按总线速度模式来分,有下面几种:
Default Speed mode: 3.3V供电模式,频率上限25MHz,速度上限 12.5MB/sec
High Speed mode: 3.3V供电模式,频率上限50MHz,速度上限 25MB/sec
SDR12: UHS-I卡, 1.8V供电模式,频率上限25MHz,速度上限 12.5MB/sec
SDR25: UHS-I卡, 1.8V供电模式,频率上限50MHz,速度上限 25MB/sec
SDR50: UHS-I卡, 1.8V供电模式,频率上限100MHz,速度上限 50MB/sec
SDR104: UHS-I卡, 1.8V供电模式,频率上限208MHz,速度上限 104MB/sec
DDR50: UHS-I卡, 1.8V供电模式,频率上限50MHz,性能上限 50MB/sec
UHS156: UHS-II RCLK Frequency Range 26MHz – 52MHz, up to 1.56Gbps per lane.
SDR(Single Date Rate), 一个周期只能采集一次数据,即一个bit,由于SD卡是4条数据线并行传输,所以一个周期能传输4bit,如果频率是50MHz(即1秒传输次数为50 000 000),那么1秒能传输的数据量为25MB(这里1MB为1 000 000 Byte)。所以这就是为什么各种SDR模式里面,频率上限是速度上限的两倍。而对于DDR(Double Data Rate),在时钟上升沿和下降沿都可以采集数据,也就是单一周期内可读取或写入2次,因此4条并行数据线在一个周期内能传输8bit。
由于SDHC控制器支持1.8V电平,初始化SD卡时,得知SD也支持1.8V操作,所以像其发送切换电压的命令,但是切换失败。再次尝试初始化时,已不能从SD卡正确获取信息,命令执行超时。
根本原因:SDHC控制器和SD卡座之间添加了电平转换芯片,SDHC的工作电压为1.8V,SD卡座的工作电压为3.3V,SD卡切换为1.8V操作模式时,肯定无法正常工作,因为外部电压是3.3V。
参考文档Documentation/devicetree/bindings/mmc/mmc-controller.yaml,在SDHC控制在设备树节点中添加属性no-1-8-v,如下:
no-1-8-v:
$ref: /schemas/types.yaml#/definitions/flag
description:
When specified, denotes that 1.8V card voltage is not supported
on this system, even if the controller claims it.
&esdhc0 {
sd-uhs-sdr104;
sd-uhs-sdr50;
sd-uhs-sdr25;
sd-uhs-sdr12;
no-1-8-v;
status = "okay";
};
1、异常关机,启动报错
/dev/sdb1 contains a file system with errors, check forced.
2、修复测试
fsck -C fd -N /dev/sdb1
提示:
[/sbin/fsck.ext2 (1) -- /dev/sdb1] fsck.ext2 -C0 /dev/sdb1
3、修复执行
fsck.ext2 -C0 /dev/sdb1
1、syslog无法正常工作,处理方法
sudo apt-get install --reinstall rsyslog
chown syslog:adm syslog
sudo service rsyslog restart
2、正确清空syslog方法(不能直接删除)
cat /dev/null > /etc/init.d/syslog
/etc/init.d/rsyslog restart
1、编写dockers配置文件
使用 dockerfile 创建容器,在容器中进行编译,完美解决编译环境问题,并且与主机环境隔离,互不影响。
首先在主机中安装 docker,请参考:安装教程
创建一个目录作为 docker 工作目录,例如~/docker/,在其中创建文件dockerfile,内容如下:
FROM ubuntu:18.04
MAINTAINER firefly "service@t-firefly.com"
ENV DEBIAN_FRONTEND=noninteractive
RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
RUN sed -i 's@http://.*ubuntu.com@http://repo.huaweicloud.com@g' /etc/apt/sources.list
RUN apt update
RUN apt install -y build-essential crossbuild-essential-arm64 \
bash-completion vim sudo locales time rsync bc python
RUN apt install -y repo git ssh libssl-dev liblz4-tool lib32stdc++6 \
expect patchelf chrpath gawk texinfo diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake \
unzip device-tree-compiler python-pip ncurses-dev python-pyelftools \
subversion asciidoc w3m dblatex graphviz python-matplotlib cpio \
libparse-yapp-perl default-jre patchutils swig expect-dev u-boot-tools
RUN apt update && apt install -y -f
# language support
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
# switch to a no-root user
RUN useradd -c 'firefly user' -m -d /home/firefly -s /bin/bash firefly
RUN sed -i -e '/\%sudo/ c \%sudo ALL=(ALL) NOPASSWD: ALL' /etc/sudoers
RUN usermod -a -G sudo firefly
USER firefly
WORKDIR /home/firefly
2、创建镜像
cd ~/docker
docker build -t sdkcompiler .
# sdkcompiler 是镜像名称,可随意更改,注意命令最后有一个‘.’
# 此过程需要一段时间,请耐心等待
# 此处将主机内 SDK 所在文件夹挂载到容器内,这样容器内就能访问主机中的 SDK 了
# source= 填 SDK 所在目录;target= 填容器内的一个目录,必须是空目录
# ubuntu18 是容器名,firefly 是容器 hostname,均可随意更改
# sdkcompiler 是上一步的镜像名
docker run --privileged --mount type=bind,source=/home/fierfly/proj,target=/home/firefly/proj --name="ubuntu18" -h firefly -it sdkcompiler
# 在容器内输入 exit 即可退出
# 查看所有容器(包括已退出的)
docker ps -a
# 重启一个退出的容器并连接
docker start ubuntu18 # 容器名
docker attach ubuntu18
Systemback是一个简单的系统备份和恢复应用程序,根据GPLv3许可条款发布。
Systemback的功能包括:
创建系统备份和用户配置文件。
将系统还原到以前的状态,就像Virtualbox的快照功能一样。
从现有安装创建可启动ISO文件。
将系统从一个分区复制到另一个分区。
升级软件。
1、只在ubuntu16.04下在安装systemback
sudo add-apt-repository ppa:nemh/systemback
sudo apt update
sudo apt install systemback
2、在 18.04/19.10/20.04安装systemback
sudo add-apt-repository "deb http://ppa.launchpad.net/nemh/systemback/ubuntu xenial main"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 382003C2C8B7B4AB813E915B14E4942973C62A1B
sudo apt update
sudo apt install systemback
3、可以从应用程序菜单启动Systemback,需要输入密码才能使用此软件,输入密码后,单击确定按钮

1、创建自定义镜像

2、制作镜像

3、制作中
制作时间主要参考以下几个因素:

4、老版本软件中,可能不会同时生成iso,所以可能需要把sblive转换为iso。对于小于4G的sblive可以直接转换,如下:

5、对于大于4G的可以采用udf文件系统。下面就是具体的解决方法了
解压 .sblive 文件:
mkdir sblive
tar -xf /home/systemback_live_2016-04-27.sblive -C sblive
重命名 syslinux 至 isolinux:
mv sblive/syslinux/syslinux.cfg sblive/syslinux/isolinux.cfg
mv sblive/syslinux sblive/isolinux
安装 cdtools
sudo gedit https://nchc.dl.sourceforge.net/project/cdrtools/alpha/cdrtools-3.02a07.tar.gz
tar -xzvf cdrtools-3.02a07.tar.gz
cd cdrtools-3.02
make
sudo make install
生成 ISO 文件:
/opt/schily/bin/mkisofs -iso-level 3 -r -V sblive -cache-inodes -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o sblive.iso sblive