change for edge computing iso

This commit is contained in:
miao_kaibo 2021-09-28 11:24:24 +08:00
parent 15b7ed4ac6
commit 7de4e1f1ac
7 changed files with 438 additions and 3 deletions

View File

@ -0,0 +1,151 @@
From 5883a7f40fe7fc8cce44c7a709eaa890e1fe43d3 Mon Sep 17 00:00:00 2001
From: miao_kaibo <miaokaibo@outlook.com>
Date: Mon, 27 Sep 2021 15:31:58 +0800
Subject: [PATCH] change for edge computing
---
isomaker/img_repo.sh | 13 ++++++++++++-
isomaker/init.sh | 4 +++-
isomaker/iso.sh | 16 ++++++++++++++++
isomaker/oemaker.sh | 7 +++++++
isomaker/rpm.sh | 19 +++++++++++++++++++
5 files changed, 57 insertions(+), 2 deletions(-)
diff --git a/isomaker/img_repo.sh b/isomaker/img_repo.sh
index 5403724..0865815 100755
--- a/isomaker/img_repo.sh
+++ b/isomaker/img_repo.sh
@@ -18,7 +18,18 @@
set -e
function create_install_img()
{
- echo "$YUMREPO" > yumrepo.file
+ tmprep=''
+ repos=($(echo "$YUMREPO" | sed 's/-s//g'))
+ for rep in ${repos[@]}
+ do
+ if [[ "${rep}" =~ "Epol" ]];then
+ continue
+ else
+ tmprep="-s ${rep} ${tmprep}"
+ fi
+ done
+
+ echo "${tmprep}" > yumrepo.file
lorax --isfinal -p "${PRODUCT}" -v "${VERSION}${RELEASE}" -r "${RELEASE}" -t "${VARIANT}" --sharedir 80-openeuler --rootfs-size=4 --buildarch="$ARCH" $(cat yumrepo.file) --nomacboot --noupgrade "${BUILD}"/iso > lorax.logfile 2>&1
if [ $? != 0 ] ; then
diff --git a/isomaker/init.sh b/isomaker/init.sh
index 2603bfb..ca39d48 100755
--- a/isomaker/init.sh
+++ b/isomaker/init.sh
@@ -78,7 +78,7 @@ function parse_cmd_line()
esac
done
- for typename in standard source debug everything_debug everything everything_src netinst
+ for typename in standard source debug everything_debug everything everything_src netinst edge
do
if [ "${typename}" == "${ISO_TYPE}" ];then
return 0
@@ -114,6 +114,7 @@ function global_var_init()
EVE_DEBUG_ISO_NAME="${PRODUCT}-${VERSION}-${RELEASE}-everything-debug-${ARCH}-dvd.iso"
EVE_SRC_ISO_NAME="${PRODUCT}-${VERSION}-${RELEASE}-source-dvd.iso"
NETINST_ISO_NAME="${PRODUCT}-${VERSION}-${RELEASE}-netinst-${ARCH}-dvd.iso"
+ EDGE_ISO_NAME="${PRODUCT}-${VERSION}-${RELEASE}-edge-${ARCH}-dvd.iso"
else
RELEASE_NAME="${PRODUCT}-${VERSION}-${ARCH}"
STANDARD_ISO_NAME="${PRODUCT}-${VERSION}-${ARCH}-dvd.iso"
@@ -123,6 +124,7 @@ function global_var_init()
EVE_DEBUG_ISO_NAME="${PRODUCT}-${VERSION}-everything-debug-${ARCH}-dvd.iso"
EVE_SRC_ISO_NAME="${PRODUCT}-${VERSION}-source-dvd.iso"
NETINST_ISO_NAME="${PRODUCT}-${VERSION}-netinst-${ARCH}-dvd.iso"
+ EDGE_ISO_NAME="${PRODUCT}-${VERSION}-edge-${ARCH}-dvd.iso"
fi
[ ! -d "${BUILD}" ] && mkdir -p "${BUILD}"
diff --git a/isomaker/iso.sh b/isomaker/iso.sh
index b15b394..20a6245 100755
--- a/isomaker/iso.sh
+++ b/isomaker/iso.sh
@@ -47,6 +47,22 @@ function gen_standard_iso()
return 0
}
+function gen_edge_iso()
+{
+ set +e
+ mkdir -p "${BUILD}"/iso/repodata/
+ cp "config/${ARCH}/edge_normal.xml" "${BUILD}"/iso/repodata/
+ createrepo -g "${BUILD}"/iso/repodata/*.xml "${BUILD}"/iso
+ if [ "$ARCH" == "x86_64" ]; then
+ mkisofs -R -J -T -r -l -d -joliet-long -allow-multidot -allow-leading-dots -no-bak -V "${RELEASE_NAME}" -o "${OUTPUT_DIR}/${EDGE_ISO_NAME}" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot "${BUILD}"/iso
+ [ $? != 0 ] && return 1
+ elif [ "$ARCH" == "aarch64" ]; then
+ mkisofs -R -J -T -r -l -d -joliet-long -allow-multidot -allow-leading-dots -no-bak -V "${RELEASE_NAME}" -o "${OUTPUT_DIR}/${EDGE_ISO_NAME}" -e images/efiboot.img -no-emul-boot "${BUILD}"/iso
+ [ $? != 0 ] && return 1
+ fi
+ implantisomd5 "${OUTPUT_DIR}/${EDGE_ISO_NAME}"
+ return 0
+}
function gen_src_iso()
{
diff --git a/isomaker/oemaker.sh b/isomaker/oemaker.sh
index 74d923e..37196e5 100755
--- a/isomaker/oemaker.sh
+++ b/isomaker/oemaker.sh
@@ -144,6 +144,13 @@ function mk_euleros_main()
return 1
fi
ls "${OUTPUT_DIR}/${EVE_SRC_ISO_NAME}"
+ elif [ "${ISO_TYPE}" == "edge" ]; then
+ gen_edge_iso
+ if [ $? -ne 0 ]; then
+ echo "create edge iso failed"
+ return 1
+ fi
+ ls "${OUTPUT_DIR}/${EDGE_ISO_NAME}"
fi
mkclean
return 0
diff --git a/isomaker/rpm.sh b/isomaker/rpm.sh
index e3feaab..85b1042 100755
--- a/isomaker/rpm.sh
+++ b/isomaker/rpm.sh
@@ -26,6 +26,10 @@ function parse_rpmlist_xml()
function download_rpms()
{
+ if [ "${ISO_TYPE}" == "edge" ]; then
+ get_edge_rpms
+ return 0
+ fi
cat "${CONFIG}" | grep packagereq | cut -d ">" -f 2 | cut -d "<" -f 1 > _all_rpms.lst
parse_rpmlist_xml "${ARCH}"
cat parsed_rpmlist_${ARCH} >> _all_rpms.lst
@@ -146,6 +150,21 @@ function get_rpm_pub_key()
rm -rf "${BUILD}"/iso/GPG_tmp
}
+function get_edge_rpms()
+{
+ parse_rpmlist_xml "edge_${ARCH}"
+ cat parsed_rpmlist_edge_${ARCH} > _edge_rpms.lst
+ parse_rpmlist_xml "edge_common"
+ cat parsed_rpmlist_edge_common >> _edge_rpms.lst
+ cat "config/${ARCH}/edge_normal.xml" | grep packagereq | cut -d ">" -f 2 | cut -d "<" -f 1 >> _edge_rpms.lst
+ sort -r -u _edge_rpms.lst -o _edge_rpms.lst
+ yumdownloader --resolve --installroot="${BUILD}"/tmp --destdir="${BUILD}"/iso/Packages/ $(cat _edge_rpms.lst | tr '\n' ' ')
+ if [ $? != 0 ] || [ $(ls "${BUILD}"/iso/Packages/ | wc -l) == 0 ]; then
+ echo "Download rpms failed!"
+ exit 133
+ fi
+}
+
function get_everything_rpms()
{
yum list --installroot="${BUILD}"/tmp --available | awk '{print $1}' | grep -E "\.noarch|\.${ARCH}" | grep -v "debuginfo" | grep -v "debugsource" > ava_every_lst
--
2.30.0

View File

@ -2,7 +2,7 @@
#### Description
`oemaker` is a building tool for making DVD iso, include standard iso, debug iso, source iso, everything iso, everything debug iso, everything source and netinst iso.
`oemaker` is a building tool for making DVD iso, include standard iso, debug iso, source iso, everything iso, everything debug iso, everything source iso, edge computing iso and netinst iso.
`oemaker` uses local arch when building, did not support cross building.
currently, `oemaker` support the arch of aarch64 and x86_64 for iso making.

View File

@ -1,7 +1,7 @@
# oemaker
#### 介绍
oemaker是一款用于构建DVD iso的工具包括标准isodebug iso, source iso, everything iso, everything debug iso, everything source and netinst iso等。
oemaker是一款用于构建DVD iso的工具包括标准isodebug iso, source iso, everything iso, everything debug iso, everything source iso, edge computing iso and netinst iso等。
oemaker采用的是本地架构的方式进行构建不支持交叉编译环境构建。
目前oemkaer支持aarch64和x86_64两个架构的iso制作。

119
edge_normal_aarch64.xml Normal file
View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps
PUBLIC '-//openEuler//DTD Comps info//EN'
'comps.dtd'>
<comps>
<group>
<id>core</id>
<name>Core</name>
<name xml:lang="zh_CN">核心</name>
<description>Smallest possible installation</description>
<description xml:lang="zh_CN">最小安装</description>
<default>true</default>
<uservisible>false</uservisible>
<packagelist>
<packagereq type="mandatory">audit</packagereq>
<packagereq type="mandatory">kernel</packagereq>
<packagereq type="mandatory">basesystem</packagereq>
<packagereq type="mandatory">bash</packagereq>
<packagereq type="mandatory">coreutils</packagereq>
<packagereq type="mandatory">cronie</packagereq>
<packagereq type="mandatory">curl</packagereq>
<packagereq type="mandatory">dnf</packagereq>
<packagereq type="mandatory">e2fsprogs</packagereq>
<packagereq type="mandatory">filesystem</packagereq>
<packagereq type="mandatory">firewalld</packagereq>
<packagereq type="mandatory">glibc</packagereq>
<packagereq type="mandatory">grubby</packagereq>
<packagereq type="mandatory">hostname</packagereq>
<packagereq type="mandatory">initscripts</packagereq>
<packagereq type="mandatory">iproute</packagereq>
<packagereq type="mandatory">iprutils</packagereq>
<packagereq type="mandatory">iputils</packagereq>
<packagereq type="mandatory">irqbalance</packagereq>
<packagereq type="mandatory">kbd</packagereq>
<packagereq type="mandatory">kexec-tools</packagereq>
<packagereq type="mandatory">less</packagereq>
<packagereq type="mandatory">man-db</packagereq>
<packagereq type="mandatory">ncurses</packagereq>
<packagereq type="mandatory">openssh</packagereq>
<packagereq type="mandatory">openssh-server</packagereq>
<packagereq type="mandatory">openssh-clients</packagereq>
<packagereq type="mandatory">parted</packagereq>
<packagereq type="mandatory">passwd</packagereq>
<packagereq type="mandatory">policycoreutils</packagereq>
<packagereq type="mandatory">procps-ng</packagereq>
<packagereq type="mandatory">rng-tools</packagereq>
<packagereq type="mandatory">rootfiles</packagereq>
<packagereq type="mandatory">rpm</packagereq>
<packagereq type="mandatory">selinux-policy-targeted</packagereq>
<packagereq type="mandatory">setup</packagereq>
<packagereq type="mandatory">shadow</packagereq>
<packagereq type="mandatory">sssd</packagereq>
<packagereq type="mandatory">sudo</packagereq>
<packagereq type="mandatory">systemd</packagereq>
<packagereq type="mandatory">tuned</packagereq>
<packagereq type="mandatory">util-linux</packagereq>
<packagereq type="mandatory">vim-minimal</packagereq>
<packagereq type="mandatory">xfsprogs</packagereq>
<packagereq type="mandatory">yum</packagereq>
<packagereq type="mandatory">wget</packagereq>
<packagereq type="mandatory">openEuler-release</packagereq>
<packagereq type="mandatory">openEuler-performance</packagereq>
<packagereq type="mandatory">openEuler-latest-release</packagereq>
<packagereq type="default">NetworkManager</packagereq>
<packagereq type="default">NetworkManager-config-server</packagereq>
<packagereq type="default">authselect</packagereq>
<packagereq type="default">dnf-plugins-core</packagereq>
<packagereq type="default">dracut-config-rescue</packagereq>
<packagereq type="default">kernel-tools</packagereq>
<packagereq type="default">sysfsutils</packagereq>
<packagereq type="default">linux-firmware</packagereq>
<packagereq type="default">lshw</packagereq>
<packagereq type="default">lsscsi</packagereq>
<packagereq type="default">rsyslog</packagereq>
<packagereq type="default">security-tool</packagereq>
<packagereq type="default">sg3_utils</packagereq>
<packagereq type="optional">dracut-config-generic</packagereq>
<packagereq type="optional">dracut-network</packagereq>
<packagereq type="optional">rdma-core</packagereq>
<packagereq type="optional">selinux-policy-mls</packagereq>
<packagereq type="default">patch</packagereq>
<packagereq type="default">patch-help</packagereq>
<packagereq type="default">ntp</packagereq>
<packagereq type="default">ntp-help</packagereq>
<packagereq type="default">ntp-perl</packagereq>
<packagereq type="default">iSulad</packagereq>
<packagereq type="default">tar</packagereq>
<packagereq type="default">socat</packagereq>
<packagereq type="default">socat-help</packagereq>
<packagereq type="default">conntrack-tools</packagereq>
<packagereq type="default">conntrack-tools-help</packagereq>
<packagereq type="optional">vim-X11</packagereq>
<packagereq type="default">vim-common</packagereq>
<packagereq type="optional">vim-enhanced</packagereq>
<packagereq type="optional">vim-filesystem</packagereq>
<packagereq type="optional">vim-minimal</packagereq>
<packagereq type="optional">efibootmgr</packagereq>
<packagereq type="optional">efibootmgr-help</packagereq>
<packagereq type="optional">cjson</packagereq>
<packagereq type="optional">cjson-devel</packagereq>
<packagereq type="optional">mosquitto</packagereq>
<packagereq type="optional">chrony</packagereq>
</packagelist>
</group>
<environment>
<id>minimal-environment</id>
<name>Minimal Install</name>
<name xml:lang="zh_CN">最小安装</name>
<description>Basic functionality.</description>
<description xml:lang="zh_CN">基本功能。</description>
<display_order>1</display_order>
<grouplist>
<groupid>core</groupid>
</grouplist>
<optionlist>
<groupid>standard</groupid>
</optionlist>
</environment>
</comps>

119
edge_normal_x86_64.xml Normal file
View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps
PUBLIC '-//openEuler//DTD Comps info//EN'
'comps.dtd'>
<comps>
<group>
<id>core</id>
<name>Core</name>
<name xml:lang="zh_CN">核心</name>
<description>Smallest possible installation</description>
<description xml:lang="zh_CN">最小安装</description>
<default>true</default>
<uservisible>false</uservisible>
<packagelist>
<packagereq type="mandatory">audit</packagereq>
<packagereq type="mandatory">kernel</packagereq>
<packagereq type="mandatory">basesystem</packagereq>
<packagereq type="mandatory">bash</packagereq>
<packagereq type="mandatory">coreutils</packagereq>
<packagereq type="mandatory">cronie</packagereq>
<packagereq type="mandatory">curl</packagereq>
<packagereq type="mandatory">dnf</packagereq>
<packagereq type="mandatory">e2fsprogs</packagereq>
<packagereq type="mandatory">filesystem</packagereq>
<packagereq type="mandatory">firewalld</packagereq>
<packagereq type="mandatory">glibc</packagereq>
<packagereq type="mandatory">grubby</packagereq>
<packagereq type="mandatory">hostname</packagereq>
<packagereq type="mandatory">initscripts</packagereq>
<packagereq type="mandatory">iproute</packagereq>
<packagereq type="mandatory">iprutils</packagereq>
<packagereq type="mandatory">iputils</packagereq>
<packagereq type="mandatory">irqbalance</packagereq>
<packagereq type="mandatory">kbd</packagereq>
<packagereq type="mandatory">kexec-tools</packagereq>
<packagereq type="mandatory">less</packagereq>
<packagereq type="mandatory">man-db</packagereq>
<packagereq type="mandatory">ncurses</packagereq>
<packagereq type="mandatory">openssh</packagereq>
<packagereq type="mandatory">openssh-server</packagereq>
<packagereq type="mandatory">openssh-clients</packagereq>
<packagereq type="mandatory">openEuler-release</packagereq>
<packagereq type="mandatory">openEuler-performance</packagereq>
<packagereq type="mandatory">openEuler-latest-release</packagereq>
<packagereq type="mandatory">parted</packagereq>
<packagereq type="mandatory">passwd</packagereq>
<packagereq type="mandatory">policycoreutils</packagereq>
<packagereq type="mandatory">procps-ng</packagereq>
<packagereq type="mandatory">rng-tools</packagereq>
<packagereq type="mandatory">rootfiles</packagereq>
<packagereq type="mandatory">rpm</packagereq>
<packagereq type="mandatory">selinux-policy-targeted</packagereq>
<packagereq type="mandatory">setup</packagereq>
<packagereq type="mandatory">shadow</packagereq>
<packagereq type="mandatory">sssd</packagereq>
<packagereq type="mandatory">sudo</packagereq>
<packagereq type="mandatory">systemd</packagereq>
<packagereq type="mandatory">tuned</packagereq>
<packagereq type="mandatory">util-linux</packagereq>
<packagereq type="mandatory">vim-minimal</packagereq>
<packagereq type="mandatory">xfsprogs</packagereq>
<packagereq type="mandatory">yum</packagereq>
<packagereq type="mandatory">wget</packagereq>
<packagereq type="default">NetworkManager</packagereq>
<packagereq type="default">NetworkManager-config-server</packagereq>
<packagereq type="default">authselect</packagereq>
<packagereq type="default">dnf-plugins-core</packagereq>
<packagereq type="default">dracut-config-rescue</packagereq>
<packagereq type="default">kernel-tools</packagereq>
<packagereq type="default">sysfsutils</packagereq>
<packagereq type="default">linux-firmware</packagereq>
<packagereq type="default">lshw</packagereq>
<packagereq type="default">lsscsi</packagereq>
<packagereq type="default">rsyslog</packagereq>
<packagereq type="default">security-tool</packagereq>
<packagereq type="default">sg3_utils</packagereq>
<packagereq type="optional">dracut-config-generic</packagereq>
<packagereq type="optional">dracut-network</packagereq>
<packagereq type="optional">rdma-core</packagereq>
<packagereq type="optional">selinux-policy-mls</packagereq>
<packagereq type="default">patch</packagereq>
<packagereq type="default">patch-help</packagereq>
<packagereq type="default">ntp</packagereq>
<packagereq type="default">ntp-help</packagereq>
<packagereq type="default">ntp-perl</packagereq>
<packagereq type="default">iSulad</packagereq>
<packagereq type="default">tar</packagereq>
<packagereq type="default">socat</packagereq>
<packagereq type="default">socat-help</packagereq>
<packagereq type="default">conntrack-tools</packagereq>
<packagereq type="default">conntrack-tools-help</packagereq>
<packagereq type="optional">vim-X11</packagereq>
<packagereq type="default">vim-common</packagereq>
<packagereq type="optional">vim-enhanced</packagereq>
<packagereq type="optional">vim-filesystem</packagereq>
<packagereq type="optional">vim-minimal</packagereq>
<packagereq type="optional">efibootmgr</packagereq>
<packagereq type="optional">efibootmgr-help</packagereq>
<packagereq type="optional">cjson</packagereq>
<packagereq type="optional">cjson-devel</packagereq>
<packagereq type="optional">mosquitto</packagereq>
<packagereq type="optional">chrony</packagereq>
</packagelist>
</group>
<environment>
<id>minimal-environment</id>
<name>Minimal Install</name>
<name xml:lang="zh_CN">最小安装</name>
<description>Basic functionality.</description>
<description xml:lang="zh_CN">基本功能。</description>
<display_order>1</display_order>
<grouplist>
<groupid>core</groupid>
</grouplist>
<optionlist>
<groupid>standard</groupid>
</optionlist>
</environment>
</comps>

View File

@ -11,19 +11,22 @@ Summary: a duilding tool for DVD ISO making and ISO cutting
License: Mulan PSL v2
Group: System/Management
Version: 2.0.0
Release: 4
Release: 5
BuildRoot: %{_tmppath}/%{name}
Source: https://gitee.com/openeuler/oemaker/repository/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source1: normal_aarch64.xml
Source2: normal_x86_64.xml
Source3: rpmlist.xml
Source4: edge_normal_aarch64.xml
Source5: edge_normal_x86_64.xml
Requires: createrepo dnf-plugins-core genisoimage isomd5sum grep bash libselinux-utils libxml2
Requires: lorax >= 19.6.78-1
Patch0001: 0001-rename-source-iso.patch
Patch0002: 0002-bugfix-I3QY98.patch
Patch0003: 0003-change-for-edge-computing.patch
%description
a building tool for DVD ISO making and ISO cutting
@ -44,6 +47,10 @@ rm -rf %{_builddir}/%{name}-%{version}/%{name}/isomaker/config/x86_64/normal.xm
cp %{SOURCE2} %{_builddir}/%{name}-%{version}/%{name}/isomaker/config/x86_64/normal.xml
rm -rf %{_builddir}/%{name}-%{version}/%{name}/isomaker/config/rpmlist.xml
cp %{SOURCE3} %{_builddir}/%{name}-%{version}/%{name}/isomaker/config/rpmlist.xml
rm -rf %{_builddir}/%{name}-%{version}/%{name}/isomaker/config/aarch64/edge_normal.xml
cp %{SOURCE4} %{_builddir}/%{name}-%{version}/%{name}/isomaker/config/aarch64/edge_normal.xml
rm -rf %{_builddir}/%{name}-%{version}/%{name}/isomaker/config/x86_64/edge_normal.xml
cp %{SOURCE5} %{_builddir}/%{name}-%{version}/%{name}/isomaker/config/x86_64/edge_normal.xml
cd %{_builddir}/%{name}-%{version}/%{name}
%autopatch -p1
@ -121,6 +128,11 @@ rm -rf %{buildroot}
rm -rf $RPM_BUILD_DIR/%{name}
%changelog
* Tue Sep 28 2021 miao_kaibo <miaokaibo@outlook.com> - 2.0.0-5
- ID:NA
- SUG:NA
- DESC: change for edge computing iso
* Wed May 12 2021 miao_kaibo <miaokaibo@outlook.com> - 2.0.0-4
- ID:NA
- SUG:NA

View File

@ -1416,4 +1416,38 @@
<packagereq>zziplib-help</packagereq>
<packagereq>zziplib-utils</packagereq>
</packagelist>
<packagelist type="edge_aarch64">
<packagereq>grub2-efi-aa64</packagereq>
<packagereq>grub2-efi-aa64-cdboot</packagereq>
<packagereq>grub2-efi-aa64-modules</packagereq>
</packagelist>
<packagelist type="edge_x86_64">
<packagereq>grub2-pc</packagereq>
<packagereq>grub2-pc-modules</packagereq>
</packagelist>
<packagelist type="edge_common">
<packagereq>kubernetes</packagereq>
<packagereq>kubernetes-client</packagereq>
<packagereq>kubernetes-help</packagereq>
<packagereq>kubernetes-kubeadm</packagereq>
<packagereq>kubernetes-kubelet</packagereq>
<packagereq>kubernetes-master</packagereq>
<packagereq>kubernetes-node</packagereq>
<packagereq>kubeedge-cloudcore</packagereq>
<packagereq>kubeedge-edgecore</packagereq>
<packagereq>kubeedge-edgesite</packagereq>
<packagereq>kubeedge-keadm</packagereq>
<packagereq>grub2-common</packagereq>
<packagereq>grub2-tools-minimal</packagereq>
<packagereq>grub2-tools-extra</packagereq>
<packagereq>grub2-tools</packagereq>
<packagereq>grub2-help</packagereq>
<packagereq>lvm2-help</packagereq>
<packagereq>lvm2</packagereq>
<packagereq>shim</packagereq>
<packagereq>mdadm</packagereq>
<packagereq>mdadm-help</packagereq>
<packagereq>dosfstools-help</packagereq>
<packagereq>dosfstools</packagereq>
</packagelist>
</groups>