sanitize_name_x86() {
	sed -e '
		y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;
		s/[^a-z0-9_-]\+/-/g;
		s/^-//;
		s/-$//;
	' "$@"
}

do_sysinfo_x86() {
	local vendor product file

	for file in sys_vendor board_vendor; do
		vendor="$(cat /sys/devices/virtual/dmi/id/$file 2>/dev/null)"
		[ -n "$vendor" ] && break
	done

	for file in product_name board_name; do
		product="$(cat /sys/devices/virtual/dmi/id/$file 2>/dev/null)"
		case "$vendor:$product" in
		"PC Engines:APU")
			product="apu1"
			break
			;;
		"Sophos:SG"|"Sophos:XG")
			case "$(cat /sys/devices/virtual/dmi/id/product_version 2>/dev/null)" in
			105*)
				product="${product}-105"
				break
				;;
			esac
			;;
		"Supermicro:Super Server")
			continue
			;;
		?*:?*)
			break
			;;
		esac
	done

	[ -n "$vendor" -a -n "$product" ] || return

	mkdir -p /tmp/sysinfo

	echo "$vendor $product" > /tmp/sysinfo/model

	sanitize_name_x86 /tmp/sysinfo/model > /tmp/sysinfo/board_name
}

boot_hook_add preinit_main do_sysinfo_x86
