VirtualBox/Preparing a disk image
Instructions for preparing a VirtualBox disk image from a SoaS iso image file.
- (Taken from Dave Bauer's posting at http://schools.sugarlabs.org/mod/forum/discuss.php?d=27.)
- Updated 16 August 2010 with VirtualBox 3.2.8 and 32-bit Fedora.
Installing SoaS .iso image
- Create a new VM, choose a name, such as Mirabelle
- Choose Linux for the Operating System and Version Fedora (use 64 bit, if available)
- Choose Base Memory Size: 256 MB to match an XO-1, 512 or 1024 MB to match an XO-1.5
- Create a new virtual hard disk image with dynamically expanding storage of 2 GB
- Finish.
- Download the lastest SoaS, http://spins.fedoraproject.org/soas/#downloads, for Fedora 13.
- Mount the SoaS .iso image file as a CD-ROM in the newly created VM.
- Change the Network Attached to: Bridged Adapter (This allows for networking with the host computer.)
- Start the VM
- Enter an account name and startup Sugar.
- Open Terminal.
su -
parted
mklabel msdos
- This makes a partition table.
mkpart primary ext2 0 2048
- You will receive this message:
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? - Enter (I)gnore
- You will receive this message:
toggle 1 boot
quit
mke2fs /dev/sda1
/LiveOS/livecd-iso-to-disk --overlay-size-mb 1024 --home-size-mb 200 --delete-home --unencrypted-home /dev/live /dev/sda1
(for earlier versions of SoaS- Blueberry - use /media/soas-2-blueberry/LiveOS/livecd-iso-to-disk
Strawberry - use /mnt/live/LiveOS/livecd-iso-to-disk)
- Blueberry - use /media/soas-2-blueberry/LiveOS/livecd-iso-to-disk
- the --overlay-size-mb NNN and --home-size-mb NNN options creates space for persistence of changes on the disk; otherwise, a liveOS disk is read-only. See LiveOS image.
The following optional parameters seem to be incompatible with soas-1-strawberry and soas-2-blueberry released versions. (The script completes successfully, but the virtual machine startup process has trouble finding the home directory and fails to complete.)- the --home-size-mb NNN option creates space for file storage in the /home/liveuser folder. (In the case where you you want to update the LiveOS image while keeping the user files, skip the new disk creation and parted steps, leave out the --home-size-mb NNN option at this step, and continue on.)
- the --unencrypted-home option prevents password protection and encryption on the /home/liveuser folder. This releaves the overhead on the compressed SquashFS, and should be more robust to file system failures (outside of security).
- the --delete-home option is used to avoid an error message while requesting both a new home (with --home-size-mb) and a persistent home (with --unencrypted-home). (You wouldn't use this option for the LiveOS upgrade case.)
<Terminal log>
[root@localhost ~]# parted GNU Parted 2.1 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel msdos (parted) mkpart primary ext2 0 2048 Warning: The resulting partition is not properly aligned for best performance. Ignore/Cancel? I (parted) toggle 1 boot (parted) quit Information: You may need to update /etc/fstab. [root@localhost ~]# mke2fs /dev/sda1 mke2fs 1.41.10 (10-Feb-2009) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 125184 inodes, 500000 blocks 25000 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=515899392 16 block groups 32768 blocks per group, 32768 fragments per group 7824 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 36 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@localhost ~]# [root@localhost ~]# /LiveOS/livecd-iso-to-disk --overlay-size-mb 1024 --home-size-mb 200 --delete-home --unencrypted-home /dev/sr0 /dev/sda1 Verifying image... /dev/sr0: 0ce28e3947106fd37bab9317abf09938 Fragment sums: a3c6e5fd5fba11d2b4da71771e8732b63bcb62b841971f7f39ab5c187f64 Fragment count: 20 Checking: 100.0% The media check is complete, the result is: PASS. It is OK to use this media. Copying live image to USB stick Updating boot config file Initializing persistent overlay file 0+0 records in 0+0 records out 0 bytes (0 B) copied, 0.000150187 s, 0.0 kB/s Initializing persistent /home 0+0 records in 0+0 records out 0 bytes (0 B) copied, 0.0039562 s, 0.0 kB/s Formatting unencrypted /home mke2fs 1.41.10 (10-Feb-2009) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 51200 inodes, 204800 blocks 10240 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 25 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. tune2fs 1.41.10 (10-Feb-2009) Setting maximal mount count to -1 Setting interval between checks to 0 seconds Installing boot loader /media/usbdev.XB8shz/syslinux is device /dev/sda1 USB stick set up as live image!
-
shutdown -h now
Installing VirtualBox Guest Additions
The VirtualBox Guest Additions requires installing DKMS and compiling virtual device drivers for the Linux kernel.
- Unmount CD/DVD in VirtualBox settings, select 'Empty' for the CD/DVD device under 'Attributes'
- Start the virtual machine
- Open Terminal
su -
- Determine the kernel version,
uname -a
Linux localhost.localdomain 2.6.33.3-85.fc13.i686 #1 SMP Thu May 6 18:44:12 UTC 2010 i686 i686 i386 GNU/Linux
- For SoaS-Mirabelle, the kernel is Linux-2.6.33.3-85.fc13, so specific kernel-headers and kernel-devel are needed:
yum install kernel-headers-2.6.33.3-85.fc13 kernel-devel-2.6.33.3-85.fc13 dkms gcc
- (Other dependencies will be called into the installation.)
<Successful Terminal log from 16 Aug 2010 with Fedora 32 bit>[root@localhost ~]# yum install kernel-devel-2.6.33.3-85.fc13 kernel-headers-2.6.33.3-85.fc13 dkms gcc Loaded plugins: presto, refresh-packagekit Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package dkms.noarch 0:2.1.0.1-1.fc12 set to be updated ---> Package gcc.i686 0:4.4.4-10.fc13 set to be updated --> Processing Dependency: cpp = 4.4.4-10.fc13 for package: gcc-4.4.4-10.fc13.i686 --> Processing Dependency: libgomp = 4.4.4-10.fc13 for package: gcc-4.4.4-10.fc13.i686 --> Processing Dependency: libgcc >= 4.4.4-10.fc13 for package: gcc-4.4.4-10.fc13.i686 --> Processing Dependency: cloog-ppl >= 0.15 for package: gcc-4.4.4-10.fc13.i686 --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.4.4-10.fc13.i686 ---> Package kernel-devel.i686 0:2.6.33.3-85.fc13 set to be installed ---> Package kernel-headers.i686 0:2.6.33.3-85.fc13 set to be updated --> Running transaction check ---> Package cloog-ppl.i686 0:0.15.7-1.fc12 set to be updated --> Processing Dependency: libppl.so.7 for package: cloog-ppl-0.15.7-1.fc12.i686 --> Processing Dependency: libppl_c.so.2 for package: cloog-ppl-0.15.7-1.fc12.i686 ---> Package cpp.i686 0:4.4.4-10.fc13 set to be updated ---> Package glibc-devel.i686 0:2.12-3 set to be updated --> Processing Dependency: glibc = 2.12-3 for package: glibc-devel-2.12-3.i686 --> Processing Dependency: glibc-headers = 2.12-3 for package: glibc-devel-2.12-3.i686 --> Processing Dependency: glibc-headers for package: glibc-devel-2.12-3.i686 ---> Package libgcc.i686 0:4.4.4-10.fc13 set to be updated ---> Package libgomp.i686 0:4.4.4-10.fc13 set to be updated --> Running transaction check --> Processing Dependency: glibc = 2.12-1 for package: glibc-common-2.12-1.i686 ---> Package glibc.i686 0:2.12-3 set to be updated ---> Package glibc-headers.i686 0:2.12-3 set to be updated ---> Package ppl.i686 0:0.10.2-10.fc12 set to be updated --> Running transaction check ---> Package glibc-common.i686 0:2.12-3 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================================= Package Arch Version Repository Size ================================================================================================= Installing: dkms noarch 2.1.0.1-1.fc12 fedora 95 k gcc i686 4.4.4-10.fc13 updates 8.1 M kernel-devel i686 2.6.33.3-85.fc13 fedora 6.3 M kernel-headers i686 2.6.33.3-85.fc13 fedora 760 k Installing for dependencies: cloog-ppl i686 0.15.7-1.fc12 fedora 81 k cpp i686 4.4.4-10.fc13 updates 3.4 M glibc-devel i686 2.12-3 updates 960 k glibc-headers i686 2.12-3 updates 599 k ppl i686 0.10.2-10.fc12 fedora 1.1 M Updating for dependencies: glibc i686 2.12-3 updates 4.3 M glibc-common i686 2.12-3 updates 14 M libgcc i686 4.4.4-10.fc13 updates 103 k libgomp i686 4.4.4-10.fc13 updates 109 k Transaction Summary ================================================================================================= Install 9 Package(s) Upgrade 4 Package(s) Total download size: 40 M Is this ok [y/N]: y Downloading Packages: Setting up and reading Presto delta metadata updates/prestodelta | 87 kB 00:18 fedora/prestodelta | 414 B 00:00 Processing delta metadata Package(s) data still to download: 40 M (1/13): cloog-ppl-0.15.7-1.fc12.i686.rpm | 81 kB 00:06 (2/13): cpp-4.4.4-10.fc13.i686.rpm | 3.4 MB 01:47 (3/13): dkms-2.1.0.1-1.fc12.noarch.rpm | 95 kB 00:09 (4/13): gcc-4.4.4-10.fc13.i686.rpm | 8.1 MB 04:06 (5/13): glibc-2.12-3.i686.rpm | 4.3 MB 01:50 (6/13): glibc-common-2.12-3.i686.rpm | 14 MB 04:43 (7/13): glibc-devel-2.12-3.i686.rpm | 960 kB 00:22 (8/13): glibc-headers-2.12-3.i686.rpm | 599 kB 00:15 (9/13): kernel-devel-2.6.33.3-85.fc13.i686.rpm | 6.3 MB 03:25 (10/13): kernel-headers-2.6.33.3-85.fc13.i686.rpm | 760 kB 00:24 (11/13): libgcc-4.4.4-10.fc13.i686.rpm | 103 kB 00:05 (12/13): libgomp-4.4.4-10.fc13.i686.rpm | 109 kB 00:04 (13/13): ppl-0.10.2-10.fc12.i686.rpm | 1.1 MB 00:26 ------------------------------------------------------------------------------------------------- Total 32 kB/s | 40 MB 21:10 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : kernel-devel-2.6.33.3-85.fc13.i686 1/17 Installing : kernel-headers-2.6.33.3-85.fc13.i686 2/17 Updating : libgcc-4.4.4-10.fc13.i686 3/17 Installing : dkms-2.1.0.1-1.fc12.noarch 4/17 Updating : glibc-2.12-3.i686 5/17 Updating : glibc-common-2.12-3.i686 6/17 Updating : libgomp-4.4.4-10.fc13.i686 7/17 Installing : ppl-0.10.2-10.fc12.i686 8/17 Installing : cloog-ppl-0.15.7-1.fc12.i686 9/17 Installing : cpp-4.4.4-10.fc13.i686 10/17 Installing : glibc-headers-2.12-3.i686 11/17 Installing : glibc-devel-2.12-3.i686 12/17 Installing : gcc-4.4.4-10.fc13.i686 13/17 Cleanup : libgomp-4.4.4-2.fc13.i686 14/17 Cleanup : glibc-common-2.12-1.i686 15/17 Cleanup : glibc-2.12-1.i686 16/17 Cleanup : libgcc-4.4.4-2.fc13.i686 17/17 Installed: dkms.noarch 0:2.1.0.1-1.fc12 gcc.i686 0:4.4.4-10.fc13 kernel-devel.i686 0:2.6.33.3-85.fc13 kernel-headers.i686 0:2.6.33.3-85.fc13 Dependency Installed: cloog-ppl.i686 0:0.15.7-1.fc12 cpp.i686 0:4.4.4-10.fc13 glibc-devel.i686 0:2.12-3 glibc-headers.i686 0:2.12-3 ppl.i686 0:0.10.2-10.fc12 Dependency Updated: glibc.i686 0:2.12-3 glibc-common.i686 0:2.12-3 libgcc.i686 0:4.4.4-10.fc13 libgomp.i686 0:4.4.4-10.fc13 Complete!
- In the VirtualBox Guest 'Devices Menu', select 'Install Guest Additions...'
-
mkdir /mnt/cdrom
-
mount /dev/sr0 /mnt/cdrom/
-
cd /mnt/cdrom/
-
./VBoxLinuxAdditions-x86.run
You may check the consumption status of the overlay by executing,dmsetup status
- reveals that 953440/2097152 (512-byte sectors) or 448 MB of the 1024 MB overlay file has been consumed by the installation process
- If upgrading from one VirtualBox version to another, start with fresh virtual disks and machines built with the new versions to avoid breakage.
-
reboot
<Terminal log:>[root@localhost ~]# mkdir /mnt/cdrom/ [root@localhost ~]# mount /dev/sr0 /mnt/cdrom/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@localhost ~]# cd /mnt/cdrom/ [root@localhost cdrom]# ./VBoxLinuxAdditions-x86.run Verifying archive integrity... All good. Uncompressing VirtualBox 3.2.8 Guest Additions for Linux........ VirtualBox Guest Additions installer Building the VirtualBox Guest Additions kernel modules Building the main Guest Additions module [ OK ] Building the shared folder support module [ OK ] Building the OpenGL support module [ OK ] Doing non-kernel setup of the Guest Additions [ OK ] Starting the VirtualBox Guest Additions [ OK ] Installing the Window System drivers Installing X.Org Server 1.8 modules [ OK ] Setting up the Window System to use the Guest Additions [ OK ] You may need to restart the hal service and the Window System (or just restart the guest system) to enable the Guest Additions. Installing graphics libraries and desktop services componen[ OK ] [root@localhost cdrom]# dmsetup status live-osimg-min: 0 8388608 snapshot 2344/2344 24 live-rw: 0 8388608 snapshot 953440/2097152 3720
Configure Screen
If you want to match the 16 bpp XO screen and a particular display size, you may
- Edit /etc/X11/xorg.conf to match the following section:
- 832x624 - matches default XO display proportions
- 1200x900 - XO reflective resolution
# VirtualBox generated configuration file # based on /etc/X11/xorg.conf. Section "Monitor" Identifier "Monitor[0]" ModelName "VirtualBox Virtual Output" VendorName "Sun Microsystems Inc" EndSection Section "Device" BoardName "VirtualBox Graphics" Driver "vboxvideo" Identifier "Device[0]" VendorName "Sun Microsystems Inc" EndSection Section "Screen" Identifier "Screen[0]" Device "Device[0]" Monitor "Monitor[0]" DefaultDepth 16 SubSection "Display" Depth 16 Modes "832x624" "1200x900" "1024x768" "800x600" EndSubSection EndSection
Clear user data
Finally,
- Open Terminal
- Terminal
- rm -rf ~/.sugar (if distributing image)
- su -
- shutdown -h now
- Now you can share the VDI file.
Backup discs
It would be wise to maintain a clone of your virtual disk image to restart if the working copy is damaged:
- From host command line (Windows cmd, or Linux terminal) See VirtualBox Help section 8.14.
- VBoxManage clonehd <uuid>|<filename> <outputfile> [-format VDI|VMDK|VHD|RAW|<other>] [-remember]
- Reclone any virtual hard disks you would like to archive.
SSH connections
To enable SSH communications, we need to permit no passwords in the ssh daemon configuration:
- in Terminal,
- su -
- vi /etc/ssh/sshd_config
- [add] PermitEmptyPasswords yes
- :wq <Enter>
- service sshd restart