237 lines
7.0 KiB
Bash
237 lines
7.0 KiB
Bash
#!/bin/bash
|
|
|
|
set -x
|
|
set -e
|
|
export HOME=/root
|
|
export LC_ALL=C
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
export DEBOOT_STRAP_URL=http://mirror.raiolanetworks.com/ubuntu/
|
|
|
|
source buildlib.sh
|
|
|
|
function configure_sddm_and_openbox() {
|
|
# Allow root login
|
|
sed -ie 's/^\(.*root quiet_success\)$/#\1/' /etc/pam.d/sddm
|
|
|
|
# Start pcman for the Desktop
|
|
|
|
#mkdir -p /root/.config/autostart/
|
|
# cat <<EOF > /root/.config/autostart/pcmanfm.desktop
|
|
mkdir -p /etc/xdg/openbox/
|
|
cat <<EOF > /etc/xdg/openbox/autostart
|
|
pcmanfm --desktop &
|
|
EOF
|
|
|
|
# Create desktop launcher for calamares
|
|
# mkdir -p /root/Desktop
|
|
# cat <<EOF > /root/Desktop/opengnsys-installer.desktop
|
|
mkdir -p /etc/skel/Desktop
|
|
cat <<EOF > /etc/skel/Desktop/opengnsys-installer.desktop
|
|
[Desktop Entry]
|
|
Version=1.0
|
|
Name=Install OpenGnsys
|
|
Comment=Este es un acceso directo para ejecutar un script como root
|
|
Exec=/usr/local/bin/openGnsys-installer.sh
|
|
Icon=/usr/share/opengnsys/images/logo_ogw.png
|
|
Terminal=false
|
|
Type=Application
|
|
Categories=Utility;
|
|
|
|
EOF
|
|
# chmod +x /root/Desktop/opengnsys-installer.desktop
|
|
chmod +x /etc/skel/Desktop/opengnsys-installer.desktop
|
|
|
|
# Configure ssdm autologin
|
|
mkdir -p /etc/sddm.conf.d/
|
|
cat <<EOF > /etc/sddm.conf.d/autologin.conf
|
|
[Autologin]
|
|
User=og
|
|
Session=openbox
|
|
EOF
|
|
|
|
}
|
|
|
|
function set_pkg_configuration() {
|
|
echo "keyboard-configuration keyboard-configuration/layout select Spanish" | debconf-set-selections
|
|
echo "keyboard-configuration keyboard-configuration/variant select Spanish" | debconf-set-selections
|
|
echo "keyboard-configuration keyboard-configuration/xkb-keymap select es" | debconf-set-selections
|
|
}
|
|
|
|
function reconfigure_packages() {
|
|
reconfigure_locales
|
|
reconfigure_network_manager
|
|
}
|
|
|
|
function create_image() {
|
|
mkdir -p /image/{casper,isolinux,install}
|
|
cp /boot/vmlinuz-**-**-generic /image/casper/vmlinuz
|
|
cp /boot/initrd.img-**-**-generic /image/casper/initrd
|
|
wget --progress=dot https://memtest.org/download/v7.00/mt86plus_7.00.binaries.zip -O /image/install/memtest86.zip
|
|
unzip -p /image/install/memtest86.zip memtest64.bin > /image/install/memtest86+.bin
|
|
unzip -p /image/install/memtest86.zip memtest64.efi > /image/install/memtest86+.efi
|
|
rm -f /image/install/memtest86.zip
|
|
}
|
|
|
|
|
|
function configure_grub_menu() {
|
|
touch /image/ubuntu
|
|
cat <<EOF > /image/isolinux/grub.cfg
|
|
|
|
search --set=root --file /ubuntu
|
|
|
|
insmod all_video
|
|
|
|
set default="0"
|
|
set timeout=30
|
|
|
|
menuentry "Install Ubuntu FS" {
|
|
linux /casper/vmlinuz boot=casper quiet splash ---
|
|
initrd /casper/initrd
|
|
}
|
|
|
|
menuentry "Check disc for defects" {
|
|
linux /casper/vmlinuz boot=casper integrity-check quiet splash ---
|
|
initrd /casper/initrd
|
|
}
|
|
|
|
grub_platform
|
|
if [ "\$grub_platform" = "efi" ]; then
|
|
menuentry 'UEFI Firmware Settings' {
|
|
fwsetup
|
|
}
|
|
|
|
menuentry "Test memory Memtest86+ (UEFI)" {
|
|
linux /install/memtest86+.efi
|
|
}
|
|
else
|
|
menuentry "Test memory Memtest86+ (BIOS)" {
|
|
linux16 /install/memtest86+.bin
|
|
}
|
|
fi
|
|
EOF
|
|
# Generate manifest
|
|
dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee /image/casper/filesystem.manifest
|
|
cp -v /image/casper/filesystem.manifest /image/casper/filesystem.manifest-desktop
|
|
sed -i '/ubiquity/d' /image/casper/filesystem.manifest-desktop
|
|
sed -i '/casper/d' /image/casper/filesystem.manifest-desktop
|
|
sed -i '/discover/d' /image/casper/filesystem.manifest-desktop
|
|
sed -i '/laptop-detect/d' /image/casper/filesystem.manifest-desktop
|
|
sed -i '/os-prober/d' /image/casper/filesystem.manifest-desktop
|
|
|
|
# Create diskdefines
|
|
cat <<EOF > /image/README.diskdefines
|
|
#define DISKNAME Ubuntu from scratch
|
|
#define TYPE binary
|
|
#define TYPEbinary 1
|
|
#define ARCH amd64
|
|
#define ARCHamd64 1
|
|
#define DISKNUM 1
|
|
#define DISKNUM1 1
|
|
#define TOTALNUM 0
|
|
#define TOTALNUM0 1
|
|
EOF
|
|
|
|
}
|
|
|
|
function create_image2(){
|
|
cp /usr/lib/shim/shimx64.efi.signed.previous /image/isolinux/bootx64.efi
|
|
cp /usr/lib/shim/mmx64.efi /image/isolinux/mmx64.efi
|
|
cp /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed /image/isolinux/grubx64.efi
|
|
cd /image/isolinux && \
|
|
dd if=/dev/zero of=efiboot.img bs=1M count=10 && \
|
|
mkfs.vfat -F 16 efiboot.img && \
|
|
LC_CTYPE=C mmd -i efiboot.img efi efi/ubuntu efi/boot && \
|
|
LC_CTYPE=C mcopy -i efiboot.img ./bootx64.efi ::efi/boot/bootx64.efi && \
|
|
LC_CTYPE=C mcopy -i efiboot.img ./mmx64.efi ::efi/boot/mmx64.efi && \
|
|
LC_CTYPE=C mcopy -i efiboot.img ./grubx64.efi ::efi/boot/grubx64.efi && \
|
|
LC_CTYPE=C mcopy -i efiboot.img ./grub.cfg ::efi/ubuntu/grub.cfg && \
|
|
# Create a grub bios images
|
|
cd /image && \
|
|
grub-mkstandalone \
|
|
--format=i386-pc \
|
|
--output=isolinux/core.img \
|
|
--install-modules="linux16 linux normal iso9660 biosdisk memdisk search tar ls" \
|
|
--modules="linux16 linux normal iso9660 biosdisk search" \
|
|
--locales="" \
|
|
--fonts="" \
|
|
"boot/grub/grub.cfg=isolinux/grub.cfg"
|
|
|
|
cat /usr/lib/grub/i386-pc/cdboot.img isolinux/core.img > isolinux/bios.img
|
|
# find . -type f -print0 | xargs -0 md5sum | grep -v -e 'isolinux' > md5sum.txt
|
|
|
|
}
|
|
|
|
function install_mesa_repo() {
|
|
add-apt-repository ppa:kisak/kisak-mesa
|
|
apt -y update
|
|
}
|
|
|
|
|
|
function user_add() {
|
|
useradd -m -k /etc/skel -s /bin/bash -G sudo og
|
|
echo "og:og" | chpasswd
|
|
}
|
|
|
|
function set_root_passwd() {
|
|
ROOT_PASSWORD=$(cat /root_passwd)
|
|
echo "root:$ROOT_PASSWORD" | chpasswd
|
|
}
|
|
|
|
function add_og_to_sudoers() {
|
|
echo "Adding og to sudoers"
|
|
mkdir -p /etc/sudoers.d/
|
|
echo "og ALL=(ALL) NOPASSWD: /usr/bin/calamares" > /etc/sudoers.d/og
|
|
chmod 440 /etc/sudoers.d/og
|
|
}
|
|
|
|
function add_auditd_rules() {
|
|
echo "Adding auditd rules"
|
|
cat << EOF > /etc/audit/rules.d/audit.rules
|
|
-w /etc/sddm.conf -p wa -k sddm_watch
|
|
EOF
|
|
}
|
|
|
|
function delete_sddm_conf() {
|
|
cat <<EOF > /etc/systemd/system/delete-sddm-conf.service
|
|
[Unit]
|
|
Description=Eliminar /etc/sddm.conf antes de iniciar SDDM
|
|
Before=sddm.service
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=/bin/rm -f /etc/sddm.conf
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
systemctl enable delete-sddm-conf
|
|
|
|
}
|
|
|
|
## Main
|
|
echo "ubuntu-fs-live" > /etc/hostname
|
|
mount_proc_sys_dev
|
|
setup_sources_list
|
|
install_packages libterm-readline-gnu-perl systemd-sysv software-properties-common
|
|
setup_chroot
|
|
set_pkg_configuration
|
|
install_mesa_repo
|
|
install_non_interactive
|
|
install_packages sudo ubuntu-standard sudo casper dbus-bin mesa-utils mesa-vulkan-drivers discover isc-dhcp-client laptop-detect unzip os-prober network-manager net-tools wireless-tools wpagui locales grub-common grub-gfxpayload-lists grub-pc grub-pc-bin grub2-common grub-efi-amd64-signed shim-signed mtools binutils virtualbox-guest-utils virtualbox-guest-x11 python3-xdg
|
|
install_non_interactive sddm openbox plymouth calamares terminator pcmanfm yad qml-module*
|
|
install_no_recommends linux-image-generic auditd
|
|
set_root_passwd
|
|
configure_divert
|
|
remove_unneeded_packages
|
|
reconfigure_packages
|
|
configure_sddm_and_openbox
|
|
user_add
|
|
add_og_to_sudoers
|
|
add_auditd_rules
|
|
delete_sddm_conf
|
|
create_image
|
|
configure_grub_menu
|
|
create_image2
|
|
clean
|
|
|