* Cleaner way of booting from the iso.
* Useful for PXE-boot and kickstart support.
1 | 1 |
deleted file mode 100755 |
... | ... |
@@ -1,20 +0,0 @@ |
1 |
-#!/bin/sh |
|
2 |
- |
|
3 |
-dev_ram=/dev/ram1 |
|
4 |
-dir_needwrite=/fake/needwrite |
|
5 |
-directory_list="var/log tmp " |
|
6 |
- |
|
7 |
-echo -e "Creating ext2fs on $dev_ram ... \n" |
|
8 |
-/sbin/mke2fs -m 0 -i 1024 -q $dev_ram > /dev/null 2>&1 |
|
9 |
- |
|
10 |
- |
|
11 |
-echo -e "Mounting ramdisk on $dir_needwrite ... \n" |
|
12 |
-mount -n $dev_ram $dir_needwrite |
|
13 |
- |
|
14 |
-for directory in $directory_list |
|
15 |
-do |
|
16 |
-mkdir -p $dir_needwrite/$directory |
|
17 |
-echo -e "Created directory.. $directory on $dir_ramdisk \n" |
|
18 |
-done |
|
19 |
- |
|
20 |
- |
7 | 7 |
deleted file mode 100755 |
... | ... |
@@ -1,103 +0,0 @@ |
1 |
-#!/bin/sh |
|
2 |
- |
|
3 |
- |
|
4 |
-#ID is the volume id / label of the PHOTON boot CD that will be looked for. |
|
5 |
-ID="PHOTON_VMWARE_CD" |
|
6 |
-TMP_MOUNT="/mnt" |
|
7 |
- |
|
8 |
-PATH="/bin:/sbin:/usr/bin:/usr/sbin" |
|
9 |
- |
|
10 |
-#this script searches for cdrom devices and then tries to find |
|
11 |
-#the PHOTON boot CD in order to mount it as / (rootfs) |
|
12 |
- |
|
13 |
-#you need following programs: |
|
14 |
-#- /bin/sh (e.g. bash) |
|
15 |
-#- echo |
|
16 |
-#- [ (which is linked to test) |
|
17 |
-#- mount |
|
18 |
-#- umount |
|
19 |
-#- grep |
|
20 |
-#- pivot_root |
|
21 |
-#- chroot |
|
22 |
- |
|
23 |
-#you need following devices: |
|
24 |
-#- /dev/hd*, /dev/sd*, /dev/sr* or /dev/cdrom* |
|
25 |
-#- /dev/null |
|
26 |
- |
|
27 |
-#you need following directories: |
|
28 |
-#- /proc |
|
29 |
-#- $TMP_MOUNT |
|
30 |
- |
|
31 |
-CHECK_TYPE="try_mount" |
|
32 |
- |
|
33 |
-if [ ! -d "/proc/" ]; then |
|
34 |
- mkdir /proc |
|
35 |
-fi |
|
36 |
- |
|
37 |
-mount -n proc /proc -t proc |
|
38 |
- |
|
39 |
-#1. Create a list of possible cdrom devices. |
|
40 |
- |
|
41 |
-CDROM_LIST="/dev/sr0 /dev/sr1 /dev/cdrom /dev/hda /dev/hdb /dev/hdc /dev/hdd |
|
42 |
-/dev/hde /dev/sda /dev/sdb" |
|
43 |
- |
|
44 |
-#2. now we try to find the PHOTON boot CD (we use ID as identification) |
|
45 |
- |
|
46 |
-PHOTON_CDROM_DEVICE="" |
|
47 |
-echo "Using $CHECK_TYPE" |
|
48 |
-for cdrom_device in $CDROM_LIST |
|
49 |
-do |
|
50 |
- echo -n "Checking $cdrom_device ... " |
|
51 |
- |
|
52 |
- if [ "$CHECK_TYPE" = "try_mount" ]; then |
|
53 |
- mount -n -t iso9660 $cdrom_device $TMP_MOUNT > /dev/null 2>&1 |
|
54 |
- media_found=$? |
|
55 |
- fi |
|
56 |
- |
|
57 |
- if [ $media_found -eq 0 ]; then |
|
58 |
- |
|
59 |
- echo -n "media found" |
|
60 |
- if [ "$CHECK_TYPE" = "try_mount" ]; then |
|
61 |
- [ -e "$TMP_MOUNT/$ID" ] |
|
62 |
- media_photon=$? |
|
63 |
- fi |
|
64 |
- |
|
65 |
- if [ "$CHECK_TYPE" = "try_mount" ]; then |
|
66 |
- umount -n $cdrom_device > /dev/null 2>&1 |
|
67 |
- fi |
|
68 |
- |
|
69 |
- if [ $media_photon -eq 0 ]; then |
|
70 |
- echo ", PHOTON boot CD found. Ready!" |
|
71 |
- PHOTON_CDROM_DEVICE="$cdrom_device" |
|
72 |
- break; |
|
73 |
- else |
|
74 |
- echo ", not PHOTON boot CD." |
|
75 |
- fi |
|
76 |
- |
|
77 |
- else |
|
78 |
- echo "no media " |
|
79 |
- fi |
|
80 |
-done |
|
81 |
- |
|
82 |
- |
|
83 |
-#3. mount PHOTON CD as / (root fs) |
|
84 |
-if [ "$PHOTON_CDROM_DEVICE" = "" ]; then |
|
85 |
- |
|
86 |
- echo "No PHOTON boot CD found!!! You will have to fix this to continue" |
|
87 |
- echo "do: mount -n -o ro -t iso9660 'your cd device' $TMP_MOUNT" |
|
88 |
- echo "Then exit shell to continue" |
|
89 |
- bash |
|
90 |
- |
|
91 |
-else |
|
92 |
- |
|
93 |
- echo "Booting from $PHOTON_CDROM_DEVICE ... " |
|
94 |
- |
|
95 |
- mount -n -o ro -t iso9660 $PHOTON_CDROM_DEVICE $TMP_MOUNT |
|
96 |
- |
|
97 |
- cd $TMP_MOUNT |
|
98 |
- pivot_root . mnt |
|
99 |
- mount -t proc proc /proc |
|
100 |
- exec /usr/sbin/chroot . sh -c 'umount /mnt/proc >/dev/null 2>&1;umount /mnt/dev;umount /mnt;exec -a init.new /lib/systemd/systemd' <dev/console > dev/console 2>&1 |
|
101 |
-#umount /mnt/proc;umount /mnt/dev;umount /mnt;exec -a init.new /sbin/init 3' <dev/console >dev/console 2>&1 |
|
102 |
- |
|
103 |
-fi |
... | ... |
@@ -1,6 +1,5 @@ |
1 | 1 |
# Editable variables follow |
2 | 2 |
BUILDROOT=/mnt/photon-root # where to build photon |
3 |
-PARENT="/usr/src/photon" # where build syetm lives |
|
4 | 3 |
# Edit partition and mnt_point for the correct values. |
5 | 4 |
# Failing to do so will cause you grief as in overwriting your host system. |
6 | 5 |
# You have been warned! |
... | ... |
@@ -22,7 +22,7 @@ from window import Window |
22 | 22 |
from actionresult import ActionResult |
23 | 23 |
|
24 | 24 |
class Installer(object): |
25 |
- def __init__(self, install_config, maxy = 0, maxx = 0, iso_installer = False, local_install = False, tools_path = "../stage", rpm_path = "../stage/RPMS", log_path = "../stage/LOGS"): |
|
25 |
+ def __init__(self, install_config, maxy = 0, maxx = 0, iso_installer = False, tools_path = "../stage", rpm_path = "../stage/RPMS", log_path = "../stage/LOGS"): |
|
26 | 26 |
self.install_config = install_config |
27 | 27 |
self.iso_installer = iso_installer |
28 | 28 |
self.tools_path = tools_path |
... | ... |
@@ -35,23 +35,15 @@ class Installer(object): |
35 | 35 |
self.chroot_command = "./mk-run-chroot.sh" |
36 | 36 |
self.setup_grub_command = "./mk-setup-grub.sh" |
37 | 37 |
self.unmount_disk_command = "./mk-unmount-disk.sh" |
38 |
- self.local_install = local_install |
|
39 |
- print local_install |
|
40 |
- if local_install: |
|
41 |
- self.scripts_working_directory = "./" |
|
42 |
- elif self.iso_installer: |
|
43 |
- self.scripts_working_directory = "/usr/src/photon" |
|
44 |
- else: |
|
45 |
- self.scripts_working_directory = "./" |
|
46 | 38 |
|
47 | 39 |
if self.iso_installer: |
48 |
- self.photon_root = "/mnt/photon-root" |
|
40 |
+ self.working_directory = "/mnt/photon-root" |
|
49 | 41 |
elif 'working_directory' in self.install_config: |
50 |
- self.photon_root = self.install_config['working_directory'] |
|
42 |
+ self.working_directory = self.install_config['working_directory'] |
|
51 | 43 |
else: |
52 |
- self.photon_root = "/mnt/photon-root" |
|
44 |
+ self.working_directory = "/mnt/photon-root" |
|
45 |
+ self.photon_root = self.working_directory + "/photon-chroot"; |
|
53 | 46 |
|
54 |
- self.photon_directory = self.photon_root + "/usr/src/photon" |
|
55 | 47 |
self.restart_command = "shutdown" |
56 | 48 |
self.hostname_file = self.photon_root + "/etc/hostname" |
57 | 49 |
self.hosts_file = self.photon_root + "/etc/hosts" |
... | ... |
@@ -66,6 +58,7 @@ class Installer(object): |
66 | 66 |
else: |
67 | 67 |
self.output = None |
68 | 68 |
|
69 |
+ self.install_factor = 3 |
|
69 | 70 |
if self.iso_installer: |
70 | 71 |
#initializing windows |
71 | 72 |
self.maxy = maxy |
... | ... |
@@ -102,15 +95,12 @@ class Installer(object): |
102 | 102 |
|
103 | 103 |
def unsafe_install(self, params): |
104 | 104 |
|
105 |
- self.prepare_files_rpms_list() |
|
106 |
- |
|
107 | 105 |
if self.iso_installer: |
108 | 106 |
self.window.show_window() |
109 |
- |
|
110 |
- self.progress_bar.initialize(self.total_size, 'Initializing installation...') |
|
107 |
+ self.progress_bar.initialize('Initializing installation...') |
|
111 | 108 |
self.progress_bar.show() |
112 | 109 |
|
113 |
- self.pre_initialize_filesystem() |
|
110 |
+ self.initialize_system() |
|
114 | 111 |
|
115 | 112 |
#install packages |
116 | 113 |
for rpm in self.rpms_tobeinstalled: |
... | ... |
@@ -122,19 +112,17 @@ class Installer(object): |
122 | 122 |
return_value = self.install_package(rpm['package']) |
123 | 123 |
if return_value != 0: |
124 | 124 |
self.exit_gracefully(None, None) |
125 |
- #time.sleep(0.05) |
|
126 | 125 |
if self.iso_installer: |
127 | 126 |
self.progress_bar.increment(rpm['size'] * self.install_factor) |
128 | 127 |
|
129 | 128 |
if self.iso_installer: |
130 | 129 |
self.progress_bar.show_loading('Finalizing installation') |
131 |
- #finalize system |
|
130 |
+ |
|
132 | 131 |
self.finalize_system() |
133 |
- #time.sleep(5) |
|
134 | 132 |
|
135 |
- if not self.install_config['iso_system'] and not self.local_install: |
|
133 |
+ if not self.install_config['iso_system']: |
|
136 | 134 |
# install grub |
137 |
- process = subprocess.Popen([self.setup_grub_command, '-w', self.photon_root, self.install_config['disk']['disk'], self.install_config['disk']['root']], stdout=self.output, stderr=self.output) |
|
135 |
+ process = subprocess.Popen([self.setup_grub_command, '-w', self.photon_root, self.install_config['disk']['disk'], self.install_config['disk']['root']], stdout=self.output) |
|
138 | 136 |
retval = process.wait() |
139 | 137 |
|
140 | 138 |
#update root password |
... | ... |
@@ -146,7 +134,7 @@ class Installer(object): |
146 | 146 |
#update openssh config |
147 | 147 |
self.update_openssh_config() |
148 | 148 |
|
149 |
- process = subprocess.Popen([self.unmount_disk_command, '-w', self.photon_root], stdout=self.output, stderr=self.output) |
|
149 |
+ process = subprocess.Popen([self.unmount_disk_command, '-w', self.photon_root], stdout=self.output) |
|
150 | 150 |
retval = process.wait() |
151 | 151 |
|
152 | 152 |
if self.iso_installer: |
... | ... |
@@ -156,49 +144,17 @@ class Installer(object): |
156 | 156 |
|
157 | 157 |
return ActionResult(True, None) |
158 | 158 |
|
159 |
- def prepare_files_rpms_list(self): |
|
160 |
- self.total_size = 0 |
|
161 |
- self.install_factor = 3 |
|
162 |
- |
|
163 |
- tools_list = (JsonWrapper("tools_list.json")).read() |
|
164 |
- tools = tools_list['base_tools'] |
|
165 |
- # Add the additional iso tools. |
|
166 |
- if self.install_config['iso_system']: |
|
167 |
- tools = tools + tools_list['iso_tools'] + [self.rpm_path] |
|
168 |
- |
|
169 |
- self.files_tobecopied = [] |
|
170 |
- for item in tools: |
|
171 |
- src = os.path.join(self.scripts_working_directory, item) |
|
172 |
- if os.path.isfile(src): |
|
173 |
- if item != '.hidden': |
|
174 |
- size = os.path.getsize(src) |
|
175 |
- self.total_size += size |
|
176 |
- self.files_tobecopied.append({'name': item, 'path': src, 'size': size}) |
|
177 |
- continue |
|
178 |
- for root, dirs, files in os.walk(src): |
|
179 |
- for name in files: |
|
180 |
- file = os.path.join(root, name) |
|
181 |
- size = os.path.getsize(file) |
|
182 |
- self.total_size += size |
|
183 |
- relative = None |
|
184 |
- if name.endswith(".rpm"): |
|
185 |
- relative = os.path.relpath(file, self.rpm_path) |
|
186 |
- relative = os.path.join("RPMS", relative) |
|
187 |
- self.files_tobecopied.append({'name': name, 'path': file, 'relative_path': relative, 'size': size}) |
|
188 |
- |
|
189 |
- # prepare the RPMs |
|
190 |
- # TODO: mbassiouny, do not copy the rpms twice |
|
159 |
+ def copy_rpms(self): |
|
160 |
+ # prepare the RPMs list |
|
191 | 161 |
rpms = [] |
192 |
- for root, dirs, files in os.walk(os.path.join(self.scripts_working_directory, self.rpm_path)): |
|
162 |
+ for root, dirs, files in os.walk(self.rpm_path): |
|
193 | 163 |
for name in files: |
194 | 164 |
file = os.path.join(root, name) |
195 | 165 |
size = os.path.getsize(file) |
196 |
- relative = os.path.relpath(file, self.rpm_path) |
|
197 |
- relative = os.path.join("RPMS", relative) |
|
198 |
- rpms.append({'name': name, 'path': file, 'relative_path': relative, 'size': size}) |
|
166 |
+ rpms.append({'name': name, 'path': file, 'size': size}) |
|
199 | 167 |
|
168 |
+ progressbar_num_items = 0 |
|
200 | 169 |
self.rpms_tobeinstalled = [] |
201 |
- # prepare the RPMs list |
|
202 | 170 |
selected_packages = self.install_config['packages'] |
203 | 171 |
for package in selected_packages: |
204 | 172 |
pattern = package + '-[0-9]*.rpm' |
... | ... |
@@ -206,69 +162,77 @@ class Installer(object): |
206 | 206 |
if fnmatch.fnmatch(rpm['name'], pattern): |
207 | 207 |
rpm['package'] = package |
208 | 208 |
self.rpms_tobeinstalled.append(rpm) |
209 |
- self.total_size += rpm['size'] + rpm['size'] * self.install_factor |
|
209 |
+ progressbar_num_items += rpm['size'] + rpm['size'] * self.install_factor |
|
210 | 210 |
break |
211 | 211 |
|
212 |
- def copy_file(self, file): |
|
213 |
- if self.iso_installer: |
|
214 |
- message = 'Copying {0}...'.format(file['name']) |
|
215 |
- self.progress_bar.update_message(message) |
|
216 |
- |
|
217 |
- if 'relative_path' in file and file['relative_path'] != None: |
|
218 |
- relative = file['relative_path'] |
|
219 |
- else: |
|
220 |
- relative = os.path.relpath(file['path'], self.scripts_working_directory) |
|
221 |
- |
|
222 |
- dst = os.path.join(self.photon_directory, relative) |
|
223 |
- if not os.path.exists(os.path.dirname(dst)): |
|
224 |
- os.makedirs(os.path.dirname(dst)) |
|
225 |
- shutil.copy(file['path'], dst) |
|
212 |
+ process = subprocess.Popen(['mkdir', '-p', self.photon_root + '/RPMS'], stdout=self.output) |
|
213 |
+ retval = process.wait() |
|
226 | 214 |
|
227 |
- def copy_files(self): |
|
228 |
- for file in self.files_tobecopied: |
|
229 |
- self.copy_file(file) |
|
230 |
- #time.sleep(0.05) |
|
231 |
- if self.iso_installer: |
|
232 |
- self.progress_bar.increment(file['size']) |
|
215 |
+ if self.iso_installer: |
|
216 |
+ self.progress_bar.update_num_items(progressbar_num_items) |
|
233 | 217 |
|
218 |
+ # Copy the rpms |
|
234 | 219 |
for rpm in self.rpms_tobeinstalled: |
235 |
- self.copy_file(rpm) |
|
236 |
- #time.sleep(0.05) |
|
220 |
+ shutil.copy(rpm['path'], self.photon_root + '/RPMS/') |
|
237 | 221 |
if self.iso_installer: |
238 | 222 |
self.progress_bar.increment(rpm['size']) |
239 | 223 |
|
240 |
- def pre_initialize_filesystem(self): |
|
224 |
+ def copy_files(self): |
|
225 |
+ # Make the photon_root directory if not exits |
|
226 |
+ process = subprocess.Popen(['mkdir', '-p', self.photon_root], stdout=self.output) |
|
227 |
+ retval = process.wait() |
|
228 |
+ |
|
229 |
+ # Copy the installer files |
|
230 |
+ process = subprocess.Popen(['cp', '-r', "../installer", self.photon_root], stdout=self.output) |
|
231 |
+ retval = process.wait() |
|
232 |
+ |
|
233 |
+ # get the RPMS dir form the cd |
|
234 |
+ if self.rpm_path == 'cdrom': |
|
235 |
+ # Mount the cd to get the RPMS |
|
236 |
+ process = subprocess.Popen(['mkdir', '-p', '/mnt/cdrom'], stdout=self.output) |
|
237 |
+ retval = process.wait() |
|
238 |
+ |
|
239 |
+ process = subprocess.Popen(['mount', '/dev/cdrom', '/mnt/cdrom'], stdout=self.output) |
|
240 |
+ retval = process.wait() |
|
241 |
+ if retval != 0: |
|
242 |
+ self.exit_gracefully(None, None) |
|
243 |
+ self.rpm_path = '/mnt/cdrom/RPMS' |
|
244 |
+ self.tools_path = '/mnt/cdrom' |
|
245 |
+ |
|
246 |
+ self.copy_rpms() |
|
247 |
+ |
|
248 |
+ def initialize_system(self): |
|
241 | 249 |
#Setup the disk |
242 |
- if (not self.install_config['iso_system']) and (not self.local_install): |
|
243 |
- process = subprocess.Popen([self.mount_command, '-w', self.photon_root, self.install_config['disk']['root']], stdout=self.output, stderr=self.output) |
|
250 |
+ if (not self.install_config['iso_system']): |
|
251 |
+ process = subprocess.Popen([self.mount_command, '-w', self.photon_root, self.install_config['disk']['root']], stdout=self.output) |
|
244 | 252 |
retval = process.wait() |
245 |
- #Setup the filesystem basics |
|
253 |
+ |
|
246 | 254 |
self.copy_files() |
247 |
- process = subprocess.Popen([self.prepare_command, '-w', self.photon_root, self.tools_path], stdout=self.output, stderr=self.output) |
|
255 |
+ |
|
256 |
+ #Setup the filesystem basics |
|
257 |
+ process = subprocess.Popen([self.prepare_command, '-w', self.photon_root, self.tools_path], stdout=self.output) |
|
248 | 258 |
retval = process.wait() |
249 | 259 |
|
250 | 260 |
def finalize_system(self): |
251 | 261 |
#Setup the disk |
252 |
- process = subprocess.Popen([self.chroot_command, '-w', self.photon_root, self.finalize_command, '-w', self.photon_root], stdout=self.output, stderr=self.output) |
|
262 |
+ process = subprocess.Popen([self.chroot_command, '-w', self.photon_root, self.finalize_command, '-w', self.photon_root], stdout=self.output) |
|
253 | 263 |
retval = process.wait() |
254 | 264 |
if self.iso_installer: |
255 |
- # just copy the initrd /boot -> /photon_mnt/boot |
|
265 |
+ # just copy the initramfs /boot -> /photon_mnt/boot |
|
256 | 266 |
shutil.copy('/boot/initrd.img-no-kmods', self.photon_root + '/boot/') |
257 |
- elif not self.local_install: |
|
258 |
- #Build the initrd |
|
259 |
- process = subprocess.Popen([self.chroot_command, '-w', self.photon_root, './mkinitramfs', '-n', '/boot/initrd.img-no-kmods'], stdout=self.output, stderr=self.output) |
|
260 |
- retval = process.wait() |
|
261 |
- process = subprocess.Popen(["./mk-initrd", '-w', self.photon_root], stdout=self.output, stderr=self.output) |
|
267 |
+ else: |
|
268 |
+ #Build the initramfs |
|
269 |
+ process = subprocess.Popen([self.chroot_command, '-w', self.photon_root, './mkinitramfs', '-n', '/boot/initrd.img-no-kmods'], stdout=self.output) |
|
262 | 270 |
retval = process.wait() |
263 | 271 |
|
264 | 272 |
|
265 | 273 |
def install_package(self, package_name): |
266 | 274 |
rpm_params = '' |
267 | 275 |
|
268 |
- if 'type' in self.install_config and (self.install_config['type'] in ['micro', 'minimal']): |
|
276 |
+ if ('type' in self.install_config and (self.install_config['type'] in ['micro', 'minimal'])) or self.install_config['iso_system']: |
|
269 | 277 |
rpm_params = rpm_params + ' --excludedocs ' |
270 | 278 |
|
271 |
- process = subprocess.Popen([self.chroot_command, '-w', self.photon_root, self.install_package_command, '-w', self.photon_root, package_name, rpm_params], stdout=self.output, stderr=self.output) |
|
279 |
+ process = subprocess.Popen([self.chroot_command, '-w', self.photon_root, self.install_package_command, '-w', self.photon_root, package_name, rpm_params], stdout=self.output) |
|
272 | 280 |
return process.wait() |
273 | 281 |
|
274 | 282 |
def replace_string_in_file(self, filename, search_string, replace_string): |
... | ... |
@@ -311,7 +275,7 @@ class Installer(object): |
311 | 311 |
os.chmod(self.authorized_keys_filename, 0600) |
312 | 312 |
|
313 | 313 |
# Change the sshd config to allow root login |
314 |
- process = subprocess.Popen(["sed", "-i", "s/^\\s*PermitRootLogin\s\+no/PermitRootLogin yes/", self.sshd_config_filename], stdout=self.output, stderr=self.output) |
|
314 |
+ process = subprocess.Popen(["sed", "-i", "s/^\\s*PermitRootLogin\s\+no/PermitRootLogin yes/", self.sshd_config_filename], stdout=self.output) |
|
315 | 315 |
return process.wait() |
316 | 316 |
|
317 | 317 |
|
... | ... |
@@ -17,12 +17,8 @@ from license import License |
17 | 17 |
|
18 | 18 |
class IsoInstaller(object): |
19 | 19 |
|
20 |
- def __init__(self, stdscreen, argv): |
|
20 |
+ def __init__(self, stdscreen): |
|
21 | 21 |
self.screen = stdscreen |
22 |
- if len(argv) == 2: |
|
23 |
- local_install = True |
|
24 |
- else: |
|
25 |
- local_install = False |
|
26 | 22 |
|
27 | 23 |
# Init the colors |
28 | 24 |
curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE) |
... | ... |
@@ -41,15 +37,8 @@ class IsoInstaller(object): |
41 | 41 |
|
42 | 42 |
license_agreement = License(self.maxy, self.maxx) |
43 | 43 |
|
44 |
- # skip the disk selection and partitioning if we are running with conf file in test environment. |
|
45 |
- if local_install == True: |
|
46 |
- # Read the conf file |
|
47 |
- self.install_config = (JsonWrapper(argv[1])).read() |
|
48 |
- self.install_config['iso_system'] = False |
|
49 |
- else: |
|
50 |
- self.install_config['iso_system'] = False |
|
51 |
- disk_partitioner = DiskPartitioner(self.maxy, self.maxx) |
|
52 |
- select_disk = SelectDisk(self.maxy, self.maxx, self.install_config) |
|
44 |
+ self.install_config['iso_system'] = False |
|
45 |
+ select_disk = SelectDisk(self.maxy, self.maxx, self.install_config) |
|
53 | 46 |
|
54 | 47 |
package_selector = PackageSelector(self.maxy, self.maxx, self.install_config) |
55 | 48 |
custom_package_selector = CustomPackageSelector(self.maxy, self.maxx, self.install_config) |
... | ... |
@@ -59,10 +48,12 @@ class IsoInstaller(object): |
59 | 59 |
root_password_reader = WindowStringReader(self.maxy, self.maxx, 10, 70, True, 'Set up root password', |
60 | 60 |
'Root password:', |
61 | 61 |
2, self.install_config) |
62 |
- installer = Installer(self.install_config, self.maxy, self.maxx, True, local_install, tools_path="/usr/src/photon", rpm_path="/usr/src/photon/RPMS", log_path="/var/log") |
|
62 |
+ installer = Installer(self.install_config, self.maxy, self.maxx, True, tools_path=None, rpm_path='cdrom', log_path="/var/log") |
|
63 | 63 |
|
64 | 64 |
# This represents the installer screen, the bool indicated if I can go back to this window or not |
65 | 65 |
items = [ |
66 |
+ (license_agreement.display, False), |
|
67 |
+ (select_disk.display, True), |
|
66 | 68 |
(package_selector.display, True), |
67 | 69 |
(custom_package_selector.display, False), |
68 | 70 |
(hostname_reader.get_user_string, True), |
... | ... |
@@ -70,14 +61,6 @@ class IsoInstaller(object): |
70 | 70 |
(installer.install, False) |
71 | 71 |
] |
72 | 72 |
|
73 |
- # Include disk selection and partitioning in state machine when there is no extra param. |
|
74 |
- if local_install == False: |
|
75 |
- items = [ |
|
76 |
- #(disk_partitioner.display, True), |
|
77 |
- (select_disk.display, True) |
|
78 |
- ] + items |
|
79 |
- items = [(license_agreement.display, False)] + items |
|
80 |
- |
|
81 | 73 |
index = 0 |
82 | 74 |
params = None |
83 | 75 |
while True: |
... | ... |
@@ -94,7 +77,5 @@ class IsoInstaller(object): |
94 | 94 |
if index < 0: |
95 | 95 |
index = 0 |
96 | 96 |
|
97 |
-# Call this script without any parameter to install from iso |
|
98 |
-# or pass a conf file to install on local sdb for testing. |
|
99 | 97 |
if __name__ == '__main__': |
100 |
- curses.wrapper(IsoInstaller, sys.argv) |
|
98 |
+ curses.wrapper(IsoInstaller) |
... | ... |
@@ -19,8 +19,7 @@ PRGNAME=${0##*/} # script name minus the path |
19 | 19 |
LOGFILE=/var/log/"${PRGNAME}-${LOGFILE}" # set log file name |
20 | 20 |
#LOGFILE=/dev/null # uncomment to disable log file |
21 | 21 |
[ ${EUID} -eq 0 ] || fail "${PRGNAME}: Need to be root user: FAILURE" |
22 |
-[ -z ${PARENT} ] && fail "${PRGNAME}: PARENT not set: FAILURE" |
|
23 |
-[ -z ${BUILDROOT} ] && fail "${PRGNAME}: Build root not set: FAILURE" |
|
22 |
+ |
|
24 | 23 |
/sbin/ldconfig |
25 | 24 |
/usr/sbin/pwconv |
26 | 25 |
/usr/sbin/grpconv |
27 | 26 |
deleted file mode 100755 |
... | ... |
@@ -1,68 +0,0 @@ |
1 |
-#!/bin/bash |
|
2 |
-################################################# |
|
3 |
-# Title: mk-initrd # |
|
4 |
-# Date: 2015-04-08 # |
|
5 |
-# Version: 1.0 # |
|
6 |
-# Author: dthaluru@vmware.com # |
|
7 |
-# Options: # |
|
8 |
-################################################# |
|
9 |
-# Overview |
|
10 |
-# Creates initial ramdisk |
|
11 |
-# End |
|
12 |
-# |
|
13 |
- |
|
14 |
-source config.inc # configuration parameters |
|
15 |
-source function.inc # commonn functions |
|
16 |
- |
|
17 |
- |
|
18 |
-if [ -d ${BUILDROOT} ] ; then |
|
19 |
- [ -e ${BUILDROOT}/dev/ram0 ] || mknod ${BUILDROOT}/dev/ram0 b 1 0 |
|
20 |
- # Try to reduce this size to 8G or less later...maybe strip debug symbols off. |
|
21 |
- dd if=/dev/zero of=${BUILDROOT}/boot/initrd bs=1024 count=16384 |
|
22 |
- mke2fs -m 0 -i 1024 -F ${BUILDROOT}/boot/initrd |
|
23 |
- mount -o loop ${BUILDROOT}/boot/initrd ${BUILDROOT}/mnt |
|
24 |
- cp BUILD_DVD/linuxrc ${BUILDROOT}/mnt/ |
|
25 |
- cp BUILD_DVD/fstab ${BUILDROOT}/mnt/ |
|
26 |
- pushd ${BUILDROOT}/mnt |
|
27 |
- mkdir bin lib dev proc mnt etc |
|
28 |
- ln -s lib lib64 |
|
29 |
- ln -s bin sbin |
|
30 |
- popd |
|
31 |
- mknod ${BUILDROOT}/mnt/dev/ram0 b 1 0 |
|
32 |
- mknod ${BUILDROOT}/mnt/dev/null c 1 3 |
|
33 |
- mknod ${BUILDROOT}/mnt/dev/zero c 1 5 |
|
34 |
- mknod ${BUILDROOT}/mnt/dev/console c 5 1 |
|
35 |
- mknod ${BUILDROOT}/mnt/dev/ttyS0 c 4 64 |
|
36 |
- mknod ${BUILDROOT}/mnt/dev/sr0 b 11 0 |
|
37 |
- mknod ${BUILDROOT}/mnt/dev/sr1 b 11 1 |
|
38 |
- mknod ${BUILDROOT}/mnt/dev/sda b 8 0 |
|
39 |
- mknod ${BUILDROOT}/mnt/dev/sdb b 16 0 |
|
40 |
- mknod ${BUILDROOT}/mnt/dev/sdc b 32 0 |
|
41 |
- mknod ${BUILDROOT}/mnt/dev/sdd b 48 0 |
|
42 |
- mknod ${BUILDROOT}/mnt/dev/hda b 3 0 |
|
43 |
- mknod ${BUILDROOT}/mnt/dev/hdb b 3 64 |
|
44 |
- mknod ${BUILDROOT}/mnt/dev/hdc b 22 0 |
|
45 |
- mknod ${BUILDROOT}/mnt/dev/hdd b 22 64 |
|
46 |
- mknod ${BUILDROOT}/mnt/dev/hde b 33 0 |
|
47 |
- cp ${BUILDROOT}/bin/{bash,mount,grep,umount,echo} ${BUILDROOT}/mnt/bin/ |
|
48 |
- cp ${BUILDROOT}/usr/sbin/chroot ${BUILDROOT}/mnt/bin/ |
|
49 |
- cp ${BUILDROOT}/sbin/pivot_root ${BUILDROOT}/mnt/bin/ |
|
50 |
- ln -s bash ${BUILDROOT}/mnt/bin/sh |
|
51 |
- cp ${BUILDROOT}/lib/{libncursesw.so.*,libreadline.so.*} ${BUILDROOT}/mnt/lib/ |
|
52 |
- cp ${BUILDROOT}/lib/{libhistory.so.*,libblkid.so.*,libuuid.so.*,libmount.so.*} ${BUILDROOT}/mnt/lib/ |
|
53 |
- cp ${BUILDROOT}/usr/lib/libgcc_s.so.1 ${BUILDROOT}/mnt/lib/ |
|
54 |
- ln -s libgcc_s.so.1 ${BUILDROOT}/mnt/lib/libgcc_s_so |
|
55 |
- for f in "ld-linux-x86-64.so.2" "libc.so.6" "libdl.so.2" "libpthread.so.0" |
|
56 |
- do |
|
57 |
- orig=$(readlink ${BUILDROOT}/lib/$f) |
|
58 |
- orig_basename="${orig##*/}" |
|
59 |
- cp ${BUILDROOT}/lib/$f ${BUILDROOT}/mnt/lib/$orig_basename |
|
60 |
- ln -sfv $orig_basename ${BUILDROOT}/mnt/lib/$f |
|
61 |
- done |
|
62 |
- cp ${BUILDROOT}/bin/{cat,sleep,mknod} ${BUILDROOT}/mnt/bin/ |
|
63 |
- chmod 0755 ${BUILDROOT}/mnt/linuxrc |
|
64 |
- sleep 1 |
|
65 |
- umount ${BUILDROOT}/mnt |
|
66 |
- gzip ${BUILDROOT}/boot/initrd |
|
67 |
-fi |
|
68 |
- |
... | ... |
@@ -28,34 +28,25 @@ if [ $# -lt 2 ] |
28 | 28 |
fi |
29 | 29 |
ISO_OUTPUT_NAME=$1 |
30 | 30 |
TOOLS_PATH=$2 |
31 |
-PACKAGE_LIST_FILE=$3 |
|
31 |
+RPMS_PATH=$3 |
|
32 |
+PACKAGE_LIST_FILE=$4 |
|
32 | 33 |
|
33 | 34 |
|
34 | 35 |
#- Step 3 Setting up the boot loader |
36 |
+WORKINGDIR=${BUILDROOT} |
|
37 |
+BUILDROOT=${BUILDROOT}/photon-chroot |
|
35 | 38 |
|
36 |
-mkdir ${BUILDROOT}/isolinux |
|
37 |
-cp BUILD_DVD/isolinux/* ${BUILDROOT}/isolinux/ |
|
39 |
+mkdir ${WORKINGDIR}/isolinux |
|
40 |
+cp BUILD_DVD/isolinux/* ${WORKINGDIR}/isolinux/ |
|
38 | 41 |
|
39 |
-mv ${BUILDROOT}/boot/* ${BUILDROOT}/isolinux/ |
|
40 |
-rmdir ${BUILDROOT}/boot |
|
41 |
-ln -s isolinux ${BUILDROOT}/boot |
|
42 |
+find ${BUILDROOT} -name linux-[0-9]*.rpm | head -1 | xargs rpm2cpio | cpio -iv --to-stdout ./boot/vmlinuz* > ${WORKINGDIR}/isolinux/vmlinuz |
|
42 | 43 |
|
43 |
-find ${BUILDROOT} -name linux-[0-9]*.rpm | head -1 | xargs rpm2cpio | cpio -iv --to-stdout ./boot/vmlinuz* > ${BUILDROOT}/boot/vmlinuz |
|
44 |
- |
|
45 |
-cp -r ../installer ${BUILDROOT}/${PARENT} |
|
44 |
+rm -f ${BUILDROOT}/installer/*.pyc |
|
46 | 45 |
# replace default package_list with specific one |
47 |
-cp $PACKAGE_LIST_FILE ${BUILDROOT}/${PARENT}/installer/package_list.json |
|
48 |
-rm -f ${BUILDROOT}/${PARENT}/installer/*.pyc |
|
46 |
+cp $PACKAGE_LIST_FILE ${BUILDROOT}/installer/package_list.json |
|
49 | 47 |
|
50 | 48 |
#ID in the initrd.gz now is PHOTON_VMWARE_CD . This is how we recognize that the cd is actually ours. touch this file there. |
51 |
-touch ${BUILDROOT}/PHOTON_VMWARE_CD |
|
52 |
- |
|
53 |
-#- Step 4 - Move /etc /var /root /home to /fake/needwrite |
|
54 |
- |
|
55 |
-mkdir -p ${BUILDROOT}/fake/{needwrite,ramdisk} |
|
56 |
-mv ${BUILDROOT}/var/ ${BUILDROOT}/tmp ${BUILDROOT}/fake/needwrite/ |
|
57 |
-ln -s fake/needwrite/var ${BUILDROOT}/var |
|
58 |
-ln -s fake/needwrite/tmp ${BUILDROOT}/tmp |
|
49 |
+touch ${WORKINGDIR}/PHOTON_VMWARE_CD |
|
59 | 50 |
|
60 | 51 |
# Step 4.5 Create necessary devices |
61 | 52 |
mkfifo ${BUILDROOT}/dev/initctl |
... | ... |
@@ -68,7 +59,6 @@ mknod ${BUILDROOT}/dev/sda b 8 0 |
68 | 68 |
|
69 | 69 |
#- Step 5 - Creating the boot script |
70 | 70 |
mkdir -p ${BUILDROOT}/etc/systemd/scripts |
71 |
-cp BUILD_DVD/create_ramdisk ${BUILDROOT}/bin/create_ramdisk |
|
72 | 71 |
|
73 | 72 |
# Step 6 create fstab |
74 | 73 |
|
... | ... |
@@ -78,37 +68,55 @@ cp BUILD_DVD/fstab ${BUILDROOT}/etc/fstab |
78 | 78 |
|
79 | 79 |
cat >> ${BUILDROOT}/bin/bootphotoninstaller << EOF |
80 | 80 |
#!/bin/bash |
81 |
-create_ramdisk |
|
82 |
-cd ${PARENT}/installer |
|
81 |
+cd /installer |
|
83 | 82 |
./isoInstaller.py 2> /var/log/installer && shutdown -r now |
84 | 83 |
/bin/bash |
85 | 84 |
EOF |
86 | 85 |
|
87 | 86 |
chmod 755 ${BUILDROOT}/bin/bootphotoninstaller |
88 | 87 |
|
88 |
+cat >> ${BUILDROOT}/init << EOF |
|
89 |
+mount -t proc proc /proc |
|
90 |
+/lib/systemd/systemd |
|
91 |
+EOF |
|
92 |
+chmod 755 ${BUILDROOT}/init |
|
93 |
+ |
|
89 | 94 |
#adding autologin to the root user |
90 | 95 |
sed -i "s/ExecStart.*/ExecStart=-\/sbin\/agetty --autologin root --noclear %I $TERM/g" ${BUILDROOT}/lib/systemd/system/getty@.service |
91 | 96 |
|
92 | 97 |
sed -i "s/root:.*/root:x:0:0:root:\/root:\/bin\/bootphotoninstaller/g" ${BUILDROOT}/etc/passwd |
93 | 98 |
|
94 |
-mkdir -p ${BUILDROOT}/mnt/photon-root |
|
95 |
-cp $TOOLS_PATH/tools.tar.gz ${BUILDROOT}/${PARENT}/ |
|
99 |
+mkdir -p ${BUILDROOT}/mnt/photon-root/photon-chroot |
|
100 |
+rm -rf ${BUILDROOT}/RPMS |
|
101 |
+cp -r ${RPMS_PATH} ${WORKINGDIR}/ |
|
102 |
+cp $TOOLS_PATH/tools.tar.gz ${WORKINGDIR}/ |
|
96 | 103 |
|
97 | 104 |
#creating rpm repo in cd.. |
98 |
-createrepo --database ${BUILDROOT}/${PARENT}/RPMS |
|
105 |
+createrepo --database ${WORKINGDIR}/RPMS |
|
99 | 106 |
|
100 |
-rm -rf ${BUILDROOT}/${PARENT}/LOGS |
|
107 |
+rm -rf ${BUILDROOT}/LOGS |
|
101 | 108 |
|
102 | 109 |
#Remove our rpm database as it fills up the ramdisk |
103 | 110 |
rm -rf ${BUILDROOT}/var/lib/rpm |
104 |
-find "$BUILDROOT"/{,usr/}lib -type f -exec strip --strip-debug '{}' ';' > /dev/null 2>&1 |
|
105 |
-find "$BUILDROOT"/{,usr/}{bin,sbin} -type f -exec strip --strip-unneeded '{}' ';' > /dev/null 2>&1 |
|
111 |
+# TODO: mbassiouny, Find a clean way to do that |
|
112 |
+for i in `ls ${BUILDROOT}/usr/share/`; do |
|
113 |
+ if [ $i != 'terminfo' -a $i != 'cracklib' -a $i != 'grub' ]; then |
|
114 |
+ rm -rf ${BUILDROOT}/usr/share/$i |
|
115 |
+ fi |
|
116 |
+done |
|
106 | 117 |
rm -rf $BUILDROOT/tools |
107 |
-#Step 9 Generate the ISO!!!! |
|
118 |
+ |
|
119 |
+# Generate the intird |
|
108 | 120 |
pushd $BUILDROOT |
121 |
+(find . | cpio -o -H newc --quiet | gzip -9 ) > ${WORKINGDIR}/isolinux/initrd.img |
|
122 |
+popd |
|
123 |
+rm -rf $BUILDROOT |
|
124 |
+ |
|
125 |
+#Step 9 Generate the ISO!!!! |
|
126 |
+pushd $WORKINGDIR |
|
109 | 127 |
mkisofs -R -l -L -D -b isolinux/isolinux.bin -c isolinux/boot.cat \ |
110 | 128 |
-no-emul-boot -boot-load-size 4 -boot-info-table -V "PHOTON_$(date +%Y%m%d)" \ |
111 |
- $BUILDROOT >$ISO_OUTPUT_NAME |
|
129 |
+ $WORKINGDIR >$ISO_OUTPUT_NAME |
|
112 | 130 |
|
113 | 131 |
popd |
114 | 132 |
|
... | ... |
@@ -25,10 +25,8 @@ if [ $# -ge 2 ] |
25 | 25 |
fi |
26 | 26 |
|
27 | 27 |
[ ${EUID} -eq 0 ] || fail "${PRGNAME}: Need to be root user: FAILURE" |
28 |
-[ -z ${PARENT} ] && fail "${PRGNAME}: PARENT not set: FAILURE" |
|
29 |
-[ -z ${BUILDROOT} ] && fail "${PRGNAME}: BUILDROOT not set: FAILURE" |
|
30 | 28 |
RPMPKG="" |
31 |
-RPMPKG=$(find RPMS -name "$1-[0-9]*.rpm" -print) |
|
29 |
+RPMPKG=$(find ../RPMS -name "$1-[0-9]*.rpm" -print) |
|
32 | 30 |
[ -z $RPMPKG ] && fail "installation error: rpm package not found\n" |
33 | 31 |
case $1 in |
34 | 32 |
linux-dev | linux-docs | glibc | gmp | gcc | bzip2 | ncurses | util-linux | e2fsprogs | shadow | bison | perl | texinfo | vim | linux | udev | rpm | dbus) |
... | ... |
@@ -28,7 +28,6 @@ LOGFILE=/var/log/"${PRGNAME}-${LOGFILE}" # set log file name |
28 | 28 |
#LOGFILE=/dev/null # uncomment to disable log file |
29 | 29 |
|
30 | 30 |
[ ${EUID} -eq 0 ] || fail "${PRGNAME}: Need to be root user: FAILURE" |
31 |
-[ -z ${PARENT} ] && fail "${PRGNAME}: PARENT not set: FAILURE" |
|
32 | 31 |
[ -z ${BUILDROOT} ] && fail "${PRGNAME}: Build root not set: FAILURE" |
33 | 32 |
|
34 | 33 |
if mountpoint ${BUILDROOT}/run >/dev/null 2>&1; then umount ${BUILDROOT}/run; fi |
... | ... |
@@ -50,7 +49,7 @@ if mountpoint ${BUILDROOT}/dev >/dev/null 2>&1; then umount ${BUILDROOT}/dev; fi |
50 | 50 |
fi |
51 | 51 |
PATH=$PATH:/tools/bin |
52 | 52 |
} |
53 |
-cd ${BUILDROOT}${PARENT} || fail "${PRGNAME}: Change directory: ${BUILDROOT}${PARENT}: FAILURE" |
|
53 |
+cd ${BUILDROOT} || fail "${PRGNAME}: Change directory: ${BUILDROOT}: FAILURE" |
|
54 | 54 |
# |
55 | 55 |
# Setup the filesystem for chapter 06 |
56 | 56 |
# |
... | ... |
@@ -19,7 +19,6 @@ PRGNAME=${0##*/} # script name minus the path |
19 | 19 |
LOGFILE=/var/log/"${PRGNAME}-${LOGFILE}" # set log file name |
20 | 20 |
#LOGFILE=/dev/null # uncomment to disable log file |
21 | 21 |
[ ${EUID} -eq 0 ] || fail "${PRGNAME}: Need to be root user: FAILURE" |
22 |
-[ -z ${PARENT} ] && fail "${PRGNAME}: PARENT not set: FAILURE" |
|
23 | 22 |
[ -z ${BUILDROOT} ] && fail "${PRGNAME}: Build root not set: FAILURE" |
24 | 23 |
|
25 | 24 |
# Remove the name of this script from our argument list |
... | ... |
@@ -34,6 +33,6 @@ chroot "${BUILDROOT}" \ |
34 | 34 |
TERM="$TERM" \ |
35 | 35 |
PS1='\u:\w\$ ' \ |
36 | 36 |
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ |
37 |
- /tools/bin/bash --login +h -c "cd ${PARENT};$*" |
|
37 |
+ /tools/bin/bash --login +h -c "cd installer;$*" |
|
38 | 38 |
|
39 | 39 |
exit 0 |
... | ... |
@@ -21,7 +21,6 @@ source function.inc # commonn functions |
21 | 21 |
LOGFILE=/var/log/"${PRGNAME}-${LOGFILE}" # set log file name |
22 | 22 |
#LOGFILE=/dev/null # uncomment to disable log file |
23 | 23 |
ARCH=$(uname -m) # host architecture |
24 |
-RPMDIR=${PARENT} # where rpms are stored on the host system |
|
25 | 24 |
[ ${EUID} -eq 0 ] || fail "${PRGNAME}: Need to be root user: FAILURE" |
26 | 25 |
> ${LOGFILE} # clear/initialize logfile |
27 | 26 |
|
... | ... |
@@ -72,8 +71,7 @@ EOF |
72 | 72 |
sed -i "s/UUID_PLACEHOLDER/$UUID/" "$BUILDROOT"/boot/grub/grub.cfg > ${LOGFILE} |
73 | 73 |
|
74 | 74 |
#Cleanup the workspace directory |
75 |
-#find "$BUILDROOT"/{,usr/}{lib,bin,sbin} -type f -exec strip --strip-debug --strip-unneeded '{}' ';' > /dev/null 2>&1 |
|
76 | 75 |
rm -rf "$BUILDROOT"/tools |
77 |
-rm -rf "$BUILDROOT""$PARENT" |
|
76 |
+rm -rf "$BUILDROOT"/RPMS |
|
78 | 77 |
|
79 | 78 |
#umount $BUILDROOT |
... | ... |
@@ -19,7 +19,6 @@ PRGNAME=${0##*/} # script name minus the path |
19 | 19 |
LOGFILE=/var/log/"${PRGNAME}-${LOGFILE}" # set log file name |
20 | 20 |
#LOGFILE=/dev/null # uncomment to disable log file |
21 | 21 |
[ ${EUID} -eq 0 ] || fail "${PRGNAME}: Need to be root user: FAILURE" |
22 |
-[ -z ${PARENT} ] && fail "${PRGNAME}: PARENT not set: FAILURE" |
|
23 | 22 |
[ -z ${BUILDROOT} ] && fail "${PRGNAME}: BUILDROOT not set: FAILURE" |
24 | 23 |
if mountpoint ${BUILDROOT}/run >/dev/null 2>&1; then umount ${BUILDROOT}/run; fi |
25 | 24 |
if mountpoint ${BUILDROOT}/sys >/dev/null 2>&1; then umount ${BUILDROOT}/sys; fi |
... | ... |
@@ -88,6 +88,7 @@ if __name__ == '__main__': |
88 | 88 |
parser.add_option("-v", "--vmdk-path", dest="vmdk_path") |
89 | 89 |
parser.add_option("-w", "--working-directory", dest="working_directory", default="/mnt/photon-root") |
90 | 90 |
parser.add_option("-t", "--tools-path", dest="tools_path", default="../stage") |
91 |
+ parser.add_option("-r", "--rpm-path", dest="rpm_path", default="../stage/RPMS") |
|
91 | 92 |
parser.add_option("-f", "--force", action="store_true", dest="force", default=False) |
92 | 93 |
parser.add_option("-p", "--package-list-file", dest="package_list_file", default="package_list.json") |
93 | 94 |
|
... | ... |
@@ -164,12 +165,12 @@ if __name__ == '__main__': |
164 | 164 |
config['working_directory'] = options.working_directory |
165 | 165 |
|
166 | 166 |
# Run the installer |
167 |
- package_installer = Installer(config, local_install = not (options.iso_path or options.vmdk_path), tools_path = options.tools_path, rpm_path = options.tools_path + "/RPMS", log_path = options.tools_path + "/LOGS") |
|
167 |
+ package_installer = Installer(config, tools_path = options.tools_path, rpm_path = options.rpm_path, log_path = options.tools_path + "/LOGS") |
|
168 | 168 |
package_installer.install(None) |
169 | 169 |
|
170 | 170 |
# Making the iso if needed |
171 | 171 |
if config['iso_system']: |
172 |
- process = subprocess.Popen(['./mk-install-iso.sh', '-w', options.working_directory, options.iso_path, options.tools_path, options.package_list_file]) |
|
172 |
+ process = subprocess.Popen(['./mk-install-iso.sh', '-w', options.working_directory, options.iso_path, options.tools_path, options.rpm_path, options.package_list_file]) |
|
173 | 173 |
retval = process.wait() |
174 | 174 |
|
175 | 175 |
# Cleaning up for vmdk |
... | ... |
@@ -31,14 +31,17 @@ class ProgressBar(object): |
31 | 31 |
self.panel.hide() |
32 | 32 |
panel.update_panels() |
33 | 33 |
|
34 |
- def initialize(self, num_items, init_message): |
|
35 |
- self.num_items = num_items |
|
34 |
+ def initialize(self, init_message): |
|
35 |
+ self.num_items = 0 |
|
36 | 36 |
self.message = init_message |
37 | 37 |
self.time_elapsed = 0 |
38 | 38 |
self.time_remaining = 60 |
39 | 39 |
self.timer = threading.Timer(1, self.update_time) |
40 | 40 |
self.timer.start() |
41 | 41 |
|
42 |
+ def update_num_items(self, num_items): |
|
43 |
+ self.num_items = num_items |
|
44 |
+ |
|
42 | 45 |
def update_message(self, message): |
43 | 46 |
self.message = message |
44 | 47 |
self.render_message() |
... | ... |
@@ -66,6 +69,8 @@ class ProgressBar(object): |
66 | 66 |
self.window.refresh() |
67 | 67 |
|
68 | 68 |
def render_progress(self): |
69 |
+ if self.num_items == 0: |
|
70 |
+ return |
|
69 | 71 |
completed = self.progress * 100 / self.num_items |
70 | 72 |
completed_width = completed * self.width / 100 |
71 | 73 |
completed_str, remaining_str = self.get_spaces(completed_width, self.width, completed) |