Skip to content

Commit

Permalink
x86 patches
Browse files Browse the repository at this point in the history
  • Loading branch information
jjm2473 committed Jul 19, 2022
1 parent 7d74617 commit 88bef44
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 14 deletions.
13 changes: 10 additions & 3 deletions scripts/gen_image_generic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,36 @@ KERNELDIR="$3"
ROOTFSSIZE="$4"
ROOTFSIMAGE="$5"
ALIGN="$6"
USERDATASIZE="2048"

rm -f "$OUTPUT"

head=16
sect=63

# create partition table
set $(ptgen -o "$OUTPUT" -h $head -s $sect ${GUID:+-g} -p "${KERNELSIZE}m" -p "${ROOTFSSIZE}m" ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE} ${GUID:+-G $GUID})
set $(ptgen -o "$OUTPUT" -h $head -s $sect ${GUID:+-g} -p "${KERNELSIZE}m" -p "${ROOTFSSIZE}m" -p "${USERDATASIZE}m" ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE} ${GUID:+-G $GUID})

KERNELOFFSET="$(($1 / 512))"
KERNELSIZE="$2"
ROOTFSOFFSET="$(($3 / 512))"
ROOTFSSIZE="$(($4 / 512))"
USERDATAOFFSET="$(($5 / 512))"
USERDATASIZE="$(($6 / 512))"

[ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc count="$ROOTFSSIZE"
dd if=/dev/zero of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc count="$ROOTFSSIZE"
dd if="$ROOTFSIMAGE" of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc

[ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$USERDATAOFFSET" conv=notrunc count="$USERDATASIZE"
echo "RESET000" | dd of="$OUTPUT" bs=512 seek="$USERDATAOFFSET" conv=notrunc,sync count=1

if [ -n "$GUID" ]; then
[ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$((ROOTFSOFFSET + ROOTFSSIZE))" conv=notrunc count="$sect"
[ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$((USERDATAOFFSET + USERDATASIZE))" conv=notrunc count="$sect"
mkfs.fat -n kernel -C "$OUTPUT.kernel" -S 512 "$((KERNELSIZE / 1024))"
mcopy -s -i "$OUTPUT.kernel" "$KERNELDIR"/* ::/
else
make_ext4fs -J -L kernel -l "$KERNELSIZE" "$OUTPUT.kernel" "$KERNELDIR"
fi

dd if="$OUTPUT.kernel" of="$OUTPUT" bs=512 seek="$KERNELOFFSET" conv=notrunc
rm -f "$OUTPUT.kernel"
27 changes: 27 additions & 0 deletions target/linux/x86/base-files/etc/board.d/99-default_network
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/sh
#
# Copyright (C) 2013-2015 OpenWrt.org
#

. /lib/functions/uci-defaults.sh

board_config_update

json_is_a network object && exit 0

ETHNUM=$(ls /sys/class/net/ | grep eth | wc -l)
if [ $ETHNUM == 1 ]; then
ucidef_set_interface_lan 'eth0'
else
[ -d /sys/class/net/eth0 ] && ucidef_set_interface_wan 'eth0'
interface=""
for eth_interface in /sys/class/net/eth*
do
[ "$eth_interface" != "/sys/class/net/eth0" ] && interface=$interface" "${eth_interface##*/}
done
[ -n "$interface" ] && ucidef_set_interface_lan "$interface"
fi

board_config_flush

exit 0
19 changes: 19 additions & 0 deletions target/linux/x86/base-files/etc/board.d/99-virtualbox_network
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/sh
#
# Copyright © 2017 OpenWrt.org
#

. /lib/functions/system.sh
. /lib/functions/uci-defaults.sh

board_config_update

case "$(board_name)" in
innotek-gmbh-virtualbox)
ucidef_set_interface "lan" ipaddr "192.168.56.2"
;;
esac

board_config_flush

exit 0
Empty file.
31 changes: 25 additions & 6 deletions target/linux/x86/base-files/lib/upgrade/platform.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# modified by jjm2473
# 1. keep overlay partition when upgrade
# 2. reset rom uuid in ext_overlay (aka sandbox mode) when upgrade

RAMFS_COPY_BIN='grub-bios-setup'

platform_check_image() {
Expand All @@ -17,6 +21,8 @@ platform_check_image() {
return 1
}

[ "$SAVE_CONFIG" -eq 1 ] && return 0

get_partitions "/dev/$diskdev" bootdisk

v "Extract boot sector from the image"
Expand All @@ -42,7 +48,7 @@ platform_copy_config() {
if export_partdevice partdev 1; then
part_magic_fat "/dev/$partdev" && parttype=vfat
mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt
cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
rm -f "/mnt/$BACKUP_FILE"
umount /mnt
fi
}
Expand Down Expand Up @@ -79,16 +85,21 @@ platform_do_upgrade() {

sync

if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then
get_partitions "/dev/$diskdev" bootdisk
if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" -o -n "$UPGRADE_BACKUP" ]; then
[ -n "$UPGRADE_BACKUP" ] || get_partitions "/dev/$diskdev" bootdisk

v "Extract boot sector from the image"
get_image_dd "$1" of=/tmp/image.bs count=63 bs=512b

get_partitions /tmp/image.bs image

#compare tables
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
if [ -n "$UPGRADE_BACKUP" ]; then
#keep overlay partition when upgrade
diff=
else
#compare tables
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
fi
else
diff=1
fi
Expand All @@ -106,9 +117,17 @@ platform_do_upgrade() {

#iterate over each partition from the image and write it to the boot disk
while read part start size; do
if [ -n "$UPGRADE_BACKUP" -a "$part" -ge 3 ]; then
v "Skip partition $part >= 3 when upgrading"
continue
fi
if export_partdevice partdev $part; then
v "Writing image to /dev/$partdev..."
get_image_dd "$1" of="/dev/$partdev" ibs=512 obs=1M skip="$start" count="$size" conv=fsync
if [ "$part" -eq 3 ]; then
echo "RESET000" | dd of="/dev/$partdev" bs=512 count=1 conv=sync,fsync 2>/dev/null
else
get_image_dd "$1" of="/dev/$partdev" ibs=512 obs=1M skip="$start" count="$size" conv=fsync
fi
else
v "Unable to find partition $part device, skipped."
fi
Expand Down
11 changes: 6 additions & 5 deletions target/linux/x86/image/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ define Build/combined
$(INSTALL_DIR) $@.boot/efi/boot
$(CP) $(STAGING_DIR_IMAGE)/grub2/boot$(if $(CONFIG_x86_64),x64,ia32).efi $@.boot/efi/boot/
)
PADDING="1" SIGNATURE="$(IMG_PART_SIGNATURE)" \
SIGNATURE="$(IMG_PART_SIGNATURE)" \
$(if $(filter $(1),pad),PADDING="1") \
$(if $(filter $(1),efi),GUID="$(IMG_PART_DISKGUID)") $(SCRIPT_DIR)/gen_image_generic.sh \
$@ \
$(CONFIG_TARGET_KERNEL_PARTSIZE) $@.boot \
Expand Down Expand Up @@ -107,15 +108,15 @@ define Device/Default
ARTIFACT/image.iso := grub-config iso | iso
IMAGE/combined.img := grub-config pc | combined | grub-install | append-metadata
IMAGE/combined.img.gz := grub-config pc | combined | grub-install | gzip | append-metadata
IMAGE/combined.vdi := grub-config pc | combined | grub-install | qemu-image vdi
IMAGE/combined.vmdk := grub-config pc | combined | grub-install | qemu-image vmdk
IMAGE/combined.vdi := grub-config pc | combined pad | grub-install | qemu-image vdi
IMAGE/combined.vmdk := grub-config pc | combined pad | grub-install | qemu-image vmdk
IMAGE/rootfs.img := append-rootfs | pad-to $(ROOTFS_PARTSIZE)
IMAGE/rootfs.img.gz := append-rootfs | pad-to $(ROOTFS_PARTSIZE) | gzip
ARTIFACT/image-efi.iso := grub-config iso | iso efi
IMAGE/combined-efi.img := grub-config efi | combined efi | grub-install efi | append-metadata
IMAGE/combined-efi.img.gz := grub-config efi | combined efi | grub-install efi | gzip | append-metadata
IMAGE/combined-efi.vdi := grub-config efi | combined efi | grub-install efi | qemu-image vdi
IMAGE/combined-efi.vmdk := grub-config efi | combined efi | grub-install efi | qemu-image vmdk
IMAGE/combined-efi.vdi := grub-config efi | combined efi pad | grub-install efi | qemu-image vdi
IMAGE/combined-efi.vmdk := grub-config efi | combined efi pad | grub-install efi | qemu-image vmdk
ifeq ($(CONFIG_TARGET_IMAGES_GZIP),y)
IMAGES-y := rootfs.img.gz
IMAGES-$$(CONFIG_GRUB_IMAGES) += combined.img.gz
Expand Down

0 comments on commit 88bef44

Please sign in to comment.