blob: c6d8fc8e25c3f49d1147bdcba11d95a210e5c322 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
- job:
name: leg-cloud-image-centos
project-type: freestyle
defaults: global
properties:
- authorization:
anonymous:
- job-read
- job-extended-read
linaro:
- job-read
- job-extended-read
- job-build
- job-cancel
- build-discarder:
days-to-keep: 30
num-to-keep: 30
disabled: false
node: docker-centos7-aarch64
display-name: 'LEG Cloud image CentOS'
wrappers:
- timestamps
builders:
- linaro-publish-token:
host: builds.96boards.org
- shell: |
#!/bin/bash
export image_name=centos7-cloud-image
set -ex
trap cleanup_exit INT TERM EXIT
cleanup_exit()
{
cd ${WORKSPACE}
sudo virsh destroy ${image_name} || true
sudo virsh undefine ${image_name} || true
sudo rm -f /var/lib/libvirt/images/${image_name}.qcow2 ${image_name}.qcow2
rm -rf out
}
sudo yum install -y qemu-img virt-install libguestfs-tools-c
sudo virsh pool-list --all
sudo virsh net-list --all
cat > centos7-aarch64.ks << EOF
reboot
eula --agreed
text
firstboot --disable
ignoredisk --only-use=vda
keyboard --vckeymap=us --xlayouts='us'
lang en_GB.UTF-8
network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto --hostname=localhost.localdomain
repo --name=os --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/
repo --name=extras --baseurl=http://mirror.centos.org/altarch/7/extras/aarch64/
repo --name=updates --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/
rootpw --plaintext root
user --name centos --plaintext --password centos --homedir /home/centos --groups wheel
timezone Europe/Warsaw --isUtc
bootloader --boot-drive=vda
autopart --type=plain
clearpart --all --initlabel --drives=vda
%packages
@core
cloud-init
chrony
nfs-utils
rsync
tar
yum-utils
dracut-config-generic
dracut-norescue
-aic94xx-firmware
-alsa-firmware
-alsa-lib
-alsa-tools-firmware
-iprutils
-ivtv-firmware
-iwl100-firmware
-iwl1000-firmware
-iwl105-firmware
-iwl135-firmware
-iwl2000-firmware
-iwl2030-firmware
-iwl3160-firmware
-iwl3945-firmware
-iwl4965-firmware
-iwl5000-firmware
-iwl5150-firmware
-iwl6000-firmware
-iwl6000g2a-firmware
-iwl6000g2b-firmware
-iwl6050-firmware
-iwl7260-firmware
%end
%post
# Needed for install, not so much for cloud.
yum -C -y remove firewalld --setopt="clean_requirements_on_remove=1"
yum -C -y remove avahi\* Network\*
cat > /etc/sysconfig/network << EO
NETWORKING=yes
NOZEROCONF=yes
EO
# Ensure we're not backing in a mac addr.
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EO
DEVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="yes"
PEERDNS="yes"
IPV6INIT="no"
PERSISTENT_DHCLIENT="1"
EO
# Let mirrors know it's cloud
echo 'genclo' > /etc/yum/vars/infra
# Fix selinux context
echo "Fixing SELinux contexts."
touch /var/log/cron
touch /var/log/boot.log
mkdir -p /var/cache/yum
/usr/sbin/fixfiles -R -a restore
# make sure firstboot doesn't start
echo "RUN_FIRSTBOOT=NO" > /etc/sysconfig/firstboot
# install updates (including kernel) from Linaro overlay
curl http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo > /etc/yum.repos.d/linaro-overlay.repo
yum update -y --nogpgcheck
# make sure that resulting initramfs will have virtio storage drivers
echo 'add_drivers+="virtio-blk virtio-scsi"' > /etc/dracut.conf.d/add-virtio-modules.conf
dracut -f /boot/initramfs-`rpm -qa kernel|sed -e "s/kernel-//g"`.img `rpm -qa kernel|sed -e "s/kernel-//g"`
%end
EOF
sudo virt-install \
--name ${image_name} \
--initrd-inject centos7-aarch64.ks \
--extra-args "ks=file:/centos7-aarch64.ks" \
--disk=pool=default,size=10,format=qcow2,bus=virtio \
--memory 2048 \
--location http://mirror.centos.org/altarch/7/os/aarch64/ \
--noreboot
set +ex
while [ true ]; do
sleep 1
vm_running=$(sudo virsh list --name --state-running | grep "^${image_name}" | wc -l)
[ "${vm_running}" -eq "0" ] && break
done
set -ex
sudo virsh list --all
sudo virsh pool-list --all
sudo virsh net-list --all
mkdir out
mv centos7-aarch64.ks out/
sudo cp -a /var/lib/libvirt/images/${image_name}.qcow2 .
sudo qemu-img convert -c -O qcow2 ${image_name}.qcow2 out/${image_name}.qcow2
# extract kernel and initramfs from image
# --unversioned-names may be handy to get vmlinuz/initrd.img names if needed
sudo LIBGUESTFS_BACKEND=direct virt-copy-out -a ${image_name}.qcow2 /boot/ .
sudo cp -a boot/*-reference.*.aarch64* out/
sudo chown -R buildslave:buildslave out
# Publish
test -d ${HOME}/bin || mkdir ${HOME}/bin
wget -q https://git.linaro.org/ci/publishing-api.git/blob_plain/HEAD:/linaro-cp.py -O ${HOME}/bin/linaro-cp.py
time python ${HOME}/bin/linaro-cp.py \
--server ${PUBLISH_SERVER} \
--link-latest \
out snapshots/developer-cloud/centos/cloud-image/${BUILD_NUMBER}
publishers:
- email:
recipients: 'fathi.boudra@linaro.org marcin.juszkiewicz@linaro.org'
|