|
@@ -42,7 +42,7 @@ EXAMPLE:
|
|
|
$(basename $0) --arch amd64 --name iso --conf config-iso.sh --tasks 'rootfs,config,config_openbox,iso'
|
|
|
|
|
|
标准ubuntu:
|
|
|
- $(basename $0) --arch amd64 --name ubuntu --mirror http://172.29.157.20/ubuntu --suite focal --conf config-ubuntu.sh --tasks 'rootfs,config,tar,ext4'
|
|
|
+ $(basename $0) --arch amd64 --name ubuntu --mirror http://172.29.157.20/ubuntu --suite focal --conf config-ubuntu.sh --tasks 'rootfs,config,wic'
|
|
|
"
|
|
|
|
|
|
exit 1
|
|
@@ -55,9 +55,9 @@ fi
|
|
|
|
|
|
trap "exit_function" 0
|
|
|
|
|
|
-timestamp=$(date "+%Y%m%d")
|
|
|
+# timestamp=$(date "+%Y%m%d")
|
|
|
# timestamp=$(date "+%Y%m%d%H%M%S")
|
|
|
-# timestamp="20220714"
|
|
|
+timestamp="20220714"
|
|
|
|
|
|
CURRENT_DIR=$(dirname $(readlink -f $0))
|
|
|
|
|
@@ -273,6 +273,83 @@ EOF
|
|
|
"."
|
|
|
}
|
|
|
|
|
|
+# 制作磁盘镜像
|
|
|
+function do_wic() {
|
|
|
+ # 磁盘文件名
|
|
|
+ IMAGE_FILE="${ROOTFS_DIR}.wic"
|
|
|
+
|
|
|
+ # 计算rootfs目录大小,默认在原有大小基础上加 600M
|
|
|
+ dusize=$(sudo du -s ${ROOTFS_DIR} | awk '{print $1}')
|
|
|
+ size=$(echo "(${dusize} / 1024) + 600" | bc)
|
|
|
+
|
|
|
+ dd if=/dev/zero of="${IMAGE_FILE}" bs=1M count=${size} status=progress
|
|
|
+
|
|
|
+ # 创建两个分区,一个用来存放kernel、initrd;另一个存放根文件系统
|
|
|
+ sgdisk -n 0:0:+100M -c 0:boot "${IMAGE_FILE}"
|
|
|
+ sgdisk -n 0:0:0 -c 0:rootfs "${IMAGE_FILE}"
|
|
|
+ sgdisk -p "${IMAGE_FILE}"
|
|
|
+
|
|
|
+ disk_path=$(readlink -f "${IMAGE_FILE}")
|
|
|
+ LOOP_DEV=$(losetup -l -O NAME,BACK-FILE | grep "${disk_path}" | awk '{print $1}')
|
|
|
+
|
|
|
+ if [ -z "${LOOP_DEV}" ]; then
|
|
|
+ LOOP_DEV=$(losetup -f)
|
|
|
+ # 将镜像关联到loop设备上
|
|
|
+ sudo losetup -P ${LOOP_DEV} "${IMAGE_FILE}"
|
|
|
+ # sudo partprobe ${LOOP_DEV}
|
|
|
+ fi
|
|
|
+ echo ${LOOP_DEV}
|
|
|
+
|
|
|
+ # 格式化分区
|
|
|
+ yes | sudo mkfs.fat ${LOOP_DEV}p1
|
|
|
+ yes | sudo mkfs.ext4 ${LOOP_DEV}p2
|
|
|
+
|
|
|
+ boot_uuid=$(sudo blkid -s UUID -o value ${LOOP_DEV}p1)
|
|
|
+ root_uuid=$(sudo blkid -s UUID -o value ${LOOP_DEV}p2)
|
|
|
+ part_uuid=$(sudo blkid -s PARTUUID -o value ${LOOP_DEV}p2)
|
|
|
+
|
|
|
+ echo boot_uuid=${boot_uuid}
|
|
|
+ echo root_uuid=${root_uuid}
|
|
|
+ echo part_uuid=${part_uuid}
|
|
|
+
|
|
|
+ # 拷贝文件
|
|
|
+ mkdir -p {p1,p2}
|
|
|
+ sudo mount ${LOOP_DEV}p1 ./p1/
|
|
|
+ sudo mount ${LOOP_DEV}p2 ./p2/
|
|
|
+
|
|
|
+ # copy eif to p1
|
|
|
+ sudo cp -rf ${CURRENT_DIR}/${ARCH}/EFI/ ./p1/
|
|
|
+ # copy rootfs to p2
|
|
|
+ sudo cp -rf -a ${ROOTFS_DIR}/* ./p2/
|
|
|
+
|
|
|
+ # generate grub
|
|
|
+ sudo tee ./p1/EFI/BOOT/grub.cfg <<EOF
|
|
|
+serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
|
|
|
+default=myboot1
|
|
|
+timeout=5
|
|
|
+
|
|
|
+menuentry 'myboot1'{
|
|
|
+linux /vmlinuz root=UUID=${root_uuid} rootwait rootfstype=ext4 console=ttyS0,115200 console=tty0 quiet
|
|
|
+initrd /initrd.img
|
|
|
+}
|
|
|
+
|
|
|
+menuentry 'myboot2'{
|
|
|
+linux /vmlinuz root=PARTUUID=${part_uuid} rootwait rootfstype=ext4 console=ttyS0,115200 console=tty0 quiet
|
|
|
+initrd /initrd.img
|
|
|
+}
|
|
|
+EOF
|
|
|
+
|
|
|
+ # generate fstab
|
|
|
+ sudo mkdir -p ./p2/boot/efi
|
|
|
+ sudo tee ./p2/etc/fstab <<EOF
|
|
|
+UUID=${boot_uuid} /boot/efi vfat rw,relatime 0 0
|
|
|
+UUID=${root_uuid} / ext4 rw,relatime 0 1
|
|
|
+EOF
|
|
|
+
|
|
|
+ sudo umount ./p1 ./p2
|
|
|
+ sudo losetup -d ${LOOP_DEV}
|
|
|
+}
|
|
|
+
|
|
|
function action_umount() {
|
|
|
if mountpoint -q $1; then
|
|
|
sudo umount $1
|
|
@@ -356,7 +433,8 @@ SUITE=${SUITE:-v101}
|
|
|
) | tee ${ROOTFS_ENV_FILE}
|
|
|
|
|
|
LOG_FILE=${ROOTFS_DIR}.log
|
|
|
-echo "running task: '${TASKS}', use 'tail -f ${LOG_FILE}' see detail log"
|
|
|
+# echo "running task: '${TASKS}', use 'tail -f ${LOG_FILE}' see detail log"
|
|
|
+echo "running task: '${TASKS}'"
|
|
|
|
|
|
for task in $(echo ${TASKS} | tr ',' ' '); do
|
|
|
echo "---> do_${task}"
|