Skype-Meeting 12. März 2011

Anwesende

Naums, Dirty Oerti, nufan, Xin

Start

Ich fasse jetzt mal zusammen, was bisher an Planung vorhanden ist:
Ziel ist es, ein Linux-System zu schaffen, dass es Anfängern ermöglicht, schnell und unkompliziert in die Entwicklung sozusagen einzusteigen, es gleichzeitig jedoch "Fortgeschrittenen" keine Steine in den Weg legt.
Das System soll möglichst minimal gehalten sein, aber voll ausbaubar sein und es soll natürlich nicht am nötigen Komfort fehlen.
Gleichzeitig soll das System (nat) stabil laufen. Außerdem soll es proggen.org "repräsentieren"

Ziele: Ubuntu basiertes Linux (Dirty: aktuelle, Naums: 10.04 LTS) Browser: Firefox? Pakete zunächst: Direkt von Ubuntu only, Metapakete von proggen.org Optik: kein Compiz (brauchen 3D Treiber), Naums schaut sich OpenBox (schnell, klein) als Fenstermanager an

Inhalt

Software-Center:

Braucht man das? Vielleicht eher Wiki-Seite. Firefox an apt-URLs lesen, Metaquellen von Proggen.org runterladen. Ergibt ein eigenes Software-Center Sinn? Entwickler interessiert nur bestimmte Pakete, die dann z.b: als Metapakete installiert werden könne. Eine grafische Anwahl mit einer graphische Oberfläche als Programm kann später erfolgen. Das erste Software-Center kann ein Link auf eine Wiki-Seite mit apt-URLs sein.

Auf CD

  • OpenBox auf XServer + FireFox ⇒ 200MB, Gnome wäre ähnlich (250MB)
  • C++ (build-essentials)
  • Compiler sollen mitdrauf und anschließend mit normalen Editoren arbeiten. GCC, G++, OpenJDK (default-jdk)
  • Python
  • PDF-Reader für EBooks (Evince)
  • Subversion
  • CUPS

Per Nachinstallation

  • IDEs sollten nachinstalliert werden (Einigkeit)
  • PHP, weil Apache/MySQL direkt angefragt wird und das wird zu groß.
  • LibreOffice
  • Spiele
  • MP3-Codecs
  • Flash (eventuell freie Variante auf CD?)
  • PulseAudio / gstreamer / ALSA
  • Test: valgrind / bless
  • Versionsverwaltung: Git, Mercurial, Bazaar

Wiki

  • Unterpunkte für die Einzelnen Programmierprojekte (GUI-Programmierung, Datenbanken, Spieleprogrammierung)
  • GUI-Programmierung → GTK → Apt-Links für die Bindings der einzelnen Sprachen und zum Tutorial

Basis - Skript

MUSS als root ausgeführt werden!

#!/bin/bash
 
CHROOT=CHROOT
IMAGE=image
 
 
 
mkdir ${CHROOT}
 
# Installing a barebones ubuntu into chroot
debootstrap --arch=i386 maverick ${CHROOT}
 
# Preparing to switch into chroot
mount --bind /dev ${CHROOT}/dev
cp /etc/hosts ${CHROOT}/etc/hosts
cp /etc/resolv.conf ${CHROOT}/etc/resolv.conf
cat > ${CHROOT}/etc/apt/sources.list<<EOF
`cat ${CONFIG}/sources.list` ############################################### TODO sources!
EOF
 
# Enter chroot
chroot ${CHROOT} /bin/bash<<EOF
mount none -t proc /proc
mount none -t sysfs /sys
mount none -t devpts /dev/pts
export HOME=/root
export LC_ALL=C
 
apt-get update
apt-get install --yes dbus
 
cp /sbin/initctl initctl.backup
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
 
# Install base system
################################################ TODO install ubiquity!!!!!!!
apt-get install --yes ubuntu-standard casper lupin-casper
apt-get install --yes discover laptop-detect os-prober
apt-get install --yes --no-install-recommends linux-generic 
 
# Install required packages for desktop etc
# ....
 
# We need only one tty
rm /etc/init/tty[2-6].conf
 
 
# Exit chroot ...
rm /var/lib/dbus/machine-id
rm /sbin/initctl
#dpkg-divert --rename --remove /sbin/initctl
mv initctl.backup /sbin/initctl
 
apt-get clean
rm -rf /tmp/*
rm /etc/resolv.conf
rm /etc/hosts
 
umount -lf /proc
umount -lf /sys
umount -lf /dev/pts
exit
EOF
umount ${CHROOT}/dev
 
################################################### TODO: Evtl install Ordner ?!?!
# Set up folders for the image
mkdir -p ${IMAGE}/{casper,isolinux}
# Copy the kernel and the initrd
cp ${CHROOT}/boot/vmlinuz-2.6.**-**-generic ${IMAGE}/casper/vmlinuz
## Wenn die initrd verändert (und neu erstellt wurde):
#mv ${CHROOT}/initrd.gz ${IMAGE}/casper/initrd.gz
## Ansonsten:
mv ${CHROOT}/boot/initrd.img-2.6.**-**-generic ${IMAGE}/casper/initrd.gz
 
# isolinux
cp /usr/lib/syslinux/isolinux.bin ${IMAGE}/isolinux/
cat > ${IMAGE}/isolinux/isolinux.txt<<EOF
************************************************************************
CaseTrain @ Ubuntu 10.10 i386
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Enter "live" to boot the live system!
Bitte "live" eingeben, um das Livesystem zu starten!
 
Enter "check" to check CD for defects!
Bitte "check" eingeben, um CD auf Integritaet zu testen!
 
Enter "hd" to boot from first hard disk!
Bitte "hd" eingeben, um von der ersten Festplatte zu starten!
************************************************************************
EOF
 
cat > ${IMAGE}/isolinux/isolinux.cfg<<EOF
DEFAULT live
LABEL live
  menu label ^Start Progbuntu @ Ubuntu 10.10 i386
  kernel /casper/vmlinuz
  append boot=casper initrd=/casper/initrd.gz lang=de locale=de_DE.utf8 bootkbd=de console-setup/layoutcode=de ramdisk_size=1048576 root=/dev/ram rw quiet splash --
LABEL check
  menu label ^Check CD for defects
  kernel /casper/vmlinuz
  append boot=casper integrity-check initrd=/casper/initrd.gz lang=de locale=de_DE.utf8 bootkbd=de console-setup/layoutcode=de ramdisk_size=1048576 root=/dev/ram rw quiet splash --
LABEL hd
  menu label ^Boot from first hard disk
  localboot 0x80
  append -
DISPLAY isolinux.txt
TIMEOUT 30
PROMPT 1 
 
#prompt flag_val
# 
# If flag_val is 0, display the "boot:" prompt 
# only if the Shift or Alt key is pressed,
# or Caps Lock or Scroll lock is set (this is the default).
# If  flag_val is 1, always display the "boot:" prompt.
#  http://linux.die.net/man/1/syslinux   syslinux manpage 
EOF
 
# create manifest
chroot ${CHROOT} dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee ${IMAGE}/casper/filesystem.manifest
cp -v ${IMAGE}/casper/filesystem.manifest ${IMAGE}/casper/filesystem.manifest-desktop
REMOVE='ubiquity ubiquity-frontend-gtk ubiquity-frontend-kde casper lupin-casper live-initramfs user-setup discover xresprobe os-prober libdebian-installer4'
for i in $REMOVE 
do
        sudo sed -i "/${i}/d" ${IMAGE}/casper/filesystem.manifest-desktop
done
 
# create filesystem.squashfs
mksquashfs ${CHROOT} ${IMAGE}/casper/filesystem.squashfs -noappend -e boot
printf $(du -sx --block-size=1 ${CHROOT} | cut -f1) > ${IMAGE}/casper/filesystem.size
 
# create diskdefines
cat > ${IMAGE}/README.diskdefines<<EOF
#define DISKNAME  Progbuntu @ Ubuntu 10.10 i386
#define TYPE  binary
#define TYPEbinary  1
#define ARCH  i386
#define ARCHi386  1
#define DISKNUM  1
#define DISKNUM1  1
#define TOTALNUM  0
#define TOTALNUM0  1
EOF
 
# make it a ubuntu remix ..
touch ${IMAGE}/ubuntu
mkdir ${IMAGE}/.disk
touch ${IMAGE}/.disk/base_installable
echo "full_cd/single" > ${IMAGE}/.disk/cd_type
echo 'Progbuntu @ Ubuntu 10.10 i386' > ${IMAGE}/.disk/info
echo "http//proggen.org" > ${IMAGE}/.disk/release_notes_url
cd ${IMAGE}
 
# build cd iso
find . -type f -print0 | xargs -0 md5sum | grep -v "\./md5sum.txt" > md5sum.txt
mkisofs -r -V "IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../progbuntu-remix.iso .