Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add usbvm #1442

Merged
merged 16 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions classes/openxt-image.bbclass
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,11 @@ remove_nonessential_initscripts() {
fi
}
ROOTFS_POSTPROCESS_COMMAND += "remove_nonessential_initscripts; "

# Xenstore reboot
ctrlaltdel_reboot() {
# PV driver synthesize ctrl+alt+del in response to a xenstore reboot
echo 'ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now' >> ${IMAGE_ROOTFS}/etc/inittab;
}
ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("IMAGE_FEATURES", "ctrlaltdel-reboot", "ctrlaltdel_reboot; ", "",d)}'
IMAGE_FEATURES[validitems] += "ctrlaltdel-reboot"
13 changes: 13 additions & 0 deletions conf/machine/usbvm.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright (C) 2010 Citrix Systems
# Released under the MIT license (see packages/COPYING)
#@TYPE: Machine
#@NAME: usbvm
#@DESCRIPTION: Machine configuration for USB VM

require xenclient-common.conf

MACHINE_FEATURES = "pci ext2 x86"

APPEND = "root=/dev/xvda2 ro console=hvc0 iommu=soft"

USE_VT = "0"
24 changes: 24 additions & 0 deletions recipes-core/base-files/files/usbvm/fstab
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# proc is presumably mounted by /etc/init.d/rcS script.
# /etc/init.d/rcS might use this file, so match this entry with
# /etc/fstab.early.
proc /proc proc nosuid,noexec,nodev 0 0

# OpenXT read-only root tmpfs:
# These have to be either absent from this file or match /etc/fstab.early
# exactly for mountearly.sh and mountall.sh to work correctly.
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
tmpfs /run tmpfs defaults,size=5M 0 0

tmpfs /var/volatile tmpfs defaults,size=5M 0 0

# OpenXT read-only root:
# mountall.sh should take care of these.
rootfs / auto defaults,ro,noatime 1 1

devpts /dev/pts devpts mode=0620,gid=5 0 0
tmpfs /dev/shm tmpfs mode=0777,size=1M 0 0

xenfs /proc/xen xenfs defaults 0 0

tmpfs /var/lib/dbus tmpfs defaults,size=1M 0 0
13 changes: 13 additions & 0 deletions recipes-core/base-files/files/usbvm/fstab.early
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# proc is presumably mounted by /etc/init.d/rcS script.
# /etc/init.d/rcS might use /etc/fstab when not modified accordingly, so match
# this entry with /etc/fstab.
proc /proc proc nosuid,noexec,nodev 0 0

# OpenXT read-only root tmpfs:
# These have to be either absent from this file or match /etc/fstab
# exactly for mountearly.sh and mountall.sh to work correctly.
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
tmpfs /run tmpfs defaults,size=5M 0 0

tmpfs /var/volatile tmpfs defaults,size=5M 0 0
2 changes: 2 additions & 0 deletions recipes-core/busybox/busybox_%.bbappend
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

DEPENDS += "libselinux"

SRC_URI += " \
file://archive.cfg \
file://console.cfg \
Expand Down
1 change: 1 addition & 0 deletions recipes-core/busybox/files/general.cfg
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
CONFIG_SELINUX=y
CONFIG_UNICODE_SUPPORT=y
CONFIG_UNICODE_WIDE_WCHARS=y
2 changes: 2 additions & 0 deletions recipes-core/busybox/files/process.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ CONFIG_FEATURE_SHOW_THREADS=y
CONFIG_PS=y
CONFIG_FEATURE_PS_TIME=n
CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=n

CONFIG_PKILL=y
32 changes: 32 additions & 0 deletions recipes-core/images/usbvm-image.bb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
DESCRIPTION = "usbvm to isolate USB hardware"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = " \
file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
"

inherit openxt-selinux-image

IMAGE_FEATURES += " \
read-only-rootfs \
empty-root-password \
ctrlaltdel-reboot \
"

IMAGE_FSTYPES = "ext4.disk.vhd.gz"

IMAGE_LINGUAS = ""

COMPATIBLE_MACHINE = "usbvm"

IMAGE_INSTALL += " \
packagegroup-core-boot \
kmod \
openssh \
rsyslog \
usbutils \
argo-module \
grub-xen-conf \
kernel-modules \
vusb-daemon-stub \
argo-input-sender \
"
4 changes: 1 addition & 3 deletions recipes-core/images/xenclient-ndvm-image.bb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ IMAGE_FEATURES += " \
read-only-rootfs \
empty-root-password \
root-bash-shell \
ctrlaltdel-reboot \
"

IMAGE_FSTYPES = "ext3.disk.vhd.gz"
Expand Down Expand Up @@ -76,9 +77,6 @@ post_rootfs_shell_commands() {
# Trick to resolve dom0 name with argo.
echo '1.0.0.0 dom0' >> ${IMAGE_ROOTFS}/etc/hosts;

# enable ctrlaltdel reboot because PV driver uses ctrl+alt+del to interpret reboot issued via xenstore
echo 'ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now' >> ${IMAGE_ROOTFS}/etc/inittab;

# NDVM doesn't have a /dev/tty1, disable the login shell on it
sed -i 's/[^#].*getty.*tty1$/#&/' ${IMAGE_ROOTFS}/etc/inittab ;
}
Expand Down
4 changes: 1 addition & 3 deletions recipes-core/images/xenclient-syncvm-image.bb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ IMAGE_FEATURES += " \
package-management \
read-only-rootfs \
root-bash-shell \
ctrlaltdel-reboot \
"

IMAGE_FSTYPES = "ext3.vhd.gz"
Expand Down Expand Up @@ -47,9 +48,6 @@ require xenclient-version.inc
inherit xenclient-licences

post_rootfs_shell_commands() {
# enable ctrlaltdel reboot because PV driver uses ctrl+alt+del to interpret reboot issued via xenstore
echo 'ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now' >> ${IMAGE_ROOTFS}/etc/inittab;

# Trick to resolve dom0 name with argo.
echo '1.0.0.0 dom0' >> ${IMAGE_ROOTFS}/etc/hosts;
}
Expand Down
4 changes: 1 addition & 3 deletions recipes-core/images/xenclient-uivm-image.bb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ IMAGE_FEATURES += " \
read-only-rootfs \
empty-root-password \
root-bash-shell \
ctrlaltdel-reboot \
"
IMAGE_FSTYPES = "ext3.vhd.gz"
export IMAGE_BASENAME = "xenclient-uivm-image"
Expand Down Expand Up @@ -107,9 +108,6 @@ post_rootfs_shell_commands() {
# Start WM right away.
echo 'x:5:respawn:/bin/su - root -c /usr/bin/startxfce4' >> ${IMAGE_ROOTFS}/etc/inittab

# enable ctrlaltdel reboot because PV driver uses ctrl+alt+del to interpret reboot issued via xenstore
echo 'ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now' >> ${IMAGE_ROOTFS}/etc/inittab

# Trick to resolve dom0 name with argo.
echo '1.0.0.0 dom0' >> ${IMAGE_ROOTFS}/etc/hosts
}
Expand Down
12 changes: 6 additions & 6 deletions recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ RESTORECON="${ROOT_DIR}/sbin/restorecon"
create_file() {
EXEC="
touch \"$1\";
[ -x ${RESTORECON} ] && ${RESTORECON} \"$1\" >/dev/tty0 2>&1;
chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
[ -x ${RESTORECON} ] && ${RESTORECON} \"$1\" >/dev/console 2>&1;
chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/console 2>&1;
chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/console 2>&1 "

test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache.build

Expand All @@ -52,9 +52,9 @@ create_file() {
mk_dir() {
EXEC="
mkdir -p \"$1\";
[ -x ${RESTORECON} ] && ${RESTORECON} \"$1\" >/dev/tty0 2>&1;
chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
[ -x ${RESTORECON} ] && ${RESTORECON} \"$1\" >/dev/console 2>&1;
chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/console 2>&1;
chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/console 2>&1 "

test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache.build
[ -e "$1" ] && {
Expand Down
1 change: 1 addition & 0 deletions recipes-core/packagegroups/packagegroup-xenclient-dom0.bb
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ RDEPENDS_${PN} = " \
xenclient-pcrdiff \
eject \
linux-input \
argo-input-receiver \
iputils-ping \
vusb-daemon \
xenmgr-data \
Expand Down
176 changes: 176 additions & 0 deletions recipes-kernel/linux/6.1/defconfigs/usbvm/defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_AUDIT=y
CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_LOG_BUF_SHIFT=16
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
CONFIG_BLK_DEV_INITRD=y
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
# CONFIG_RD_XZ is not set
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_EXPERT=y
CONFIG_PROFILING=y
CONFIG_SMP=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_DEBUG=y
CONFIG_XEN=y
CONFIG_XEN_DEBUG_FS=y
# CONFIG_XEN_DOM0 is not set
# CONFIG_KVM_GUEST is not set
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_MCORE2=y
CONFIG_NR_CPUS=8
# CONFIG_X86_MCE is not set
# CONFIG_PERF_EVENTS_INTEL_UNCORE is not set
# CONFIG_PERF_EVENTS_INTEL_RAPL is not set
# CONFIG_PERF_EVENTS_INTEL_CSTATE is not set
# CONFIG_X86_16BIT is not set
# CONFIG_MICROCODE is not set
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
# CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS is not set
CONFIG_HZ_100=y
CONFIG_HIBERNATION=y
CONFIG_ACPI_DOCK=y
CONFIG_ACPI_PROCESSOR_AGGREGATOR=y
# CONFIG_ACPI_TABLE_UPGRADE is not set
CONFIG_ACPI_DEBUG=y
CONFIG_ACPI_SBS=y
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_PCI_MMCONFIG is not set
# CONFIG_ISA_DMA_API is not set
CONFIG_IA32_EMULATION=y
# CONFIG_VIRTUALIZATION is not set
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_FORCE=y
# CONFIG_MODULE_SIG_ALL is not set
CONFIG_MODULE_SIG_SHA384=y
CONFIG_BLK_DEV_BSGLIB=y
CONFIG_PARTITION_ADVANCED=y
# CONFIG_MQ_IOSCHED_DEADLINE is not set
# CONFIG_MQ_IOSCHED_KYBER is not set
CONFIG_SLAB=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_COMPACTION is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_NET=y
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_INET_DIAG is not set
# CONFIG_IPV6 is not set
# CONFIG_WIRELESS is not set
CONFIG_PCI=y
CONFIG_PCI_MSI=y
# CONFIG_VGA_ARB is not set
CONFIG_UEVENT_HELPER=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_STANDALONE is not set
CONFIG_CONNECTOR=y
# CONFIG_DMIID is not set
# CONFIG_PNP_DEBUG_MESSAGES is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_NETDEVICES=y
# CONFIG_NET_CORE is not set
# CONFIG_ETHERNET is not set
# CONFIG_USB_NET_DRIVERS is not set
# CONFIG_WLAN is not set
# CONFIG_XEN_NETDEV_FRONTEND is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_SERIO is not set
# CONFIG_VT is not set
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
# CONFIG_HW_RANDOM is not set
# CONFIG_DEVMEM is not set
# CONFIG_DEVPORT is not set
# CONFIG_HWMON is not set
CONFIG_USB=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_XHCI_HCD=m
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_OHCI_HCD=m
CONFIG_USB_UHCI_HCD=m
CONFIG_SYNC_FILE=y
# CONFIG_VIRTIO_MENU is not set
CONFIG_XEN_BACKEND=y
CONFIG_XEN_GNTDEV=y
CONFIG_XEN_GRANT_DEV_ALLOC=y
CONFIG_XEN_PCIDEV_BACKEND=y
# CONFIG_X86_PLATFORM_DEVICES is not set
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_RAS=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
CONFIG_VFAT_FS=m
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_CONFIGFS_FS=y
# CONFIG_MISC_FILESYSTEMS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_15=y
CONFIG_NLS_UTF8=y
CONFIG_SECURITY_DMESG_RESTRICT=y
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_PATH=y
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_YAMA=y
# CONFIG_INTEGRITY is not set
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_CRC32C_INTEL=y
CONFIG_CRYPTO_CRCT10DIF_PCLMUL=y
# CONFIG_CRYPTO_HW is not set
CONFIG_CRC_CCITT=m
CONFIG_CRC_T10DIF=y
CONFIG_CRC_ITU_T=m
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
CONFIG_PRINTK_TIME=y
CONFIG_DYNAMIC_DEBUG=y
CONFIG_STRIP_ASM_SYMS=y
CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=0
CONFIG_RCU_CPU_STALL_TIMEOUT=60
# CONFIG_RCU_TRACE is not set
CONFIG_LATENCYTOP=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_UPROBE_EVENTS is not set
CONFIG_EARLY_PRINTK_DBGP=y
CONFIG_UNWINDER_FRAME_POINTER=y
Loading