linux系统镜像备份
rootfs制作成功后,会参与打包,和kernel、uboot等img文件打包成一个完整镜像。
烧录镜像后,可能会出现rootfs还需重新安装软件或者配置修改,以下是操作方式记录。
基于现有的rootfs.img 修改
注意事项:如果需要基于现有的rootfs 安装其他软件,挂载前应先调整rootfs大小
根据现实需求功能修改,仅供参考
1 2 3
| e2fsck -p -f rootfs.img # 调整大小为10G resize2fs rootfs.img 10240M
|
1、建立roofs文件夹,挂载现有的rootfs.img
1 2
| sudo mount rootfs.img ./rootfs
|
2、挂载本机网络通信等设备到rootfs/,这样才能使用本机网络进行更新
1 2 3 4 5
| sudo mount -t proc /proc rootfs/proc sudo mount -t sysfs /sys rootfs/sys sudo mount -o bind /dev rootfs/dev sudo mount -o bind /dev/pts rootfs/dev/pts
|
3、使用chroot命令进入rootfs
4、安装本次软件
1 2 3 4
| apt-get update # xxx 为更新软件 如有必要,需要更换、/etc/apt/source.list 文件源 apt-get install xxx
|
5、系统性配置修改
此项根据具体需求更改,若无需求跳过此步骤
1 2 3 4 5
| 修改/etc/update-motd.d 00-header: TERM=linux toilet -f standard -F gay xxxx 帮助信息 10-help-text:
|
1 2 3 4 5
| vim /etc/update-motd.d/00-header 修改 TERM=linux toilet -f standard -F gay Firefly gay 后面文字 -f 字体 ( 目录在 /usr/share/figlet/ )
|
1
| echo "xxx" > /etc/hostname
|
- 修改logout session 注销选项 去除suspend
vim /usr/share/polkit-1/actions/org.freedesktop.login1.policy
1 2 3 4 5 6 7
| <action id="org.freedesktop.login1.suspend-multiple-sessions"> 和 <action id="org.freedesktop.login1.suspend"> 把 <allow_active>yes</allow_active> 改为 <allow_active>no</allow_active>
|
思路:软键盘是写配置文件,把老镜像的配置文件替换新镜像的配置文件
1 2 3 4
| # 老镜像 打包.config 在home/xx tar czvf config_324.tar.gz .config/ # 新镜像 删除原有.config 解压 tar xzvf config_324.tar.gz -C .
|
1 2 3 4 5 6 7 8 9
| // 桌面背景图保存目录 usr/share/lubuntu/wallpapers
// 配置文件目录中 修改加载图片 // /home/username/.config/pcmanfm-qt/lubuntu/settings.config
xubuntu:
usr/share/xfce4/backdrops/xubuntu-wallpaper.png
|
/etc/default/xrandr
/etc/xdg/xdg-xubuntu/xfce4/panel
1 2 3
| <property name="background-style" type="uint" value="0"/> <property name="size" type="uint" value="24"/> 修改
|
TouchHandles.py 修改注释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class TouchHandles(object): """ Full set of resize and move handles """ active = False opacity = 1.0 rect = None
def __init__(self): self.handles = [] self._handle_pool = [TouchHandle(Handle.MOVE)] # , # TouchHandle(Handle.NORTH_WEST), # TouchHandle(Handle.NORTH), # TouchHandle(Handle.NORTH_EAST), # TouchHandle(Handle.EAST), # TouchHandle(Handle.SOUTH_EAST), # TouchHandle(Handle.SOUTH), # TouchHandle(Handle.SOUTH_WEST), # TouchHandle(Handle.WEST)]
|
1 2
| gsettings set org.gnome.desktop.screensaver lock-enabled false
|
1 2
| sudo apt-get remove update-notifier
|
6、退出执行
1 2 3 4 5 6 7 8
| exit
sudo umount rootfs/proc sudo umount rootfs/sys sudo umount rootfs/dev/pts sudo umount rootfs/dev # 卸载镜像 sudo umount rootfs
|
7、重新调整镜像大小
1 2
| e2fsck -p -f rootfs.img resize2fs -M rootfs.img
|
到这里就结束了,可以用打包工具重新打包系统update镜像
8、其他指令
自动挂载本机设备脚本
使用方法:
建立一个 ch-mount.sh 脚本文件
注意:一定要带文件符 /
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #!/bin/bash # function mnt() { echo "MOUNTING" sudo mount -t proc /proc ${2}proc sudo mount -t sysfs /sys ${2}sys sudo mount -o bind /dev ${2}dev sudo mount -o bind /dev/pts ${2}dev/pts sudo chroot ${2} } function umnt() { echo "UNMOUNTING" sudo umount ${2}proc sudo umount ${2}sys sudo umount ${2}dev/pts sudo umount ${2}dev sudo umount rootfs
} if [ "$1" == "-m" ] && [ -n "$2" ] ; then mnt $1 $2 elif [ "$1" == "-u" ] && [ -n "$2" ]; then umnt $1 $2 else echo "" echo "Either 1'st, 2'nd or both parameters were missing" echo "" echo "1'st parameter can be one of these: -m(mount) OR -u(umount)" echo "2'nd parameter is the full path of rootfs directory(with trailing '/')" echo "" echo "For example: ch-mount -m /media/sdcard/" echo "" echo 1st parameter : ${1} echo 2nd parameter : ${2} fi
|
其他
镜像挂载处理出现问题
1、temporary failure resolving xxxx
处理方式:
1 2 3 4 5 6
| /etc/resolv.conf 增加
nameserver 8.8.8.8 或者 nameserver 114.114.114.114
|