aboutsummaryrefslogtreecommitdiff
blob: a676f23eabcd13687084e427acd0c347763eb7cb (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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
#!/bin/bash

# called by dracut
check() {
    if [[ -e $moddir/cinit_pre-mount.sh ]]; then
    {
        return 0
    }
    else
    {
        return 1
    }
    fi
}

# called by dracut
install() {

    # Install packages
    inst_multiple chroot chown chmod ls sed awk mount ls ln umount tail
    inst_multiple cp mv busybox rsync dmesg findmnt dirname head
    inst_multiple tar bash bzip2 clear scp lsblk tee sed awk basename sync
    inst_multiple fusermount strace wipefs rm grep ps uname du find uname fdisk

    # test
    inst_multiple vim nano vi sensors ssh sshd
    inst_simple "/etc/ssh/ssh_config" "/etc/ssh/ssh_config"
    inst_simple "/etc/ssh/sshd_config" "/etc/ssh/sshd_config"

    # Network packages
    _ct_netmod() {
        inst_multiple dhclient ping ping6 netstat netselect dhcpcd arping ifconfig ip

        # Install libs for the dns functions
        inst_simple "/lib64/libnss_dns.so.2" "/lib64/libnss_dns.so.2"
        inst_simple "/lib64/libnss_files.so.2" "/lib64/libnss_files.so.2"
        inst_simple "/lib64/ld-linux-x86-64.so.2" "/lib64/ld-linux-x86-64.so.2"
        inst_simple "/lib64/libresolv.so.2" "/lib64/libresolv.so.2"
        inst_simple "/lib64/libc.so.6" "/lib64/libc.so.6"
        inst_simple "/lib64/libmount.so.1" "/lib64/libmount.so.1"
        inst_simple "/lib64/libblkid.so.1" "/lib64/libblkid.so.1"
        inst_simple "/lib64/libuuid.so.1" "/lib64/libuuid.so.1"
        inst_simple "/lib64/ld-linux-x86-64.so.2" "/lib64/ld-linux-x86-64.so.2"
        inst_simple "/lib64/libext2fs.so.2" "/lib64/libext2fs.so.2"
        inst_simple "/lib64/libcom_err.so.2" "/lib64/libcom_err.so.2"
        inst_simple "/lib64/libe2p.so.2" "/lib64/libe2p.so.2"
        inst_simple "/lib64/libpthread.so.0" "/lib64/libpthread.so.0"
        inst_simple "/lib64/libdl.so.2" "/lib64/libdl.so.2"
        inst_simple "/lib64/libz.so.1" "/lib64/libz.so.1"
        inst_simple "/lib64/liblzo2.so.2" "/lib64/liblzo2.so.2"
        inst_simple "/usr/lib64/libfdisk.so.1.1.0" "/usr/lib64/libfdisk.so.1.1.0"
        inst_simple "/lib64/libsmartcols.so.1" "/lib64/libsmartcols.so.1"
        inst_simple "/lib64/libreadline.so.6" "/lib64/libreadline.so.6"
        inst_simple "/lib64/libncurses.so.6" "/lib64/libncurses.so.6"
        inst_simple "/usr/lib64/libncursesw.so" "/usr/lib64/libncursesw.so"
        inst_simple "/usr/lib64/libncursesw.so" "/usr/lib64/libncursesw.so"
        inst_simple "/usr/lib64/libmagic.so.1" "/usr/lib64/libmagic.so.1"
        inst_simple "/lib64/libncursesw.so.6" "/lib64/libncursesw.so.6"
        inst_simple "/lib64/libnss_files.so.2" "/lib64/libnss_files.so.2"
        inst_simple "/lib64/libattr.so.1" "/lib64/libattr.so.1"
        inst_simple "/lib64/libacl.so.1" "/lib64/libacl.so.1"
        inst_simple "/usr/lib64/libpopt.so.0" "/usr/lib64/libpopt.so.0"
        inst_simple "/lib64/libnss_compat.so.2" "/lib64/libnss_compat.so.2"
        inst_simple "/lib64/libnsl.so.1" "/lib64/libnsl.so.1"
        inst_simple "/lib64/libnss_nis.so.2" "/lib64/libnss_nis.so.2"
        inst_simple "/lib64/libnss_dns.so.2" "/lib64/libnss_dns.so.2"
        inst_simple "/lib64/libnss_files.so.2" "/lib64/libnss_files.so.2"
        inst_simple "/lib64/libresolv.so.2" "/lib64/libresolv.so.2"
        inst_simple "/lib64/ld-linux-x86-64.so.2" "/lib64/ld-linux-x86-64.so.2"

    }

    # Fsck
    inst_multiple fsck fsck.ext2 fsck.ext4 fsck.ext3 fsck.ext4dev fsck.vfat e2fsck

    # Labels
    inst_multiple e2label mlabel swaplabel

    # Modules
    inst_multiple insmod rmmod modprobe lsmod

    # File systems packages
    inst_multiple mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.btrfs mkfs.vfat
    
    # Create controller directory, rfs, bfs and workdir
    mkdir -m 0755 -p "${initdir}/config.d/confdir"
    mkdir -m 0755 -p "${initdir}/usr/local/controller"
    mkdir -m 700 -p "${initdir}/root/.ssh"
    mkdir -m 0755 -p "${initdir}/mnt/rfs"
    mkdir -m 0755 -p "${initdir}/mnt/bfs"
    mkdir -m 0755 -p "${initdir}/mnt/etc_tmpfs"
    mkdir -m 0755 -p "${initdir}/mnt/tmp_tmpfs"
    mkdir -m 0755 -p "${initdir}/mnt/var_tmp_tmpfs"
    mkdir -m 0755 -p "${initdir}/mnt/workdir"
    mkdir -m 0755 -p "${initdir}/user-data/persistent"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/local"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/nfs"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/log"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/var"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/etc"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/local/root"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/local/home"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/local/data"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/local/mnt"
    mkdir -m 0755 -p "${initdir}/user-data/persistent/local/media"

    # Install scripts for the controller process
    inst_script "$moddir/functions/cchroot.sh" "/usr/local/controller/cchroot.sh"
    inst_script "$moddir/functions/net_script.sh" "/usr/local/controller/net_script.sh"
    inst_script "$moddir/functions/cbootflags.sh" "/usr/local/controller/cbootflags.sh"
    inst_script "$moddir/functions/cfunctions.sh" "/usr/local/controller/cfunctions.sh"
    inst_script "$moddir/functions/chealth.sh" "/usr/local/controller/chealth.sh"
    inst_script "$moddir/functions/cnetwork.sh" "/usr/local/controller/cnetwork.sh"
    inst_script "$moddir/functions/ccrevert_chroot.sh" "/usr/local/controller/ccrevert_chroot.sh"
    inst_script "$moddir/functions/ct_devices.sh" "/config.d/confdir/ct_devices.sh"
    inst_script "$moddir/functions/ct_fetch.sh" "/config.d/confdir/ct_fetch.sh"
    inst_script "$moddir/functions/ct_netf.sh" "/config.d/confdir/ct_netf.sh"
    inst_script "$moddir/functions/ct_newsys.sh" "/config.d/confdir/ct_newsys.sh"
    inst_script "$moddir/functions/ct_prelim.sh" "/config.d/confdir/ct_prelim.sh"
    inst_script "$moddir/functions/ct_config.sh" "/config.d/confdir/ct_config.sh"

    
    # Install configuration files for controller

    # SSH Configuration
    # To enable ssh, please include your priv key at "${CCONFD}/controller/modules/files/ssh/cssh_priv"
    mkdir -m 0755 -p "${initdir}/usr/local/controller/ssh"
    # INSTALL SSH
    inst_simple ssh 
    inst_simple sshd

    # CONFIGURATION FILE
    inst_simple "$moddir/files/controller_ssh/cssh_config" "/etc/ssh/ssh_config"
    inst_simple "$moddir/files/controller_ssh/cssh_config" "/usr/local/controller/ssh/ssh_config.backup"

    # KNOWN HOSTS
    inst_simple "$moddir/files/controller_ssh/cknown_hosts" "/root/.ssh/known_hosts"
    inst_simple "$moddir/files/controller_ssh/cknown_hosts" "/usr/local/controller/ssh/known_hosts.backup"

    # PRIVATE KEY (CLIENTS -> SERVER)
    inst_simple "$moddir/files/controller_ssh/cssh_priv" "/root/.ssh/ida_rsa"
    inst_simple "$moddir/files/controller_ssh/cssh_priv" "/usr/local/controller/ssh/ida_rsa.backup"
    
    # GPG
    mkdir -m 0755 -p "${initdir}/usr/local/controller/gpg"
    inst_simple gpg
    inst_simple "$moddir/files/controller_gpg/gpg_pub" "/usr/local/controller/gpg/gpg_pub"
    
    # SUMS
    inst_multiple md5sum sha224sum sha256sum sha384sum sha512sum 

    # FSTAB FILE FOR MOUNTING DRIVES ON INITRAMFS PHASE
    if [[ -e "$moddir/files/cfstab" ]]; then
        inst_simple "$moddir/files/cfstab" "/etc/fstab"
    fi

    # Install configuration files for the system
    inst_simple "$moddir/files/cdevname.info" "/config.d/cdevname.info"

    inst_simple "$moddir/files/system_configs/cnet" "/config.d/confdir/net"
    inst_simple "$moddir/files/system_configs/cconsolefont" "/config.d/confdir/consolefont"
    inst_simple "$moddir/files/system_configs/crunlevels" "/config.d/confdir/runlevels"
    inst_simple "$moddir/files/system_configs/cfstab.info" "/config.d/confdir/fstab.info"
    inst_simple "$moddir/files/system_configs/cgrub" "/config.d/confdir/grub"
    inst_simple "$moddir/files/system_configs/chostname" "/config.d/confdir/hostname"
    inst_simple "$moddir/files/system_configs/chosts" "/config.d/confdir/hosts"
    inst_simple "$moddir/files/system_configs/clocale.gen" "/config.d/confdir/locale.gen"
    inst_simple "$moddir/files/system_configs/cssh.pub" "/config.d/confdir/ssh.pub"
    inst_simple "$moddir/files/system_configs/csshd" "/config.d/confdir/sshd_config"
    inst_simple "$moddir/files/system_configs/csystem_links" "/config.d/confdir/system_links"

    # NETWORK
    mkdir -m 0755 -p "${initdir}/usr/local/unet"

    _ct_netmod

    # CUSTOM NETSCRIPT
    if [[ -e "${moddir}/unet/unet.conf" ]]; then
        _unetscript="$(cat ${moddir}/unet/unet.conf)"
        if [[ -e "${moddir}/unet/${_unetscript}" ]]; then
            inst_hook pre-mount 08 "${moddir}/unet/${_unetscript}"
            inst_script "${moddir}/unet/${_unetscript}" "/usr/local/unet/unet.sh"
        fi
    fi

    # CUSTOM HOOK SCRIPTS
    mkdir -m 0755 -p "${initdir}/usr/local/uscripts"

    if [[ -e "${moddir}/uscripts/insthook" ]]; then
        while read s; do
                
                _tmp_hp="$(echo "$s" | awk -F ' ' '{print $1}')"
                _tmp_pr="$(echo "$s" | awk -F ' ' '{print $2}')"
                _tmp_scname="$(echo "$s" | awk -F ' ' '{print $3}')"
                
                if [[ -e "${moddir}/uscripts/${_tmp_scname}" ]]; then
                    eval inst_hook "${_tmp_hp}" "${_tmp_pr}" "${moddir}/uscripts/${_tmp_scname}"
                fi
        done < <(cat "${moddir}/uscripts/insthook")
    fi

    unset _crpt_cnt
    unset _tmp_hp
    unset _tmp_p
    unset _tmp_scname

    # KERNEL MODULES
    mkdir -m 0775 -p "${initdir}/etc/modprobe.d"

    if [[ -e "${moddir}/umod/umod.conf" ]]; then
        _umodname="$(cat "${moddir}/umod/umod.conf")"
        if [[ -e "${moddir}/umod/${_umodname}" ]]; then
            inst_simple "${moddir}/umod/${_umodname}" "/etc/modprobe.d/umod.conf"
        fi
    fi

    # Install the hookpoints for the controller process {here the process is defined}
    inst_hook pre-mount 08 "$moddir/init_script.sh"
    #inst_hook pre-mount 08 "$moddir/cinit_pre-mount.sh"
    #inst_hook mount 08 "$moddir/cinit_mount.sh"
    #inst_hook clean 08 "$moddir/cinit_clean.sh"

}

# called by dracut
installkernel() {
    # Include kernel modules
    hostonly='' instmods sr_mod
    hostonly='' instmods cdrom
    hostonly='' instmods sr_mod
    hostonly='' instmods sd_mod
    hostonly='' instmods radeon
    hostonly='' instmods ttm
    hostonly='' instmods drm_kms_helper
    hostonly='' instmods iTCO_wdt
    hostonly='' instmods iTCO_vendor_support
    hostonly='' instmods ppdev
    hostonly='' instmods snd_hda_codec_realtek
    hostonly='' instmods snd_hda_codec_generic
    hostonly='' instmods snd_hda_codec_hdmi
    hostonly='' instmods coretemp
    hostonly='' instmods drm
    hostonly='' instmods radeon
    hostonly='' instmods kvm_intel
    hostonly='' instmods snd_hda_intel
    hostonly='' instmods snd_hda_codec
    hostonly='' instmods ata_generic
    hostonly='' instmods pata_acpi
    hostonly='' instmods kvm_intel
    hostonly='' instmods snd_hda_core
    hostonly='' instmods ahci
    hostonly='' instmods snd_hwdep
    hostonly='' instmods syscopyarea
    hostonly='' instmods i2c_i801
    hostonly='' instmods ata_piix
    hostonly='' instmods r8169
    hostonly='' instmods libahci
    hostonly='' instmods pata_jmicron
    hostonly='' instmods lpc_ich
    hostonly='' instmods irqbypass
    hostonly='' instmods kvm
    hostonly='' instmods mfd_core
    hostonly='' instmods mii
    hostonly='' instmods sysfillrect
    hostonly='' instmods snd_pcm
    hostonly='' instmods crc32c_intel
    hostonly='' instmods snd_timer
    hostonly='' instmods pcspkr
    hostonly='' instmods serio_raw
    hostonly='' instmods snd
    hostonly='' instmods sysimgblt
    hostonly='' instmods fb_sys_fops
    hostonly='' instmods i2c_algo_bit
    hostonly='' instmods i2c_core
    hostonly='' instmods parport_pc
    hostonly='' instmods soundcore
    hostonly='' instmods parport
    hostonly='' instmods ppdev
    hostonly='' instmods dm_multipath
    hostonly='' instmods sunrpc
    hostonly='' instmods dm_mirror
    hostonly='' instmods dm_region_hash
    hostonly='' instmods dm_log
    hostonly='' instmods dm_mod
    hostonly='' instmods dax
    
    #hostonly='' instmods jbd2
    #hostonly='' instmods fscrypto
    #hostonly='' instmods mbcache
    #hostonly='' instmods ext4
    #hostonly='' instmods btrfs
    #hostonly='' instmods vfat
    #hostonly='' instmods fat
    #hostonly='' instmods xor

    #instmods "=drivers"
    #instmods "=arch"
    #instmods "=crypto"
    #instmods "=fs"
    #instmods "=lib"
    #instmods "=mm"
    #instmods "=net"
    #instmods "=sound"
}