#!/bin/bash # # PlugApps Linux Distribution Image Builder # # Licensed under the GPLv2. # # This script builds a Plugbox distribution/image. # First, it downloads and installs packages to the workingdir, # then configures some basics, sets the root password to "root", # and then creates a rootts.tar.gz and/or a UBI image, ready to flash. # # Usage: ./distro-builder workingdir # # NOTE: This script is interactive. # Agree to installing packages and answer "y" to cleaning the Pacman database. # # NOTE: Make sure the package "mtd-utils" is installed for making UBI images. # # ==== Variables to set ==== INSTALLEDPKGS="base kernel26 kernel26-headers file heimdal ntfs-3g openssh openssl" RELEASEVER=2011.02 MAKETARGZ=1 MAKEUBIIMG=1 # ==== The Process ==== mkdir -p $1 echo -e "\033[1mInstalling packages...\033[0m" mkdir -p $1/var/lib/pacman pacman -Syy --noconfirm --noprogressbar -r $1 $INSTALLEDPKGS echo -e "\033[1mSetting the password to 'root' and cleaning up:\033[0m" echo -e "root\nroot\n" | chroot $1/ /usr/bin/passwd root rm $1/dev/{console,null,zero} chroot $1/ mknod -m 600 /dev/console c 5 1 chroot $1/ mknod -m 666 /dev/null c 1 3 chroot $1/ mknod -m 666 /dev/zero c 1 5 rm $1/etc/locale.gen echo "en_US.UTF-8 UTF-8" >> $1/etc/locale.gen echo "en_US ISO-8859-1" >> $1/etc/locale.gen echo "de_DE ISO-8859-1" >> $1/etc/locale.gen echo "de_DE@euro ISO-8859-15" >> $1/etc/locale.gen chroot $1/ /usr/sbin/locale-gen chroot $1/ /usr/bin/pacman -Scc --noconfirm echo $RELEASEVER > $1/etc/plugapps-version # Here is the rootfs.tar.gz part if you set MAKETARGZ to 1 if [ $MAKETARGZ = 1 ]; then echo -e "\033[1mCreating a rootfs.tar.gz...\033[0m" cd $1 tar czf ../PlugApps-Linux-$RELEASEVER-rootfs.tar.gz ./* cd ../ else echo -e "\033[1mNot creating a rootfs.tar.gz...\033[0m" fi # Here is the UBI image part if you set MAKEUBIIMG to 1 if [ $MAKEUBIIMG = 1 ]; then echo -e "\033[1mCreating a rootfs.ubi.img...\033[0m" cat << EOF > ./ubi.cfg [ubifs] mode=ubi image=rootfs.ubifs.img vol_id=0 vol_size=356MiB vol_type=dynamic vol_name=rootfs vol_flags=autoresize EOF mkfs.ubifs -x zlib -m 2048 -e 129024 -c 4096 -r $1 rootfs.ubifs.img ubinize -o rootfs.ubi.img -m 2048 -p 128KiB -s 512 ./ubi.cfg rm -f ubi.cfg rootfs.ubifs.img else echo -e "\033[1mNot creating UBI image...\033[0m" fi echo -e "\033[1mCleaning up...\033[0m" rm -rf $1