VirtualBox/Preparing a disk image: Difference between revisions
--home-size-mb option added |
incorporate full, uncompressed image alternate |
||
(37 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
<noinclude></noinclude> | |||
==LiveOS image== | |||
Below are instructions for preparing a VirtualBox disk image from a SoaS iso image file. The process parallels the compressed [[LiveOS image]] used on Live CD and Live USB installations. | |||
* (Taken from Dave Bauer's posting at http://schools.sugarlabs.org/mod/forum/discuss.php?d=27.) | |||
* Updated 16 August 2010 with [http://www.virtualbox.org/wiki/Downloads VirtualBox 3.2.8] and 32-bit Fedora. | |||
# Create a new VM | |||
# Choose Linux | ('''Note:''' The SoaS .iso distribution also contains an installer for full, uncompressed, hard disc images of Fedora with the Sugar graphical interface. See [[#Uncompressed, hard disc image|Uncompressed, hard disc image]] below for instructions.) | ||
# Choose | ===Installing SoaS .iso image=== | ||
# Create a new disk 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. | # Finish. | ||
# Download the lastest SoaS, http:// | # Download the lastest SoaS, http://spins.fedoraproject.org/soas/#downloads, for Fedora 13. | ||
# Mount SoaS | # Mount the SoaS .iso image file as a CD-ROM in the newly created VM. | ||
# Change Network | # 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. | # Open Terminal. | ||
# su - | # {{Code|su -}} | ||
# parted | # {{Code|parted}} | ||
# mklabel msdos | # {{Code|mklabel msdos}} | ||
# | #: This makes a partition table. | ||
# toggle 1 boot | # {{Code|mkpart primary ext2 0 2048}} | ||
# quit | #: You will receive this message:<br>Warning: The resulting partition is not properly aligned for best performance.<br>Ignore/Cancel? | ||
# /mnt/live/LiveOS/livecd-iso-to-disk --overlay-size-mb | #: Enter (I)gnore | ||
# {{Code|toggle 1 boot}} | |||
# {{Code|quit}} | |||
# {{Code|mke2fs /dev/sda1}} | |||
# Unmount | # {{Code|/LiveOS/livecd-iso-to-disk --overlay-size-mb 1024 --home-size-mb 200 --delete-home --unencrypted-home /dev/sr0 /dev/sda1}}<br>(for earlier versions of SoaS | ||
# | #: Blueberry - use /media/soas-2-blueberry/LiveOS/livecd-iso-to-disk<br>Strawberry - use /mnt/live/LiveOS/livecd-iso-to-disk) | ||
<ul> | |||
{{Show|<Terminal log> | |||
|<pre> | |||
[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/live /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! | |||
</pre>}} | |||
* 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]]. | |||
: <br>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 [[wikipedia:SquashFS|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.) | |||
</ul> | |||
<ol start=20> | |||
<li> {{Code|shutdown -h now}}</li> | |||
</ol> | |||
==Installing VirtualBox Guest Additions== | |||
The VirtualBox Guest Additions requires installing [[wikipedia:Dynamic_Kernel_Module_Support|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 | # Open Terminal | ||
# su - | # {{Code|su -}} | ||
# yum install dkms gcc | <ol start=5> | ||
<li>Determine the kernel version,<br> | |||
{{Code|uname -a}}<br> | |||
<pre> | |||
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</pre></li> | |||
<li>For SoaS-Mirabelle, the kernel is Linux-2.6.33.3-85.fc13, so specific kernel-headers and kernel-devel are needed:<br><br> | |||
{{Code|yum install kernel-headers-2.6.33.3-85.fc13 kernel-devel-2.6.33.3-85.fc13 dkms gcc}}<br> | |||
: (Other dependencies will be called into the installation.) | |||
# | |||
# Edit /etc/X11/xorg.conf to match the following section: | {{Show|<Successful Terminal log from 16 Aug 2010 with Fedora 32 bit> | ||
|<pre> | |||
[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! | |||
</pre>}}<br></li> | |||
<li> In the VirtualBox Guest 'Devices Menu', select 'Install Guest Additions...'</li> | |||
<li> {{Code|mkdir /mnt/cdrom}} </li> | |||
<li> {{Code|mount /dev/sr0 /mnt/cdrom/}} </li> | |||
<li> {{Code|cd /mnt/cdrom/}} </li> | |||
<li> {{Code|./VBoxLinuxAdditions-x86.run}}<br><br> | |||
You may check the consumption status of the overlay by executing, | |||
* {{Code|dmsetup status}} <br> | |||
: 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.<br> | |||
</li> | |||
<li> {{Code|reboot}} <br> | |||
{{Show|<Terminal log:> | |||
|<pre> | |||
[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 | |||
</pre>}}</li> | |||
</ol> | |||
<!-- | |||
* Note that you will need to have the same kernel version as you have kernel-headers and kernel-devel | |||
* I recommend: | |||
<pre> | |||
# yum update kernel | |||
# yum install kernel-headers kernel-devel dkms gcc | |||
</pre> | |||
* With the guest additions successfully installed, it should '''Not be necessary to configure the screen (below)''' | |||
Thanks! for this information. update kernel consumed 203280/1048576 of the overlay and install kernel-headers kernel-devel dkms gcc raised consumption to 1047112/1048576 leading to failure of the ./VBoxLinuxAdditions-x86.run --> | |||
==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 | |||
<pre> | |||
# 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 | |||
</pre> | |||
==Clear user data== | |||
Finally, | Finally, | ||
# Open Terminal | # Open Terminal | ||
Line 70: | Line 360: | ||
# Now you can share the VDI file. | # 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: | 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. | # From host command line (Windows cmd, or Linux terminal) See VirtualBox Help section 8.14. | ||
Line 76: | Line 366: | ||
# Reclone any virtual hard disks you would like to archive. | # Reclone any virtual hard disks you would like to archive. | ||
==SSH connections== | |||
To enable SSH communications, we need to | To enable SSH communications, we need to permit no passwords (to match the default Sugar configuration) in the ssh daemon configuration: | ||
# in Terminal, | # in Terminal, | ||
# su - | # su - | ||
# | # vi /etc/ssh/sshd_config | ||
## [add] PermitEmptyPasswords yes | ## [add] PermitEmptyPasswords yes | ||
## | ## :wq <Enter> | ||
# service sshd restart | |||
One may also supply a password for the root user: | |||
# su - | |||
# passwd | |||
#: Changing password for user root.<br>New password:<br>Retype new password:<br>passwd: all authentication tokens updated successfully. | |||
==Uncompressed, hard disc image== | |||
:'''Start VirtualBox (version 3.2.10 used here).''' | |||
#Click NEW "Welcome to New Virtual Machine Wizard" | |||
#<Next> fill out: Name (soas-i386-20101025) ; Operating system(Linux); Version (Fedora) | |||
#<Next> Base Memory Size | |||
#<Next> Create new hard disk | |||
#<Next> Storage Type (Dynamically expanding storage) | |||
#<Next> Size (8.00 GB) | |||
#<Finish> | |||
:'''Back on main Oracle VM VirtualBox screen''' | |||
#Settings/Storage (CD Image0)CD/DVD Device: (Select your CD Host Drive-(sr0) with CD inserted | |||
#<OK> | |||
:'''Start''' | |||
::SoaS will boot and run Sugar SoaS | |||
::Enter Name color | |||
::Enter Password ONE TIME then cancel next 6 times | |||
::Start Sugar-Terminal | |||
su | |||
liveinst | |||
:(Anaconda starts) Do normal HD install: Basic Storage Devices/ Reinitalize all/Host/TZ/Root Password/Use all Space/ Write Changes to Disk/ Install works to Completion. | |||
:: "Congratulations, your Fedora Installation is complete" <Close> Quit sugar-terminal; Shutdown. | |||
:'''Back on main Oracle VM VirtualBox screen''' | |||
===Firstboot of new Virtual Machine=== | |||
::Settings/Storage; Host Drive: change to empty (You can also change boot order in Systems, if needed.) | |||
:'''Start''' HD goes to firstboot (Answer questions); then to gdm login, then to Sugar. Click to Change Color_____ (hit <Back> to change name) | |||
===Export your Appliance=== | |||
:File/Export Appliance (select soas-i386-20101025)<next> fill in Settings if you want to; <next> Export settings <Finish> | |||
'''Congratulations, you have just created an importable/exportable appliance.''' |