root[chris]# lilo -v -C /etc/lilosetup.conf
LILO version 23.2 (released 09-Apr-2011)
* Copyright (C) 1992-1998 Werner Almesberger (until v20)
* Copyright (C) 1999-2007 John Coffman (until v22)
* Copyright (C) 2009-2011 Joachim Wiedorn (since v23)
This program comes with ABSOLUTELY NO WARRANTY. This is free software
distributed under the BSD License (3-clause). Details can be found in
the file COPYING, which is distributed with this software.
Compiled at 19:24:22 on Aug 11 2011
Reading boot sector from /dev/sda
Using BITMAP secondary loader
Calling map_insert_data
Mapping bitmap file /boot/salix-black.bmp
Fatal: Unsupported bitmap
# LILO configuration file
# Generated by LiloSetup
#
# Start LILO global section
# Append any additional kernel parameters:
append = "vt.default_utf8=1 "
boot = /dev/sda
lba32
compact
# Boot BMP Image.
# Bitmap in BMP format: 640x480x8
bitmap=/boot/salix-black.bmp
bmp-colors = 2,,,3,,,
bmp-table = 85p,130p,1,17,17
bmp-timer = ,,,,2
# Standard menu.
# Or, you can comment out the bitmap menu above and
# use a boot message with the standard menu:
# message = /boot/boot_message.txt
# Wait until the timeout to boot (if commented out, boot the
# first entry immediately):
prompt
# Timeout before the first entry boots.
# This is given in tenths of a second, so 600 for every minute:
timeout = 50
# Override dangerous defaults that rewrite the partition table:
change-rules
reset
# Normal VGA console
vga = normal
# VESA framebuffer console @ 1600x1200x16m
# vga=799
# VESA framebuffer console @ 1600x1200x64k
# vga=798
# VESA framebuffer console @ 1600x1200x32k
# vga=797
# VESA framebuffer console @ 1600x1200x256
# vga=796
# VESA framebuffer console @ 1280x1024x16m
# vga=795
# VESA framebuffer console @ 1280x1024x64k
# vga=794
# VESA framebuffer console @ 1280x1024x32k
# vga=793
# VESA framebuffer console @ 1280x1024x256
# vga=775
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
# vga=773
# VESA framebuffer console @ 800x600x16m
# vga=789
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769
# End LILO global section
#
# LiloSetup can be executed from a LiveCD. This means that lilo
# could be issued from a 'chrooted' Linux partition, which would
# happen to be the first Linux partition listed below.
# Therefore the following paths are relevant only when viewed
# from that 'chrooted' partition's perspective. Please take this
# constraint into consideration if you must modify this file
# or else LiloSetup will fail.
#
# If later on you want to use this configuration file directly
# with lilo in a command line, use the following syntax:
# "lilo -v -C /etc/lilosetup/conf" instead of the traditional
# "lilo -v" command. You must of course issue that command from
# the operating system holding /etc/lilosetup.conf & ensure that
# all partitions referenced in it are mounted on the appropriate
# mountpoints.
#
# Linux bootable partition config begins
image = /boot/vmlinuz-huge-2.6.37.6
root = /dev/disk/by-uuid/5ee98a2d-5011-4044-a692-4124c23d005d
label = Salix
read-only
# Linux bootable partition config ends
#
# Linux bootable partition config begins
image = /media/disk/boot/vmlinuz-linux
root = /dev/disk/by-uuid/67f35b73-ec67-4c02-b748-f1da89338b6a
label = Archbang
initrd = /media/disk/boot/initramfs-linux-fallback.img
read-only
# Linux bootable partition config ends
Its a really nice looking splash. Is there something I can do to make it a supported bitmap?
#Maintainer: Thorsten Muehlfelder <thenktor(at)gmx.de>
pkgname=lilo
pkgver=23.2
pkgrel=13tm
arch=x86_64
source=("ftp://ftp.slackware.at/slackware64-current/slackware64/a/lilo-$pkgver-$arch-1.txz")
slackdesc=\
(
#|-----handy-ruler------------------------------------------------------|
"$pkgname (Linux Loader)"
"Generic Boot Loader for Linux ('LInux LOader') by Werner Almesberger."
"LILO boots Linux from your hard drive. It can also boot other"
"operating systems such as MS-DOS and OS/2, and can even boot DOS from"
"the second hard drive. LILO comes with utilities and documentation"
"that make it easier to install, such as 'liloconfig' and 'QuickStart'."
"NOTE: Installing boot loaders is inherently dangerous. Be sure to have"
"some means to boot your system from a different media if you install"
"LILO on your hard disk."
)
build() {
cd $startdir/src/
#
# just take the slackware package and add our own background bitmap and settings
#
# background bitmap
mv salix-black.bmp boot/ || return 1
rm boot/slack.bmp
# liloconfig
mv liloconfig sbin/ || return 1
chmod 755 sbin/liloconfig
## tweak some lilo default settings in original liloconfig
#sed -i s/slack.bmp/salix-black.bmp/g sbin/liloconfig
#sed -i s/bmp-timer\ =\ .*/bmp-timer\ =\ 65,29,0,255/ sbin/liloconfig
#sed -i s/bmp-colors\ =\ .*/bmp-colors\ =\ 2,,,3,,,/ sbin/liloconfig
#sed -i s/timeout\ =\ .*/timeout\ =\ 50/ sbin/liloconfig
#sed -i s/APPEND=\"/APPEND=\"quiet\ / sbin/liloconfig
# mv everything to the new package
mv boot install sbin var $startdir/pkg/
mv usr/* $startdir/pkg/usr/
}
#!/bin/bash
#Automatically Created by slkbuild 0.8.6
#Maintainer: Thorsten Muehlfelder <thenktor(at)gmx.de>
######Begin Redundant Code######################################
check_for_root() {
if [ "$UID" != "0" ]; then
echo "You need to be root"
exit 1
fi
}
clean_dirs () {
for COMPLETED in src pkg; do
if [ -e $COMPLETED ]; then
rm -rf $COMPLETED
fi
done
}
clean_old_builds () {
rm -rf $package.{t[xlgb]z,md5}
clean_dirs
}
set_pre_permissions() {
cd $startdir/src
find . -perm 664 -exec chmod 644 {} \;
find . -perm 600 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;
find . -perm 400 -exec chmod 644 {} \;
find . -perm 440 -exec chmod 644 {} \;
find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 511 -exec chmod 755 {} \;
find . -perm 711 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
}
gzip_man_and_info_pages() {
for DOCS in man info; do
if [ -d "$startdir/pkg/usr/share/$DOCS" ]; then
mv $startdir/pkg/usr/share/$DOCS $startdir/pkg/usr/$DOCS
if [[ ! "$(ls $startdir/pkg/usr/share)" ]]; then
rm -rf $startdir/pkg/usr/share
fi
fi
if [ -d "$startdir/pkg/usr/$DOCS" ]; then
# I've never seen symlinks in info pages....
if [ "$DOCS" == "man" ]; then
(cd $startdir/pkg/usr/$DOCS
for manpagedir in $(find . -type d -name "man*" 2> /dev/null) ; do
( cd $manpagedir
for eachpage in $( find . -type l -maxdepth 1 2> /dev/null) ; do
ln -s $( readlink $eachpage ).gz $eachpage.gz
rm $eachpage
done )
done)
fi
find $startdir/pkg/usr/$DOCS -type f -exec gzip -9 '{}' \;
fi
done
[ -a $startdir/pkg/usr/info/dir.gz ] && rm -f $startdir/pkg/usr/info/dir.gz
}
set_post_permissions() {
for DIRS in usr/share/icons usr/doc; do
if [ -d "$startdir/pkg/$DIRS" ]; then
if [ "$DIRS" == "usr/doc" ]; then
find $startdir/pkg/$DIRS -type f -exec chmod 644 {} \;
find $startdir/pkg/$DIRS -type d -exec chmod 755 {} \;
fi
fi
[ -d $startdir/pkg/$DIRS ] && chown root:root -R $startdir/pkg/$DIRS
done
[ -d $startdir/pkg/usr/bin ] && find $startdir/pkg/usr/bin -user root -group bin -exec chown root:root {} \;
}
copy_build_script() {
mkdir -p $startdir/pkg/usr/src/$pkgname-$pkgver/
[ -f $startdir/SLKBUILD ] && cp $startdir/SLKBUILD $startdir/pkg/usr/src/$pkgname-$pkgver/SLKBUILD
}
create_package() {
ls -lR $startdir/pkg
cd $startdir/pkg
/sbin/makepkg -p -l y -c n $startdir/$package.txz
cd $startdir
md5sum $package.txz > $startdir/$package.md5
}
strip_binaries() {
cd $startdir/pkg
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
xargs strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
xargs strip --strip-unneeded 2> /dev/null
}
#########End Redundant Code#####################################
#########Begin Non Redundant Code##############################
prepare_directory() {
NOSRCPACK=""
mkdir $startdir/src
mkdir -p $startdir/pkg/usr/src/$pkgname-$pkgver
for SOURCES in ${source[@]}; do
protocol=$(echo $SOURCES | sed 's|:.*||')
file=$(basename $SOURCES | awk -F= '{print $NF}')
if [ ! -f "$file" ]; then
if [ "$protocol" = "http" -o "$protocol" = "https" -o "$protocol" = "ftp" ]; then
echo -e "\nDownloading $(basename $SOURCES)\n"
wget -c --no-check-certificate $SOURCES -O $file
if [ ! "$?" == "0" ]; then
echo "Download failed"
exit 2
fi
else
echo "$SOURCES does not appear to be a url nor is it in the directory"
exit 2
fi
fi
cp -LR $file $startdir/src
if ! [ "$protocol" = "http" -o "$protocol" = "https" -o "$protocol" = "ftp" ]; then
if ! [[ $NOSRCPACK -eq 1 ]]; then
cp -LR $startdir/$(basename $SOURCES) $startdir/pkg/usr/src/$pkgname-$pkgver/
fi
fi
done
}
extract_source() {
cd $startdir/src
if [[ "$(ls $startdir/src)" ]]; then
for FILES in ${source[@]}; do
FILES="$(basename $FILES | awk -F= '{print $NF}')"
file_type=$(file -biLz "$FILES")
unset cmd
case "$file_type" in
*application/x-tar*)
cmd="tar -xf" ;;
*application/x-zip*)
cmd="unzip" ;;
*application/zip*)
cmd="unzip" ;;
*application/x-gzip*)
cmd="gunzip -d -f" ;;
*application/x-bzip*)
cmd="bunzip2 -f" ;;
*application/x-xz*)
cmd="xz -d -f" ;;
*application/x-lzma*)
cmd="lzma -d -f" ;;
*application/x-rar*)
cmd="unrar x" ;;
esac
if [ "$cmd" != "" ]; then
echo "$cmd $FILES"
$cmd $FILES
fi
done
elif [ ! "$source" ]; then
echo -n "" # lame fix
else
echo "no files in the src directory $startdir/src"
exit 2
fi
}
build() {
cd $startdir/src/
#
# just take the slackware package and add our own background bitmap and settings
#
# background bitmap
mv /home/chris/slkbuilds/lilo/salix-black.bmp boot/ || return 1
rm boot/slack.bmp
# liloconfig
mv /home/chris/slkbuilds/lilo/liloconfig sbin/ || return 1
chmod 755 sbin/liloconfig
## tweak some lilo default settings in original liloconfig
#sed -i s/slack.bmp/salix-black.bmp/g sbin/liloconfig
#sed -i s/bmp-timer\ =\ .*/bmp-timer\ =\ 65,29,0,255/ sbin/liloconfig
#sed -i s/bmp-colors\ =\ .*/bmp-colors\ =\ 2,,,3,,,/ sbin/liloconfig
#sed -i s/timeout\ =\ .*/timeout\ =\ 50/ sbin/liloconfig
#sed -i s/APPEND=\"/APPEND=\"quiet\ / sbin/liloconfig
# mv everything to the new package
mv boot install sbin var $startdir/pkg/
mv usr/* $startdir/pkg/usr/
}
create_slackdesc() {
mkdir $startdir/pkg/install
cat <<"EODESC" >$startdir/pkg/install/slack-desc
lilo: lilo (Linux Loader)
lilo:
lilo: Generic Boot Loader for Linux ('LInux LOader') by Werner Almesberger.
lilo: LILO boots Linux from your hard drive. It can also boot other
lilo: operating systems such as MS-DOS and OS/2, and can even boot DOS from
lilo: the second hard drive. LILO comes with utilities and documentation
lilo: that make it easier to install, such as 'liloconfig' and 'QuickStart'.
lilo: NOTE: Installing boot loaders is inherently dangerous. Be sure to have
lilo: some means to boot your system from a different media if you install
lilo: LILO on your hard disk.
lilo:
EODESC
}
create_source_file(){
[ -f $package.src ] && rm $package.src
if [ ! -z $sourcetemplate ]; then
echo $sourcetemplate/SLKBUILD >> $package.src
for SOURCES in ${source[@]}; do
protocol=$(echo $SOURCES | sed 's|:.*||')
if ! [ "$protocol" = "http" -o "$protocol" = "https" -o "$protocol" = "ftp" ]; then
if [ ! -z $sourcetemplate ]; then
echo $sourcetemplate/$(basename $SOURCES) >> $package.src
else
echo $(basename $SOURCES) >> $package.src
fi
else
echo $SOURCES >> $package.src
fi
done
fi
}
post_checks(){
# Ideas taken from src2pkg :)
if [ -d "$startdir/pkg/usr/doc/$pkgname-$pkgver" ]; then
for DIRS in usr/doc/$pkgname-$pkgver usr/doc; do
cd $startdir/pkg/$DIRS
if [[ $(find . -type f) = "" ]] ; then
cd ..
rmdir $DIRS
fi
done
fi
# if the docs weren't deleted ...
if [ -d "$startdir/pkg/usr/doc/$pkgname-$pkgver" ]; then
cd $startdir/pkg/usr/doc/$pkgname-$pkgver
#remove zero lenght files
if [[ $(find . -type f -size 0) ]]; then
echo "Removing some zero lenght files"
find . -type f -size 0 -exec rm -f {} \;
fi
fi
# check if we need to add code to handle info pages
if [[ -d $startdir/pkg/usr/info ]] && [[ ! $(grep install-info $startdir/pkg/install/doinst.sh &> /dev/null) ]] ; then
echo "Found info files - Adding install-info command to doinst.sh"
INFO_LIST=$(ls -1 $startdir/pkg/usr/info)
echo "" >> $startdir/pkg/install/doinst.sh
echo "if [ -x usr/bin/install-info ] ; then" >> $startdir/pkg/install/doinst.sh
for page in $(echo $INFO_LIST) ; do
echo " usr/bin/install-info --info-dir=usr/info usr/info/$page 2>/dev/null" >> $startdir/pkg/install/doinst.sh
done
echo "fi" >> $startdir/pkg/install/doinst.sh
fi
[[ -e $startdir/pkg/usr/info/dir ]] && rm -f $startdir/pkg/usr/info/dir
if [ -d $startdir/pkg/etc ]; then
cd $startdir/pkg/
for conf in $(find ./etc -type f) ; do
conf=${conf: 2}
dotnew=( "${dotnew[@]}" "$conf" )
done
fi
if [[ "$dotnew" ]]; then
for files in ${dotnew[@]} ; do
fullfile="${startdir}/pkg/${files}"
if [ -e "$fullfile" ]; then
mv $fullfile ${fullfile}.new
else
echo "$fullfile was not found"
exit 2
fi
done
cat<<"EODOTNEW" >>$startdir/pkg/install/doinst.sh
#Added by slkbuild 0.8.6
dotnew() {
NEW="${1}.new"
OLD="$1"
if [ ! -e $OLD ]; then
mv $NEW $OLD
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
rm $NEW
fi
}
EODOTNEW
for i in ${dotnew[@]}; do
echo "dotnew $i" >> $startdir/pkg/install/doinst.sh
done
fi
}
####End Non Redundant Code############################
#Variables
startdir=$(pwd)
SRC=$startdir/src
PKG=$startdir/pkg
pkgname=lilo
pkgver=23.2
pkgrel=13tm
arch=x86_64
numjobs=1
package=$pkgname-$pkgver-$arch-13tm
source=("ftp://ftp.slackware.at/slackware64-current/slackware64/a/lilo-23.2-x86_64-1.txz")
docs=()
export CFLAGS="-O2 -fPIC"
export CXXFLAGS="-O2 -fPIC"
export SLKCFLAGS="-O2 -fPIC"
export LIBDIRSUFFIX="64"
export ARCH="x86_64"
#Execution
check_for_root
clean_old_builds
prepare_directory
extract_source
set_pre_permissions
build
if [ ! "$?" = "0" ]; then
echo "build() failed."
exit 2
fi
create_slackdesc
post_checks
strip_binaries
gzip_man_and_info_pages
set_post_permissions
copy_build_script
create_package
create_source_file
echo "Package has been built."
Thanks Shador. I was able to create an optimum palette with 256 colors, though the arch wiki suggests 16 and it worked great.
I was about to try the method from This site, which also mentions indexing the bitmap, but the arch wiki was very easy to follow, as arch wiki's generally are.