From 7e0b3d8d9f702598f658db440724232ab31d7b7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Marchesin?= Date: Tue, 29 Mar 2011 06:58:17 -0700 Subject: [PATCH] Use 1280x1024 resolution when running ChromeOS under qemu. BUG=none TEST=Run ChromeOS under qemu, the screen should be 1280x1024 not 800x600. Review URL: http://codereview.chromium.org/6768009 Change-Id: I9a73025244a85d3b07e98136b373b00bb40cd9dd --- fixup_image_for_qemu.py | 57 +++++++++++++++++++++++++++++++++++++++++ image_to_vm.sh | 3 +++ 2 files changed, 60 insertions(+) create mode 100755 fixup_image_for_qemu.py diff --git a/fixup_image_for_qemu.py b/fixup_image_for_qemu.py new file mode 100755 index 0000000000..14a57dac87 --- /dev/null +++ b/fixup_image_for_qemu.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python + +# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Makes changes to mounted Chromium OS image to allow it to run with VMs + +This script changes two files within the Chromium OS image to let the image +work with VMs, particularly QEMU + +Currently this script does the following, +1.) Modify xorg.conf to advertize a screen which can do 1280x1024 +""" + +from optparse import OptionParser +import os +import stat +import sys + +USAGE = "usage: %prog --mounted_dir=directory" + +REPLACE_SCREEN_PAIR = ('Identifier "DefaultMonitor"', + 'Identifier "DefaultMonitor"\n HorizSync 28-51\n VertRefresh 43-60') +XORG_CONF_FILENAME = os.path.join('etc', 'X11', 'xorg.conf') + + +# Modify the xorg.conf file to change all screen sections +def FixXorgConf(mount_point): + xorg_conf_filename = os.path.join(mount_point, XORG_CONF_FILENAME) + f = open(xorg_conf_filename, 'r') + xorg_conf = f.read() + f.close() + + # Add refresh rates for the screen + xorg_conf = xorg_conf.replace(REPLACE_SCREEN_PAIR[0], + REPLACE_SCREEN_PAIR[1]) + + # Write the file back out. + f = open(xorg_conf_filename, 'w') + f.write(xorg_conf) + f.close() + +def main(): + parser = OptionParser(USAGE) + parser.add_option('--mounted_dir', dest='mounted_dir', + help='directory where the Chromium OS image is mounted') + (options, args) = parser.parse_args() + + if not options.mounted_dir: + parser.error("Please specify the mount point for the Chromium OS image"); + + FixXorgConf(options.mounted_dir) + + +if __name__ == '__main__': + main() diff --git a/image_to_vm.sh b/image_to_vm.sh index 74b1d27c6c..859c0b34d6 100755 --- a/image_to_vm.sh +++ b/image_to_vm.sh @@ -189,6 +189,9 @@ sudo mount -o loop "${TEMP_ROOTFS}" "${TEMP_MNT}" mkdir -p "${TEMP_ESP_MNT}" sudo mount -o loop "${TEMP_ESP}" "${TEMP_ESP_MNT}" +sudo python "${SCRIPTS_DIR}/fixup_image_for_qemu.py" \ + --mounted_dir="${TEMP_MNT}" + # Modify the unverified usb template which uses a default usb_disk of sdb3 sudo sed -i -e 's/sdb3/sda3/g' "${TEMP_MNT}/boot/syslinux/usb.A.cfg"