添加独立的qemu mips包

This commit is contained in:
gfdgd xi 2024-06-01 11:03:02 +08:00
parent 950eca478c
commit d84191d17e
74 changed files with 4382 additions and 0 deletions

View File

@ -0,0 +1,131 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: qemu-guest-agent
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: QEMU Guest Agent startup script
# Description: Start the QEMU Guest Agent if we're running
# in a QEMU virtual machine
### END INIT INFO
# Author: Michael Tokarev <mjt@tls.msk.ru>
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="QEMU Guest Agent"
NAME=qemu-ga
DAEMON=/usr/sbin/$NAME
PIDFILE=/var/run/$NAME.pid
# config
DAEMON_ARGS=""
# default transport
TRANSPORT=virtio-serial:/dev/virtio-ports/org.qemu.guest_agent.0
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/qemu-guest-agent ] && . /etc/default/qemu-guest-agent
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
#
# Function that checks whenever system has necessary environment
# It also splits $TRANSPORT into $method and $path
#
do_check_transport() {
method=${TRANSPORT%%:*}; path=${TRANSPORT#*:}
case "$method" in
virtio-serial | isa-serial)
if [ ! -e "$path" ]; then
log_warning_msg "$NAME: transport endpoint not found, not starting"
return 1
fi
;;
esac
}
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon -Sq -p $PIDFILE -x $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon -Sq -p $PIDFILE -x $DAEMON -- --daemonize \
$DAEMON_ARGS -m "$method" -p "$path" \
|| return 2
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon -Kq --retry=TERM/30/KILL/5 -p $PIDFILE --name $NAME
}
case "$1" in
start)
do_check_transport || exit 0
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" $NAME
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" $NAME
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" $NAME && exit 0 || exit $?
;;
restart|force-reload) # we do not support reload
do_check_transport || exit 0
log_daemon_msg "Restarting $DESC" $NAME
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: /etc/init.d/qemu-guest-agent {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:

6
VM/MipsQemu/etc/qemu-ifdown Executable file
View File

@ -0,0 +1,6 @@
#! /bin/sh
# Script to shut down a network (tap) device for qemu.
# Initially this script is empty, but you can configure,
# for example, accounting info here.
:

42
VM/MipsQemu/etc/qemu-ifup Executable file
View File

@ -0,0 +1,42 @@
#! /bin/sh
# Script to bring a network (tap) device for qemu up.
# The idea is to add the tap device to the same bridge
# as we have default routing to.
# in order to be able to find brctl
PATH=$PATH:/sbin:/usr/sbin
ip=$(which ip)
if [ -n "$ip" ]; then
ip link set "$1" up
else
brctl=$(which brctl)
if [ ! "$ip" -o ! "$brctl" ]; then
echo "W: $0: not doing any bridge processing: neither ip nor brctl utility not found" >&2
exit 0
fi
ifconfig "$1" 0.0.0.0 up
fi
switch=$(ip route ls | \
awk '/^default / {
for(i=0;i<NF;i++) { if ($i == "dev") { print $(i+1); next; } }
}'
)
# only add the interface to default-route bridge if we
# have such interface (with default route) and if that
# interface is actually a bridge.
# It is possible to have several default routes too
for br in $switch; do
if [ -d /sys/class/net/$br/bridge/. ]; then
if [ -n "$ip" ]; then
ip link set "$1" master "$br"
else
brctl addif $br "$1"
fi
exit # exit with status of the previous command
fi
done
echo "W: $0: no bridge for guest interface found" >&2

View File

@ -0,0 +1,33 @@
#!/bin/sh
# This script is executed when a guest agent receives fsfreeze-freeze and
# fsfreeze-thaw command, if it is specified in --fsfreeze-hook (-F)
# option of qemu-ga or placed in default path (/etc/qemu/fsfreeze-hook).
# When the agent receives fsfreeze-freeze request, this script is issued with
# "freeze" argument before the filesystem is frozen. And for fsfreeze-thaw
# request, it is issued with "thaw" argument after filesystem is thawed.
LOGFILE=/var/log/qga-fsfreeze-hook.log
FSFREEZE_D=$(dirname -- "$0")/fsfreeze-hook.d
# Check whether file $1 is a backup or rpm-generated file and should be ignored
is_ignored_file() {
case "$1" in
*~ | *.bak | *.orig | *.rpmnew | *.rpmorig | *.rpmsave | *.sample | *.dpkg-old | *.dpkg-new | *.dpkg-tmp | *.dpkg-dist | *.dpkg-bak | *.dpkg-backup | *.dpkg-remove)
return 0 ;;
esac
return 1
}
# Iterate executables in directory "fsfreeze-hook.d" with the specified args
[ ! -d "$FSFREEZE_D" ] && exit 0
for file in "$FSFREEZE_D"/* ; do
is_ignored_file "$file" && continue
[ -x "$file" ] || continue
printf "$(date): execute $file $@\n" >>$LOGFILE
"$file" "$@" >>$LOGFILE 2>&1
STATUS=$?
printf "$(date): $file finished with status=$STATUS\n" >>$LOGFILE
done
exit 0

View File

@ -0,0 +1,11 @@
[Unit]
Description=QEMU Guest Agent
BindsTo=dev-virtio\x2dports-org.qemu.guest_agent.0.device
After=dev-virtio\x2dports-org.qemu.guest_agent.0.device
[Service]
ExecStart=-/usr/sbin/qemu-ga
Restart=always
RestartSec=0
[Install]

View File

@ -0,0 +1,2 @@
SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", \
TAG+="systemd" ENV{SYSTEMD_WANTS}="qemu-guest-agent.service"

Binary file not shown.

Binary file not shown.

BIN
VM/MipsQemu/usr/bin/qemu-img Executable file

Binary file not shown.

BIN
VM/MipsQemu/usr/bin/qemu-io Executable file

Binary file not shown.

BIN
VM/MipsQemu/usr/bin/qemu-nbd Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
qemu/pxe-e1000.rom

View File

@ -0,0 +1 @@
qemu/pxe-e1000.rom

View File

@ -0,0 +1 @@
qemu/pxe-eepro100.rom

View File

@ -0,0 +1 @@
qemu/pxe-ne2k_pci.rom

View File

@ -0,0 +1 @@
qemu/pxe-pcnet.rom

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
qemu/pxe-rtl8139.rom

View File

@ -0,0 +1 @@
qemu/pxe-virtio.rom

Binary file not shown.

BIN
VM/MipsQemu/usr/sbin/qemu-ga Executable file

Binary file not shown.

View File

@ -0,0 +1,141 @@
#! /bin/sh -e
#
# $Id: qemu-make-debian-root 353 2008-10-16 20:28:22Z aurel32 $
#
# Script to make a debian root image.
#
set -e
which debootstrap >/dev/null || {
echo "error: missing debootstrap package" >&2
exit 1
}
which sfdisk >/dev/null || {
echo "error: missing fdisk package" >&2
exit 1
}
which mke2fs >/dev/null || {
echo "error: missing e2fsprogs package" >&2
exit 1
}
KEEPFS=0
SPARSE=0
while :; do
case "$1" in
-k)
KEEPFS=1
;;
-s)
SPARSE=1
;;
-ks|-sk)
KEEPFS=1
SPARSE=1
;;
*)
break
;;
esac
shift
done
if [ $# -lt 4 ]; then
echo Usage: "$0 [-ks] size-in-MB distrib deburl image [files_to_copy_in_/root]" >&2
echo "eg $0 150 sid http://proxy:10000/debian qemu" >&2
echo "-k keep file system -s sparse image" >&2
echo "$0 is normally run as root." >&2
exit 1
fi
SIZE=$1 # In Mib
DISTRO=$2
URL=$3
IMAGE=$4
shift 4
# now files to copy are in "$@". We don't put them in a variable
# because that would coufuse spaces-in-filenames with
# whitespace-separation.
if [ $SIZE -lt 130 ]; then
echo 'Size must be at least 130 megabytes (Debian unstable takes 100)' >&2
exit 1
fi
cleanup()
{
echo Cleaning up... >&2
umount -d $TMP_DIR || true
losetup -d $LOOP || true
rm -f $IMAGE
}
trap cleanup EXIT
# Create a filesystem: one track for partition table.
if [ "$SPARSE" = "1" ]; then
truncate -s ${SIZE}M "$IMAGE"
else
dd bs=1M count=$SIZE if=/dev/zero of=$IMAGE
fi
SECT=63 # first sector of a partition
# Partition so one partition covers entire disk.
echo "$SECT," | sfdisk -uS -L $IMAGE
# Find an unused loop device and set it up.
LOOP=`losetup -f`
losetup -o $(($SECT*512)) $LOOP $IMAGE
# Create filesystem.
mke2fs -q -m1 $LOOP
TMP_DIR="$(mktemp -d /tmp/mount.XXXXXX)" || \
{ echo >&2 "Failed to create temporary directory"; exit 1; }
# Mount it.
mount $LOOP $TMP_DIR
# Do debian install on it.
debootstrap --variant=minbase $DISTRO $TMP_DIR $URL
# Final configuration.
cat > $TMP_DIR/etc/fstab <<EOF
/dev/hda1 / ext2 errors=remount-ro 0 1
proc /proc proc defaults 0 0
EOF
# Console on ttyS0, not tty1, and no other gettys.
sed 's,1:2345:respawn:/sbin/getty 38400 tty1,1:2345:respawn:/sbin/getty 38400 ttyS0,' < $TMP_DIR/etc/inittab | sed 's,^.:23:respawn.*,,' > $TMP_DIR/etc/inittab.new
mv $TMP_DIR/etc/inittab.new $TMP_DIR/etc/inittab
# Set hostname to base of image name.
basename $IMAGE > $TMP_DIR/etc/hostname
# Create /etc/shadow
chroot $TMP_DIR pwconv
# Set root password to "root"
sed 's/^root:[^:]*/root:$1$aybpiIGf$cB7iFDNZvViQtQjEZ5HFQ0/' < $TMP_DIR/etc/shadow > $TMP_DIR/etc/shadow.new
mv $TMP_DIR/etc/shadow.new $TMP_DIR/etc/shadow
# Remove packages we don't need
chroot $TMP_DIR /usr/bin/dpkg --remove console-common console-tools console-data base-config man-db manpages
# Try to remove all libraries: some won't be removable.
chroot $TMP_DIR dpkg --remove `chroot $TMP_DIR dpkg --get-selections | sed -n 's/^\(lib[^ \t]*\)[\t ]*install/\1/p'` 2>/dev/null || true
# Copy wanted files to /root if asked to
if [ $# -gt 0 ]; then
cp -a "$@" $TMP_DIR/root/
fi
umount -d $TMP_DIR
trap "" EXIT
echo Done.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
../extboot.bin

View File

@ -0,0 +1 @@
../kvmvapic.bin

View File

@ -0,0 +1 @@
../linuxboot.bin

View File

@ -0,0 +1 @@
../multiboot.bin

View File

@ -0,0 +1 @@
../vapic.bin

Binary file not shown.

View File

@ -0,0 +1 @@
kvmvapic.bin

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.