* [Qemu-devel] [SCRIPT] make_root.sh
@ 2003-07-10 9:35 Rusty Russell
2003-07-10 15:30 ` [Qemu-devel] 4GB/4GB split Fabrice Bellard
0 siblings, 1 reply; 2+ messages in thread
From: Rusty Russell @ 2003-07-10 9:35 UTC (permalink / raw)
To: qemu-devel
OK, Debian fans!
Here's my script to make a Debian qemu root image, for use as -hda.
You will need debootstrap, sharutils and sfdisk installed, and to
run this as root. It takes at least 90MB to fit the base Debian,
unfortunately. Also, my script is naive and needs twice the size of
the image temporarily.
Example use:
$ sudo ./make_root.sh 200 sid http://proxy:10000/debian qemu
....
$ ./vl -snapshot -hda qemu bzImage root=/dev/hda1 ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
Feedback and patches welcome!
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
#! /bin/sh -e
# Script to make a debian root image.
if [ $# -ne 4 ]; then
echo Usage: "%s size-in-MB distrib deburl image" >&2
echo "eg %s 150 sid http://proxy:10000/debian qemu" >&2
exit 1
fi
SIZE=$1
DISTRO=$2
URL=$3
IMAGE=$4
if [ $SIZE -lt 110 ]; then
echo 'Size must be at least 110 megabytes (Debian takes 90)' >&2
exit 1
fi
cleanup()
{
echo Cleaning up... >&2
umount /tmp/mount.$$ || true
rm -f $IMAGE.ext2 $IMAGE
}
trap cleanup EXIT
HEADS=16
SECTORS=63
# 512 bytes in a sector: cancel the 512 with one of the 1024s...
CYLINDERS=$(( $SIZE * 1024 * 2 / ($HEADS * $SECTORS) ))
# Create a filesystem: one track for partition table.
dd bs=$(($SECTORS * 512)) if=/dev/zero of=$IMAGE.ext2 count=$(($CYLINDERS * $HEADS - 1))
mke2fs -q -m1 -F $IMAGE.ext2
# Mount it.
mkdir /tmp/mount.$$
mount -o loop $IMAGE.ext2 /tmp/mount.$$
# Do debian install on it.
debootstrap --exclude=syslinux,at,exim,mailx,libstdc++2.10-glibc2.2,mbr,setserial,fdutils,info,ipchains,lilo,pcmcia-cs,ppp,pppoe,pppoeconf,pppconfig $DISTRO /tmp/mount.$$ $URL
# Final configuration.
cat > /tmp/mount.$$/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/mount.$$/etc/inittab | sed 's,^.:23:respawn.*,,' > /tmp/mount.$$/etc/inittab.new
mv /tmp/mount.$$/etc/inittab.new /tmp/mount.$$/etc/inittab
# Set hostname to base of image name.
basename $IMAGE > /tmp/mount.$$/etc/hostname
# Remove ones we can remove.
chroot /tmp/mount.$$ /usr/bin/dpkg --remove console-tools console-data base-config
umount /tmp/mount.$$
# Create file with partition table.
uudecode -o- << "EOF" | gunzip > $IMAGE
begin 664 partition-table.gz
M'XL("*_<##\"`W!A<G1I=&EO;BUT86)L90#LT#$-`"`0!,&']D6A`D6XP1T&
M"%B@))FIMKGF(OA9C;%;EENYZO.Z3P\"````!P``__\:!0````#__QH%````
M`/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0````#__QH%
M`````/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0````#_
M_QH%`````/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0``
M``#__QH%`````/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:
M!0````#__QH%`````/__&@4`````__\:!0````#__QH%`````/__&@4`````
M__\:!0````#__QH%`````/__&@4`````__\:!0````#__QH%`````/__&@4`
M````__\:!0````#__QH%`````/__&@4`````__\:!0````#__QH%`````/__
M&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0````#__QH%````
M`/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0````#__QH%
M`````/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0````#_
M_QH%`````/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0``
M``#__QH%`````/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:
M!0````#__QH%`````/__&@4`````__\:!0````#__QH%`````/__&@4`````
M__\:!0````#__QH%`````/__&@4`````__\:!0````#__QH%`````/__&@4`
M````__\:!0````#__QH%`````/__&@4`````__\:!0````#__QH%`````/__
M&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0````#__QH%````
M`/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0````#__QH%
M`````/__&@4`````__\:!0````#__QH%`````/__&@4`````__\:!0````#_
M_QH%`````/__&@4`````__\:!0````#__QH%`````/__0@``````__\#`%&_
&<90`?@``
`
end
EOF
cat $IMAGE.ext2 >> $IMAGE
rm $IMAGE.ext2
# Repartition so one partition covers entire disk.
echo '63,' | sfdisk -uS -H$HEADS -S$SECTORS -C$CYLINDERS $IMAGE
trap "" EXIT
echo Done.
^ permalink raw reply [flat|nested] 2+ messages in thread
* [Qemu-devel] 4GB/4GB split
2003-07-10 9:35 [Qemu-devel] [SCRIPT] make_root.sh Rusty Russell
@ 2003-07-10 15:30 ` Fabrice Bellard
0 siblings, 0 replies; 2+ messages in thread
From: Fabrice Bellard @ 2003-07-10 15:30 UTC (permalink / raw)
To: qemu-devel
Hi,
I just saw the announce of Ingo Molnar about his patch for 4GB/4GB
kernel split. This patch is mostly what I was dreaming in order to have
optimal performances in QEMU : no guest kernel patches will be necessary
and no software MMU will be necessary.
I hope that some of the kernel gurus reading this list will tell Ingo
that his patch may be useful also for people having less than 4GB of RAM :-)
Ideally, he should add a feature to activate the 4GB/4GB on demand (if
the user process maps data above 0xc0000000) and he should also be able
to move dynamically the trampoline page if the user process tries to map
something at its address.
Fabrice.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-07-10 15:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-07-10 9:35 [Qemu-devel] [SCRIPT] make_root.sh Rusty Russell
2003-07-10 15:30 ` [Qemu-devel] 4GB/4GB split Fabrice Bellard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).