Compare commits

...

8 Commits

Author SHA1 Message Date
c90a1a4326
wip 2019-04-22 14:21:38 +02:00
d7e5ace890
wip 2019-04-22 12:04:59 +02:00
aaf3f7d749
added gitea release 2019-04-22 01:50:09 +02:00
945bc916db
a3 2019-04-22 01:39:33 +02:00
3853b5c9f5
a3 2019-04-21 17:40:20 +02:00
401d626904
a2 2019-04-20 15:45:29 +02:00
ac18fd839b
a1 2019-04-20 15:42:52 +02:00
fd5c509170
aaa 2019-04-20 14:53:27 +02:00
17 changed files with 567 additions and 0 deletions

26
.drone.yml Normal file
View File

@ -0,0 +1,26 @@
# workspace:
# base: /build
# path: /
pipeline:
build:
image: registry.libreschool.org/libreschool-automation/libreschool-iso-builder:latest
source_iso_url: http://repo.libreschool.org/nethserver/iso/nethserver-7.6.1810-x86_64.iso
output_iso: libreschool-7.6-x86_64.iso
when:
event: [ push, tag ]
# THAT'S A BAD IDEA
gitea_release:
group: deploy
image: plugins/gitea-release
files: libreschool-7.6-x86_64.iso
checksum:
- md5
- sha1
- sha256
- sha512
secrets: [ gitea_token ]
base_url: https://git.libreschool.org
when:
event: tag

View File

@ -1,3 +1,5 @@
# libreschool-iso
[![Build Status](https://drone.libreschool.org/api/badges/paspo/libreschool-iso/status.svg)](https://drone.libreschool.org/paspo/libreschool-iso)
This tool automates the generation of LibreSchool iso

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

5
packages.list Normal file
View File

@ -0,0 +1,5 @@
http://repo.libreschool.org/nethserver/6/base/x86_64/Packages/libreschool-release-1.0-1.noarch.rpm
http://mirror.centos.org/centos/7/os/x86_64/Packages/python-jinja2-2.7.2-2.el7.noarch.rpm
http://repo.libreschool.org/nethserver/6/base/x86_64/Packages/startpage-0.9-3.ns6.noarch.rpm
http://mirror.centos.org/centos/7/os/x86_64/Packages/python-babel-0.9.6-8.el7.noarch.rpm
http://mirror.centos.org/centos/7/os/x86_64/Packages/python-markupsafe-0.11-10.el7.x86_64.rpm

54
root/EFI/BOOT/grub.cfg Normal file
View File

@ -0,0 +1,54 @@
set default="0"
function load_video {
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
insmod all_video
}
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set timeout=60
### END /etc/grub.d/00_header ###
search --no-floppy --set=root -l 'nethserver'
### BEGIN /etc/grub.d/10_linux ###
menuentry 'LibreSchool interactive installation' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=nethserver inst.ks=hd:LABEL=nethserver:/ks/interactive inst.nodmraid
initrdefi /images/pxeboot/initrd.img
}
submenu 'Other LibreSchool installation methods' {
menuentry 'Unattended installation - WARNING: existing disk data will be lost!' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=nethserver inst.ks=hd:LABEL=nethserver:/ks/unattended inst.nodmraid
initrdefi /images/pxeboot/initrd.img
}
menuentry 'Manual installation - WARNING: existing disk data will be lost!' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=nethserver inst.ks=hd:LABEL=nethserver:/ks/manual inst.nodmraid
initrdefi /images/pxeboot/initrd.img
}
}
menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=nethserver quiet
initrdefi /images/pxeboot/initrd.img
}
menuentry 'Test this media & install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=nethserver rd.live.check quiet
initrdefi /images/pxeboot/initrd.img
}
submenu 'Troubleshooting -->' {
menuentry 'Install CentOS 7 in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=nethserver xdriver=vesa nomodeset quiet
initrdefi /images/pxeboot/initrd.img
}
menuentry 'Rescue a CentOS system' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=nethserver rescue quiet
initrdefi /images/pxeboot/initrd.img
}
}

112
root/isolinux/isolinux.cfg Normal file
View File

@ -0,0 +1,112 @@
default vesamenu.c32
#prompt 1
#default interactive
timeout 600
display boot.msg
menu background splash.jpg
menu title LibreSchool 7.6
menu vshift 0
menu rows 6
menu helpmsgrow 12
menu clear
menu color border 0 #ffffffff #00000000 none
menu color sel 7 #ff1d247c #ffffffff none
menu color title 0 #ffffffff #00000000 none
menu color tabmsg 0 #ffffffff #00000000 none
menu color unsel 0 #ffffffff #00000000 none
menu color help 0 #ffffffff #00000000 none
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label interactive
menu label LibreSchool interactive installation
menu default
text help
WARNING! Existing disk data will be lost!
Choose common installation options like keyboard,
time zone, RAID and network.
endtext
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=nethserver inst.ks=hd:LABEL=nethserver:/ks/interactive inst.nodmraid
menu begin
menu title Other LibreSchool installation methods
label unattended
menu label Unattended installation
text help
WARNING! Existing disk data will be lost!
Fully automated installation with default values:
* keyboard us
* timezone UTC
* root password LibreSchool,1234
* DHCP network configuration
endtext
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=nethserver quiet inst.ks=hd:LABEL=nethserver:/ks/unattended inst.nodmraid
label manual
menu label Manual installation
text help
Customize storage and network parameters.
endtext
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=nethserver quiet inst.ks=hd:LABEL=nethserver:/ks/manual inst.nodmraid
menu end
menu begin
menu title Standard CentOS installation
label linux
menu label Install or upgrade an existing system
text help
Standard CentOS installation, fully customizable.
endtext
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=nethserver quiet
label vesa
menu label Install system with basic video driver
text help
Standard CentOS installation compatible with all graphic controllers.
endtext
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=nethserver xdriver=vesa nomodeset quiet
menu end
menu begin Tools
menu title Tools
label rescue
menu label Rescue installed system
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=nethserver rescue quiet
label memtest86
menu label Memory test
kernel memtest
append -
label hdt
menu label Hardware Detection Tool
text help
Check hardware with the Hardware Detection Tool
endtext
kernel hdt.c32
menu end
menu separtor
label local
menu label Boot from local drive
localboot 0xffff

BIN
root/isolinux/splash.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

148
root/ks/interactive Executable file
View File

@ -0,0 +1,148 @@
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
%pre
# eval options
set -- `cat /proc/cmdline`
for I in $*; do case "$I" in *=*) eval $I;; esac; done
# Determine how many drives we have
if [ -z "$disks" ]; then
disks=()
tmp=( $(list-harddrives | cut -d' ' -f 1) )
for d in "${tmp[@]}"
do
if [[ $d == md* ]]; then
# skip md raid devices
continue
fi
mount | grep -q /dev/$d
if [ $? -gt 0 ]; then
disks+=($d)
fi
done
numd=${#disks[@]}
d1=${disks[0]}
d2=${disks[1]}
else
d1=`echo $disks | awk 'BEGIN { FS = "," } ; { print $1 }'`
d2=`echo $disks | awk 'BEGIN { FS = "," } ; { print $2 }'`
if [ -z "$d2" ]; then
numd=1
else
numd=2
fi
fi
if [ $numd -lt 2 ] || [ $raid = "none" ] ; then
cat <<EOF >> /tmp/part-include
# 1 disk, no raid
part /boot --fstype xfs --size 1024
part pv.1 --asprimary --ondisk=$d1 --size=5000 --grow
EOF
echo "bootloader --location=mbr " > /tmp/bootloader-include
elif [ $numd -ge 2 ]; then
cat <<EOF >> /tmp/part-include
# 2 disks, raid 1
part raid.00 --asprimary --ondisk=$d1 --size=1024 # boot
part raid.01 --asprimary --ondisk=$d1 --size=5000 --grow# root
part raid.10 --asprimary --ondisk=$d2 --size=1024 # boot
part raid.11 --asprimary --ondisk=$d2 --size=5000 --grow# root
raid /boot --device=md1 --fstype='xfs' --level=RAID1 raid.00 raid.10
raid pv.1 --device=md2 --level=RAID1 raid.01 raid.11
EOF
echo "bootloader --location=mbr " > /tmp/bootloader-include
fi
# enable dhcp on all network interfaces
for net in `find /sys/class/net/ -mindepth 1 ! -name lo | cut -d '/' -f5`; do
echo "network --activate --onboot=yes --bootproto=dhcp --device=$net" --nameserver=8.8.8.8 >>/tmp/network-include
done
# set encrypted fs
if [ -z $fspassword ]; then
echo "logvol / --fstype xfs --name=lv_root --vgname=VolGroup --percent=100" > /tmp/rootfs-include
else
echo "logvol / --fstype xfs --name=lv_root --vgname=VolGroup --percent=100 --encrypted --passphrase=$fspassword" > /tmp/rootfs-include
fi
%end
#
# Selected packages
#
%packages
@nethserver-iso
@core
startpage
libreschool-release
%end
repo --name=nethserver --baseurl=file:///run/install/repo/extras
repo --name=libreschool --baseurl=file:///run/install/repo/libreschool
# Install OS instead of upgrade
install
# Network information
%include /tmp/network-include
firewall --disable
# System language
lang en_US
# SELinux configuration
selinux --permissive
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=debug
# System bootloader configuration
%include /tmp/bootloader-include
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
reqpart --add-boot
# Disk partitioning information
%include /tmp/part-include
# LVM
volgroup VolGroup pv.1
logvol swap --fstype swap --name=lv_swap --vgname=VolGroup --recommended --maxsize=6000
%include /tmp/rootfs-include
# Reboot and eject CD
reboot --eject
%post --interpreter /bin/bash
exec 1>/root/kickstart-post.log 2>&1
echo "Enabling first-boot..."
touch /var/spool/first-boot
echo "Importing RPM GPG keys..."
rpm --import /etc/pki/rpm-gpg/*
echo "Enable nethserver units..."
systemctl enable nethserver-system-init
systemctl enable nethserver-config-network
systemctl disable NetworkManager firewalld
echo "Disable kdump..."
systemctl disable kdump
echo "Forcing system time to UTC ..."
sed -i 's/LOCAL/UTC/' /etc/adjtime
if [ -f /etc/nethserver-release ]; then
echo "Fix /etc/issue..."
cp -f /etc/nethserver-release /etc/issue
echo -e 'Kernel \\r on an \\m\n' >> /etc/issue
echo 'Access the web interface at the following URLs:' >> /etc/issue
ip -o -4 addr | tr -s ' /' $'\t' | cut -f 4 | grep -vF 127.0.0.1 | xargs -I IP -- echo https://IP:980 >> /etc/issue
echo >> /etc/issue
fi
%end

58
root/ks/manual Executable file
View File

@ -0,0 +1,58 @@
#platform=x86, AMD64, or Intel EM64T
#version=RHEL7
#
# Selected packages
#
%packages
@nethserver-iso
@core
startpage
libreschool-release
%end
repo --name=nethserver --baseurl=file:///run/install/repo/extras
repo --name=libreschool --baseurl=file:///run/install/repo/libreschool
# Install OS instead of upgrade
install
firewall --disable
# System language
lang en_US
# SELinux configuration
selinux --permissive
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=debug
%post --interpreter /bin/bash
exec 1>/root/kickstart-post.log 2>&1
echo "Enabling first-boot..."
touch /var/spool/first-boot
echo "Importing RPM GPG keys..."
rpm --import /etc/pki/rpm-gpg/*
echo "Enable nethserver units..."
systemctl enable nethserver-system-init
systemctl enable nethserver-config-network
systemctl disable NetworkManager firewalld
echo "Disable kdump..."
systemctl disable kdump
echo "Forcing system time to UTC ..."
sed -i 's/LOCAL/UTC/' /etc/adjtime
if [ -f /etc/nethserver-release ]; then
echo "Fix /etc/issue..."
cp -f /etc/nethserver-release /etc/issue
echo -e 'Kernel \\r on an \\m\n' >> /etc/issue
echo 'Access the web interface at the following URLs:' >> /etc/issue
ip -o -4 addr | tr -s ' /' $'\t' | cut -f 4 | grep -vF 127.0.0.1 | xargs -I IP -- echo https://IP:980 >> /etc/issue
echo >> /etc/issue
fi
%end

162
root/ks/unattended Executable file
View File

@ -0,0 +1,162 @@
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
%pre
# eval options
set -- `cat /proc/cmdline`
for I in $*; do case "$I" in *=*) eval $I;; esac; done
# Determine how many drives we have
if [ -z "$disks" ]; then
disks=()
tmp=( $(list-harddrives | cut -d' ' -f 1) )
for d in "${tmp[@]}"
do
if [[ $d == md* ]]; then
# skip md raid devices
continue
fi
mount | grep -q /dev/$d
if [ $? -gt 0 ]; then
disks+=($d)
fi
done
numd=${#disks[@]}
d1=${disks[0]}
d2=${disks[1]}
else
d1=`echo $disks | awk 'BEGIN { FS = "," } ; { print $1 }'`
d2=`echo $disks | awk 'BEGIN { FS = "," } ; { print $2 }'`
if [ -z "$d2" ]; then
numd=1
else
numd=2
fi
fi
if [ $numd -lt 2 ] || [ $raid = "none" ] ; then
cat <<EOF >> /tmp/part-include
# 1 disk, no raid
part /boot --fstype xfs --size 1024
part pv.1 --asprimary --ondisk=$d1 --size=5000 --grow
EOF
echo "bootloader --location=mbr " > /tmp/bootloader-include
elif [ $numd -ge 2 ]; then
cat <<EOF >> /tmp/part-include
# 2 disks, raid 1
part raid.00 --asprimary --ondisk=$d1 --size=1024 # boot
part raid.01 --asprimary --ondisk=$d1 --size=5000 --grow # root
part raid.10 --asprimary --ondisk=$d2 --size=1024 # boot
part raid.11 --asprimary --ondisk=$d2 --size=5000 --grow # root
raid /boot --device=md1 --fstype='xfs' --level=RAID1 raid.00 raid.10
raid pv.1 --device=md2 --level=RAID1 raid.01 raid.11
EOF
echo "bootloader --location=mbr " > /tmp/bootloader-include
fi
# enable dhcp on all network interfaces
for net in `find /sys/class/net/ -mindepth 1 ! -name lo | cut -d '/' -f5`; do
echo "network --activate --onboot=yes --bootproto=dhcp --device=$net" >>/tmp/network-include
done
echo "network --nameserver=8.8.8.8 --hostname=localhost.localdomain" >> /tmp/network-include
# set keyboard
if [ -z $keyboard ]; then
keyboard="keyboard --vckeymap=us --xlayouts='us'"
fi
echo "keyboard --vckeymap=$keyboard --xlayouts='$keyboard'" > /tmp/keyboard-include
# set timezone
if [ -z $timezone ]; then
timezone="--utc UTC"
fi
echo "timezone $timezone" > /tmp/timezone-include
# set encrypted fs
if [ -z $fspassword ]; then
echo "logvol / --fstype xfs --name=lv_root --vgname=VolGroup --percent=100" > /tmp/rootfs-include
else
echo "logvol / --fstype xfs --name=lv_root --vgname=VolGroup --percent=100 --encrypted --passphrase=$fspassword" > /tmp/rootfs-include
fi
%end
#
# Selected packages
#
%packages
@nethserver-iso
@core
%end
repo --name=nethserver --baseurl=file:///run/install/repo/extras
repo --name=libreschool --baseurl=file:///run/install/repo/libreschool
# Install OS instead of upgrade
install
# Network information
%include /tmp/network-include
firewall --disable
# Root password
rootpw --plaintext LibreSchool,1234
# System keyboard
%include /tmp/keyboard-include
# System language
lang en_US
# SELinux configuration
selinux --permissive
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=debug
# System timezone
%include /tmp/timezone-include
# System bootloader configuration
%include /tmp/bootloader-include
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
reqpart --add-boot
# Disk partitioning information
%include /tmp/part-include
# LVM
volgroup VolGroup pv.1
logvol swap --fstype swap --name=lv_swap --vgname=VolGroup --recommended --maxsize=6000
%include /tmp/rootfs-include
# Reboot and eject CD
reboot --eject
%post --interpreter /bin/bash
exec 1>/root/kickstart-post.log 2>&1
echo "Enabling first-boot..."
touch /var/spool/first-boot
echo "Importing RPM GPG keys..."
rpm --import /etc/pki/rpm-gpg/*
echo "Enable nethserver units..."
systemctl enable nethserver-system-init
systemctl enable nethserver-config-network
systemctl disable NetworkManager firewalld
echo "Disable kdump..."
systemctl disable kdump
if [ -f /etc/nethserver-release ]; then
echo "Fix /etc/issue..."
cp -f /etc/nethserver-release /etc/issue
echo -e 'Kernel \\r on an \\m\n' >> /etc/issue
echo 'Access the web interface at the following URLs:' >> /etc/issue
ip -o -4 addr | tr -s ' /' $'\t' | cut -f 4 | grep -vF 127.0.0.1 | xargs -I IP -- echo https://IP:980 >> /etc/issue
echo >> /etc/issue
fi
%end