-
Notifications
You must be signed in to change notification settings - Fork 982
/
debian.rb
92 lines (76 loc) · 2.21 KB
/
debian.rb
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
class Debian < Operatingsystem
PXEFILES = {:kernel => "linux", :initrd => "initrd.gz"}
def pxedir(medium_provider = nil)
if is_subiquity? # support Ubuntu 22.04, which drops legacy_image support
'casper'
elsif (guess_os == 'ubuntu' && major.to_i >= 20) # support ubuntu focal(20), which moved pxe files to legacy_image
'dists/$release/main/installer-$arch/current/legacy-images/netboot/' + guess_os + '-installer/$arch'
else
'dists/$release/main/installer-$arch/current/images/netboot/' + guess_os + '-installer/$arch'
end
end
def preseed_server(medium_provider)
medium_provider.medium_uri.select(:host, :port).compact.join(':')
end
def preseed_path(medium_provider)
medium_provider.medium_uri.select(:path, :query).compact.join('?')
end
def boot_file_sources(medium_provider, &block)
super do |vars|
vars = yield(vars) if block_given?
transform_vars(vars)
end
end
def available_loaders
self.class.all_loaders
end
def pxe_type
"preseed"
end
# Does this OS family use release_name in its naming scheme
def use_release_name?
true
end
# Helper text shown next to release name (do not use i18n)
def release_name_help
'bullseye, focal, buster, bionic, stretch, xenial...'
end
def display_family
"Debian"
end
def shorten_description(description)
return "" if description.blank?
s = description.dup
s.gsub!('GNU/Linux', '')
s.gsub!(/\(.+?\)/, '')
s.squeeze! " "
s.strip!
s += '.' + minor unless minor.blank? || s.include?('.')
s.presence || description
end
def pxe_file_names(medium_provider)
if is_subiquity?
{
kernel: 'vmlinuz',
initrd: 'initrd',
}
else
super
end
end
private
# tries to guess if this an ubuntu or a debian os
def guess_os
(name =~ /ubuntu/i) ? "ubuntu" : "debian"
end
def is_subiquity?
return false if guess_os != "ubuntu"
return false if major.to_i < 20
return false if major.to_i == 20 && minor.to_i <= 2
true # Ubuntu release 20.04.3 or newer
end
def transform_vars(vars)
vars[:arch] = vars[:arch].sub('x86_64', 'amd64')
vars[:arch] = vars[:arch].sub('aarch64', 'arm64')
end
end