diff --git a/mod_for_test_scripts/300changePassword b/mod_for_test_scripts/300changePassword new file mode 100755 index 0000000000..44f08c3d7e --- /dev/null +++ b/mod_for_test_scripts/300changePassword @@ -0,0 +1,14 @@ +#!/bin/bash + +# Copyright (c) 2009 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. + +# reset password for root and shared user account. + +LOCAL_ACCOUNT="chronos" +echo "Reset password for root." +passwd root < test_account.passwd 2> /dev/null +echo "Reset password for ${LOCAL_ACCOUNT}." +passwd ${LOCAL_ACCOUNT} < test_account.passwd 2> /dev/null + diff --git a/mod_for_test_scripts/600autoStartSshd b/mod_for_test_scripts/600autoStartSshd new file mode 100644 index 0000000000..634b866654 --- /dev/null +++ b/mod_for_test_scripts/600autoStartSshd @@ -0,0 +1,12 @@ +#!/bin/bash + +# Copyright (c) 2009 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. + +# start sshd at os init time. + +cp -pf sshd.conf /etc/init/sshd.conf +chmod 644 /etc/init/sshd.conf +chown 0:0 /etc/init/sshd.conf + diff --git a/mod_for_test_scripts/chronos.password b/mod_for_test_scripts/chronos.password new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mod_for_test_scripts/common.sh b/mod_for_test_scripts/common.sh new file mode 100755 index 0000000000..e69de29bb2 diff --git a/mod_for_test_scripts/sshd.conf b/mod_for_test_scripts/sshd.conf new file mode 100644 index 0000000000..389adb7296 --- /dev/null +++ b/mod_for_test_scripts/sshd.conf @@ -0,0 +1,8 @@ +# Copyright (c) 2009 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. + +start on login-prompt-ready + +exec /etc/init.d/ssh start + diff --git a/mod_for_test_scripts/test_account.passwd b/mod_for_test_scripts/test_account.passwd new file mode 100644 index 0000000000..4dc15cfa94 --- /dev/null +++ b/mod_for_test_scripts/test_account.passwd @@ -0,0 +1,3 @@ +test0000 +test0000 + diff --git a/mod_for_test_scripts/test_setup.sh b/mod_for_test_scripts/test_setup.sh new file mode 100755 index 0000000000..a02d72d8e2 --- /dev/null +++ b/mod_for_test_scripts/test_setup.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# Copyright (c) 2009 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. + +cd `dirname $0` +for SCRIPT in [0-9][0-9][0-9]*[!$~] +do + ./${SCRIPT} +done + diff --git a/mod_image_for_test.sh b/mod_image_for_test.sh new file mode 100755 index 0000000000..29a5586688 --- /dev/null +++ b/mod_image_for_test.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +# Copyright (c) 2009 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. + +# Script to modify a keyfob-based chromeos system image for testability. + +# Load common constants. This should be the first executable line. +# The path to common.sh should be relative to your script's location. +. "$(dirname "$0")/common.sh" + +DEFINE_string image "rootfs.image" \ + "Location of the rootfs raw image file" + +# Parse command line +FLAGS "$@" || exit 1 +eval set -- "${FLAGS_ARGV}" + +# Make sure anything mounted in the rootfs is cleaned up ok on exit. +cleanup_rootfs_mounts() { + # Occasionally there are some daemons left hanging around that have our + # root image file system open. We do a best effort attempt to kill them. + PIDS=`sudo lsof -t "${ROOT_FS_DIR}" | sort | uniq` + for pid in ${PIDS} + do + local cmdline=`cat /proc/$pid/cmdline` + echo "Killing process that has open file on our rootfs: $cmdline" + ! sudo kill $pid # Preceded by ! to disable ERR trap. + done +} + +cleanup_rootfs_loop() { + sudo umount "${LOOP_DEV}" + sleep 1 # in case $LOOP_DEV is in use + sudo losetup -d "${LOOP_DEV}" +} + +cleanup() { + # Disable die on error. + set +e + + cleanup_rootfs_mounts + if [ -n "${LOOP_DEV}" ] + then + cleanup_rootfs_loop + fi + + # Turn die on error back on. + set -e +} + +# main process begins here. +set -e +trap cleanup EXIT + +ROOT_FS_DIR="`dirname ${FLAGS_image}`/rootfs" +mkdir -p "${ROOT_FS_DIR}" + +LOOP_DEV=`sudo losetup -f` +sudo losetup "${LOOP_DEV}" "${FLAGS_image}" +sudo mount "${LOOP_DEV}" "${ROOT_FS_DIR}" + +MOD_SCRIPTS_ROOT="${GCLIENT_ROOT}/src/scripts/mod_for_test_scripts" +sudo mkdir -p "${ROOT_FS_DIR}/modify_scripts" +sudo mount --bind "${MOD_SCRIPTS_ROOT}" "${ROOT_FS_DIR}/modify_scripts" + +# Run test setup script inside chroot jail to modify the image +sudo chroot "${ROOT_FS_DIR}" "/modify_scripts/test_setup.sh" + +sudo umount "${ROOT_FS_DIR}/modify_scripts" +sudo rmdir "${ROOT_FS_DIR}/modify_scripts" + +cleanup +trap - EXIT +