-
Notifications
You must be signed in to change notification settings - Fork 2
Creating Ubuntu Core 16 image
Dmitry Shihovtsev edited this page Mar 25, 2017
·
4 revisions
Process of creating default image well described in following Ubuntu documentation:
https://docs.ubuntu.com/core/en/guides/build-device/image-building
For creating image you need to process following steps:
-
Register the user in the Ubuntu Store;
-
Create a key:
snap create-key
- Upload the key to the store:
snapcraft register-key
- Create a model assertion:
{
"type": "model",
"authority-id": "DVLlpuMhAbyjH9GCiEGYWqrEwhvdyW5i",
"brand-id": "DVLlpuMhAbyjH9GCiEGYWqrEwhvdyW5i",
"series": "16",
"model": "subutai",
"architecture": "amd64",
"gadget": "pc",
"kernel": "pc-kernel",
"timestamp": "2016-12-12T04:58:25+00:00"
}
- Sign your model assertion:
cat subutai-model.json | snap sign -k default &> subutai.model
- Build the image:
ubuntu-image -o subutai.img subutai.model --image-size 10G
- Then we need to edit image to add cloud-init config:
# fdisk -l subutai.img
Disk subutai.img: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 433CABD8-E2C5-4E3F-8050-C299138758B7
Device Start End Sectors Size Type
subutai.img1 2048 4095 2048 1M BIOS boot
subutai.img2 4096 106495 102400 50M EFI System
subutai.img3 106496 20969471 20862976 10G Linux filesystem
mount -o loop,offset=54525952 subutai.img /mnt/
rm /mnt/system-data/etc/cloud/cloud-init.disabled
Add new file /mnt/system-data/etc/cloud/cloud.cfg:
# The top level settings are used as module
# and system configuration.
# A set of users which may be applied and/or used by various modules
# when a 'default' entry is found it will reference the 'default_user'
# from the distro configuration specified below
users:
- default
# If this is set, 'root' will not be able to ssh in and they
# will get a message to login instead as the above $user (ubuntu)
disable_root: true
# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: false
datasource_list: [ None ]
# Example datasource config
# datasource:
# Ec2:
# metadata_urls: [ 'blah.com' ]
# timeout: 5 # (defaults to 50 seconds)
# max_wait: 10 # (defaults to 120 seconds)
# The modules that run in the 'init' stage
cloud_init_modules:
- migrator
- ubuntu-init-switch
- seed_random
- bootcmd
- write-files
- growpart
- resizefs
- set_hostname
- update_hostname
- update_etc_hosts
- ca-certs
- rsyslog
- users-groups
- ssh
# The modules that run in the 'config' stage
cloud_config_modules:
# Emit the cloud config ready event
# this can be used by upstart jobs for 'start on cloud-config'.
- emit_upstart
- disk_setup
- mounts
- ssh-import-id
- locale
- set-passwords
- snappy
- grub-dpkg
- apt-pipelining
- apt-configure
- package-update-upgrade-install
- landscape
- timezone
- puppet
- chef
- salt-minion
- mcollective
- disable-ec2-metadata
- runcmd
- byobu
# The modules that run in the 'final' stage
cloud_final_modules:
- rightscale_userdata
- scripts-vendor
- scripts-per-once
- scripts-per-boot
- scripts-per-instance
- scripts-user
- ssh-authkey-fingerprints
- keys-to-console
- phone-home
- final-message
- power-state-change
# System and/or distro specific settings
# (not accessible to handlers/transforms)
system_info:
# This will affect which distro class gets used
distro: ubuntu
# Default user name + that default users groups (if added/used)
default_user:
name: subutai
lock_passwd: false
plain_text_passwd: 'ubuntai'
gecos: Ubuntu
groups: [adm, audio, cdrom, dialout, dip, floppy, netdev, plugdev, sudo, video]
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/bash
# Other config here will be given to the distro class and/or path classes
paths:
cloud_dir: /var/lib/cloud/
templates_dir: /etc/cloud/templates/
upstart_dir: /etc/init/
ssh_svcname: ssh
runcmd:
- /sbin/resize2fs /dev/sda3
- Create file which will prevent starting configuration menu:
touch /mnt/system-data/var/lib/console-conf/complete
- Unmount image:
umount /mnt
- Convert image to vmdk file to use in VirtualBox:
qemu-img convert -f raw -O vmdk subutai.img subutai.vmdk