开发手册
安装LCF环境
架构要求
架构要求为loongarch64架构
套件安装方法
从 下载页面 下载安装套件;请注意:安装LCF套件会覆盖本机中的docker-ce、docker-ce-cli、containerd.io软件包;本套件当前只适用于Loongarch架构下的Debian系操作系统,如Loongnix-20桌面版本。
解压缩(放在/opt目录下为例)
$ sudo tar -xf lcfsuit-rc1.tar.gz -C /opt
- 进入目录安装
$ cd /opt/lcfsuit-rc1 $ sudo bash install.sh
- 验证docker是否安装成功,输入以下命令显示docker版本
$ docker -v
分别验证制作器,管理器,运行器是否安装成功,对应信息显示一致则说明安装成功。
- 制作器输入命令:
$ ./lmgbuild -v $ /usr/local/bin/lmgbuild -v
- 制作器输出如下:
loongson@loongson-pc:/opt/lcfsuit-rc1$ ./lmgbuild -v version:1.1.27 loongson@loongson-pc:/opt/lcfsuit-rc1$ /usr/local/bin/lmgbuild -v version:1.1.27
- 管理器输入命令:
$ ./lpkg -v $ /usr/local/bin/lpkg -v
- 管理器输出如下:
loongson@loongson-pc:/opt/lcfsuit-rc1$ ./lpkg -v launch version : 1.1.3 loongson@loongson-pc:/opt/lcfsuit-rc1$ /usr/local/bin/lpkg -v launch version : 1.1.3
- 运行器输入命令:
$ ./lmgrun -v $ /usr/local/bin/lmgrun -v
- 运行器输出如下:
loongson@loongson-pc:/opt/lcfsuit-rc1$ ./lmgrun -v lmgrun version : 1.1.4.3 loongson@loongson-pc:/opt/lcfsuit-rc1$ /usr/local/bin/lmgrun -v lmgrun version : 1.1.4.3
- 制作器输入命令:
套件卸载方法
进入lcfsuit解压缩的目录卸载
$ cd /opt/lcfsuilt-rc1
$ sudo bash uninstall.sh
软件仓库
软件仓库用于存储软件包运行时和应用软件包,使用者可从仓库获得LMG格式的应用和运行时
容器工具
简介
容器工具基于docker开发,在docker的基础上增加了应用层、运行时层、升级层等概念。 通过容器工具可以对镜像进行分层、组合、升级操作。 通过容器工具可将运行时层、应用层、升级层分别导出,运行时层导出文件用于制作运行时lmg包,应用层导出文件用于制作应用lmg包,升级层导出文件用于制作升级lmg包。
运行时层
运行时层包含应用运行所需的基础环境,运行时层与应用层组合生成应用容器,运行时层与升级层组合生成升级后的运行时
应用层
应用层包含应用数据,应用层与运行时层组合生成应用容器
升级层
升级层包含运行时层升级数据,升级层与运行时层组合生成新的运行时层
制作器
简介
制作器是制作lmg包的工具,支持运行时包,运行时升级包,应用软件包的构建。
命令行参数说明
- 查看lmgbuild命令的帮助信息
lmgbuild -h
- 帮助信息如下:
usage: lmgbuild [-v] [-h] [-s] [-w WORKDIR | -c CONFIG] [-d] {runtime,rt,workspace,ws} ... positional arguments: {runtime,rt,workspace,ws} sub command help runtime (rt) runtime command.... workspace (ws) workspace command.... optional arguments: -v, --version show program's version number and exit -h, --help show this help message and exit -s, --sync sync repository -w WORKDIR, --workdir WORKDIR set workdir for lmgbuild -c CONFIG, --config CONFIG batch build config file -d, --debug enable debug output
制作软件包
软件包制作支持情况
制作包类型 | 支持情况说明 |
---|---|
应用软件包 | 现阶段只支持对已有deb包转换为lmg包的功能 |
运行时包 | 现阶段只支持对使用容器工具制作的运行时打包 |
运行时升级包 | 现阶段只支持对使用容器工具制作的运行时升级层打包 |
制作软件包流程
- 创建项目
执行命令创建项目
lmgbuild -w .
- 同步源上运行时配置
lmgbuild -s
- 导入运行时
lmgbuild runtime -i
- 构建软件包
执行lmgbuild命令,根据提示进行输入和选择:
- 制作应用软件包:
制作应用软件包,输入的软件包内容为deb包,需要根据所输入内容选择对应的运行时 - 制作运行时软件包:
制作运行时软件包需要使用容器工具导出的运行时层进行制作 - 制作升级软件包:
制作运行时软件包需要使用容器工具导出的运行时升级层进行制作
- 制作应用软件包:
批量制作软件包
批量制作需要编写配置文件,配置文件以yaml格式编写 配置文件说明:
lmg_type : 制作软件包类型
lmg_output_dir : 输出软件包目录
lmg_workdir : 制作临时目录
arch : 架构
lmg_release : release版本号
lmg_base : 依赖的运行时
pkglist : 输入软件包列表
pkgpath : 输入软件包
deppath : 输入软件包的依赖,内部包含preinstall.sh脚本,制作时会执行该脚本,可通过该脚本实现软件预处理功能
配置文件内容示例如下:
lmg_type: "APPLICATIONS"
lmg_output_dir: "/mnt"
lmg_workdir: "/mnt"
arch: "loong64"
lmg_release: "22"
lmg_base: "uos20_1_7"
pkglist:
-
pkgpath: /mnt/com.pantum.pantum_7.4.144-1+uos_loongarch64.deb
-
pkgpath: /mnt/datadir/lmg/packages/uos/com.360.browser-stable_10.4.1025.4-1_loongarch64.deb
-
pkgpath: /mnt/datadir/lmg/packages/uos/com.baidu.baidunetdisk_4.3.0_loongarch64.deb
deppath: /home/loongson/dep.tar
批量制作命令:
lmgbuild -c config.yaml
调试
设置调试环境变量后,执行构建命令会打印调试信息
export LMGDEBUG=True
lmgbuild
管理器
简介
管理器主要用来处理软件包的有关操作,安装LCF套件后可以使用lpkg
命令进行LMG软件的安装、卸载等操作。
命令行参数
查看lpkg命令的帮助信息
lpkg --help
lpkg命令的帮助信息如下:
usage: lpkg [-h] [--instdir path] [-t Unzip Dir] [-v] [-d]
(-i xxx.lmg [xxx.lmg ...] | -r appname:version [appname:version ...] | -l | -L appname:version)
optional arguments:
-h, --help show this help message and exit
--instdir path specify the installation directory
-t Unzip Dir, --tempdir Unzip Dir
Specify the installation decompression directory
-v, --version show the version
-d, --debug turn on debugging
-i xxx.lmg [xxx.lmg ...], --install xxx.lmg [xxx.lmg ...]
the location of the package to be installed
-r appname:version [appname:version ...], --remove appname:version [appname:version ...]
the name of the package to be uninstalled
-l, --list show app list
-L appname:version, --listfiles appname:version
List files installed to your system from package-name.
Lmg Packager
列出已安装的应用
查看已安装的基础运行时和应用,运行lpkg -l
命令:
lpkg -l
lpkg -l
输出如下:
名称 版本 体系结构
loongnix 1_10 loong64
bino 1.6.6-3_1 loong64
chromium-bsu 0.9.16.1-2_1 loong64
cn.codemao.kitten3 3.7.14_1 loong64
cn.codemao.wood 0.1.3_1 loong64
查看软件的安装文件列表
查看指定软件已安装的文件列表,运行lpkg -L appname:version
:
lpkg -L appname:version
lpkg -L chromium-bsu:0.9.16.1-2_1
输出如下:
chromium-bsu_0.9.16.1-2_1:loongnix_1_10
/opt/lmg/chromium-bsu_0.9.16.1-2_1.desktop
/usr/share/icons/lmg/chromium-bsu_0.9.16.1-2_1.png
/opt/chromium-bsu_0.9.16.1-2_1.loong64.app
安装应用
sudo lpkg -i
命令来安装LMG应用:
sudo lpkg -i /home/loongson/xxx.lmg
/home/loongson/xxx.lmg: 软件包存储路径
示例: 安装已经制作完成后的qbittorrent应用,运行安装命令:
sudo lpkg -i qbittorrent_4.1.5-1_1.loong64.lmg
安装过程输出如下:
lmgmanager - INFO - Start installing the software.
lmgmanager - INFO - Start processing qbittorrent container images
qbittorrent_4.1.5-1_1.uos20_1_10: Loading applayer [==================================================>] 91.58MB/91.58MB
lmgmanager - INFO - Record the qbittorrent information
lmgmanager - INFO - The qbittorrent installation is complete!
卸载应用
sudo lpkg -r
命令来卸载LMG应用
sudo lpkg -r appname:version
示例: 卸载已安装的qbittorrent应用,运行卸载命令:
sudo lpkg -r qbittorrent:4.1.5-1_1
卸载过程输出如下:
lmgmanager - INFO - Start removing the qbittorrent container images
lmgmanager - INFO - Delete the qbittorrent installation records
lmgmanager - INFO - The qbittorrent uninstalled successfully !
运行器
简介
运行器负责启动已安装的应用,分为两种启动方式:图形启动应用和命令启动应用。
运行方式
图形化运行
安装应用后,桌面显示lmg文件夹
进入桌面的lmg文件夹,显示已安装软件的应用图标
双击应用软件图标,应用启动
命令行运行
- 进入桌面lmg目录
cd $HOME/Desktop/lmg # 或者$HOME/桌面/lmg
- 查看应用desktop文件执行字段
示例: 查看qbittorrent应用的desktop文件,输入以下命令cat xxx.desktop
输出如下:cat qbittorrent_4.1.5-1_1.desktop
[Desktop Entry] Categories = Network;FileTransfer;P2P;Qt; Exec = bash -c '/usr/local/bin/lmgrun -p qbittorrent_4.1.5-1_1 -c bash -l -c "qbittorrent %U"' GenericName = BitTorrent client Comment = Download and share files over BitTorrent Icon = /usr/share/icons/lmg/qbittorrent_4.1.5-1_1.png
- 在命令行执行Exec字段内容
示例:
取出qbittorrent软件的Exec字段内容
在终端输入如下命令Exec = bash -c '/usr/local/bin/lmgrun -p qbittorrent_4.1.5-1_1 -c bash -l -c "qbittorrent %U"'
bash -c '/usr/local/bin/lmgrun -p qbittorrent_4.1.5-1_1 -c bash -l -c "qbittorrent %U"'
LCF使用示例
制作运行时镜像
制作运行时镜像,以loongnix20的rootfs制作运行时为例
- 查看loongnix 的rootfs
loongson@loongson-pc:~/rootfs$ ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
- 压缩rootfs
loongson@loongson-pc:~/rootfs$ sudo tar -zcvf ../loognix20.tar.gz .
- 导入镜像
loongson@loongson-pc:~$ sudo docker import loongnix20.tar.gz sha256:ba2f363b7797698acd0111119f9270a408bca61b069ffad6b0506daaaac3f8cc
- 查看导入的镜像
loongson@loongson-pc:~$ docker images |grep ba2f <none> <none> ba2f363b7797 19 seconds ago 170MB
- 制作运行时镜像
运行时镜像用于制作器制作应用和制作运行时lmg包使用
运行时命名规范:
类型 | 命名规范 | 示例 |
---|---|---|
运行时容器 | 系统代号_发布版本_lmg的release版本:brl | loongnix20_1_1:brl |
升级镜像文件 | 系统代号_发布版本_lmg的release版本:brl | loongnix20_1_1_brl.tar |
对运行时命名:
loongson@loongson-pc:~$ docker tag ba2f363b7797 loongnix20_1_1:brl
导出运行时镜像:
loongson@loongson-pc:~$ docker save loongnix20_1_1:brl -o loongnix20_1_1_brl.tar
制作运行时LMG包
- 创建项目
mkdir work cd work lmgbuild -w .
- 制作运行时LMG包
loongson@loongson-pc:~/work$ lmgbuild [Message] Sync repository...... Downloading /home/loongson/.config/lmgbuild/conf/repository-base.yaml.cache: 100%|#############################| 58.0/58.0 [00:00<00:00, 404kiB/s] [Message] Complete sync repository !!! ? Which type lmg do you want to make? BASERUNTIME ? Which directory do you want to save the lmg package? /tmp ? Which directory do you want to build the lmg package? /tmp ? Please check your arch ? loong64 ? Which tar package do you want to convert? loongnix20_1_1_brl.tar ? Please input the description for this BASERUNTIME lmg package loongnix20: |████████████████████████████████████████| 13/13 [100%] in 6.6s (1.98/s)
制作应用LMG包
- 导入运行时,用于制作应用LMG包
loongson@loongson-pc:~/work$ lmgbuild rt -i /home/loongson/loongnix20_1_1_brl.tar [WARN] baseruntime already installed
- 下载loongnix20的应用thunderbird进行制作
loongson@loongson-pc:~/work$ apt download thunderbird
- 制作应用LMG包
执行lmgbuild命令,根据提示输入或选择
loongson@loongson-pc:~/work$ lmgbuild [Message] Sync repository...... Downloading /home/loongson/.config/lmgbuild/conf/repository-base.yaml.cache: 100%|#############################| 58.0/58.0 [00:00<00:00, 413kiB/s] [Message] Complete sync repository !!! ? Which type lmg do you want to make? APPLICATIONS ? Which directory do you want to save the lmg package? /tmp ? Which directory do you want to build the lmg package? /tmp ? Which BASRRUNTIME you dependent? loongnix20_1_1 ? Which release do you want? 1 ? Which package do you want to convert? thunderbird_1%3a68.7.0-1~deb10u1.lnd.2_loongarch64.deb ? Input your depend tar package or input Enter? thunderbird: |█████████████████████▌ | ▃▅▇ 7/13 [54%] in 36s (0.2/s, eta: 4s) build image
- 查看制作成功的软件包
loongson@loongson-pc:~/work$ ls /tmp/thunderbird_1%3a68.7.0-1~deb10u1.lnd.2_1.loong64.lmg /tmp/thunderbird_1%3a68.7.0-1~deb10u1.lnd.2_1.loong64.lmg
安装LMG软件包
- 安装运行时LMG包
loongson@loongson-pc:~/work$ sudo lpkg -i /home/loongson/loongnix20_1_1_brl.loong64.lmg lmgmanager - INFO - Start installing the software. lmgmanager - INFO - Start processing loongnix20 container images Loaded image: loongnix20_1_1:brl lmgmanager - INFO - Record the loongnix20 information lmgmanager - INFO - The loongnix20 installation is complete!
- 安装应用LMG包
loongson@loongson-pc:~/work$ sudo lpkg -i /tmp/thunderbird_1%3a68.7.0-1~deb10u1.lnd.2_1.loong64.lmg lmgmanager - INFO - Start installing the software. lmgmanager - INFO - Start processing thunderbird container images thunderbird_1-3a68.7.0-1-deb10u1.lnd.2_1.loongnix20_1_1: Loading applayer [==================================================>] lmgmanager - INFO - Record the thunderbird information lmgmanager - INFO - The thunderbird installation is complete!
- 查看安装后的软件
lmg包安装成功后,启动图标会放到桌面的lmg目录
运行应用
卸载LMG应用
- 查看应用
loongson@loongson-pc:~/work$ lpkg -l |grep thunder thunderbird 1%3a68.7.0-1~deb10u1.lnd.2_1 loong64
- 卸载应用
loongson@loongson-pc:~/work$ sudo lpkg -r thunderbird:1%3a68.7.0-1~deb10u1.lnd.2_1 [sudo] loongson 的密码: lmgmanager - INFO - Start removing the thunderbird container images lmgmanager - INFO - Delete the thunderbird installation records lmgmanager - INFO - The thunderbird uninstalled successfully !
运行时升级层制作
- 查找运行时镜像
loongson@loongson-pc:~$ docker images |grep loongnix loongnix20_1_1 brl ba2f363b7797 4 hours ago 170MB
- 对运行时镜像进行修改
loongson@loongson-pc:~$ docker images |grep loongnix loongnix20_1_1 brl ba2f363b7797 4 hours ago 170MB loongson@loongson-pc:~$ docker run -it ba2f363b7797 /bin/bash root@31c7c6d2c811:/# cd root@31c7c6d2c811:~# echo upgrade > upgrade.txt root@31c7c6d2c811:~# exit
- 提交生成新的镜像
loongson@loongson-pc:/tmp/loongnix20_1_1_up.1.loong64.app$ docker ps -a |head -n 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c21face22cc5 ba2f363b7797 "/bin/bash" 21 minutes ago Exited (0) 21 minutes ago boring_feynman loongson@loongson-pc:/tmp/loongnix20_1_1_up.1.loong64.app$ docker commit c21face22cc5 loongnix20_1_1:1 sha256:310cacf10564427a527971e70a3c5d9eef9c95c2040d429a7ad292e8f94bfd80
- 导出升级层为tar包
升级命名规范:
类型 | 命名规范 | 示例 |
---|---|---|
升级层tag | 系统代号_发布版本_lmg的release版本_up.升级版本:brl | loongnix20_1_1_up.1:brl |
升级层包 | 系统代号_发布版本_lmg的release版本_up.升级版本.tar | loongnix20_1_1_up.1.tar |
使用docker saveupgrade
命令进行导出升级层
- docker saveupgrade命令参数如下:
执行如下命令:-b参数为基础运行时IMAGE ID -a参数为当前镜像IMAGE ID -t输出镜像的tag -o输出文件名
loongson@loongson-pc:/tmp/loongnix20_1_1_up.1.loong64.app$ docker saveupgrade -b ba2f363b7797 -a 310cacf10564 -t loongnix20_1_1_up.1:brl -o loongnix20_1_1_up.1.tar
制作运行时升级LMG包
执行lmgbuild命令,根据提示进行输入,制作过程如下:
loongson@loongson-pc:~/work$ lmgbuild
[Message] Sync repository......
Downloading /home/loongson/work/conf/repository-base.yaml.cache: 100%|#####################################################################################| 58.0/58.0 [00:00<00:00, 266kiB/s]
[Message] Complete sync repository !!!
? Which type lmg do you want to make? UPBASERUNTIME
? Which directory do you want to save the lmg package? /tmp
? Which directory do you want to build the lmg package? /tmp
? Please check your arch ? loong64
? Which tar package do you want to convert? loongnix20_1_1_up.1.tar
? Please input the description for this BASERUNTIME lmg package
loongnix20: |████████████████████████████████████████| 13/13 [100%] in 6.5s (1.99/s)
安装运行时升级LMG包
- 安装运行时升级LMG包
loongson@loongson-pc:~/work$ sudo lpkg -i /tmp/loongnix20_1_1_up.1.loong64.lmg lmgmanager - INFO - Start installing the software. lmgmanager - INFO - Start processing loongnix20 container images Loaded image: loongnix20_1_1_up.1:brl lmgmanager - INFO - Record the loongnix20 information lmgmanager - INFO - The loongnix20 installation is complete!
- 查看应用是否与升级的运行时组合
loongson@loongson-pc:~/work$ docker images |grep thunder thunderbird_1-3a68.7.0-1-deb10u1.lnd.2_1 loongnix20_1_1_up.1 097df75b7166 14 seconds ago 754MB thunderbird_1-3a68.7.0-1-deb10u1.lnd.2_1 loongnix20_1_1 0e4e769b6d3c 9 minutes ago 754MB