# # foreplay # fjo@fjo:~$ mkdir -p ~/cross-hppa/src # # software we'll need # save or untar the following urls in ~/cross-hppa/src/ # # ftp://ftp.gnu.org/gnu/binutils/binutils-2.11.2.tar.gz # ftp://ftp.parisc-linux.org/cvs/gcc-latest.tar.gz # ftp://ftp.parisc-linux.org/cvs/linux-latest.tar.gz # ftp://ftp.parisc-linux.org/cvs/palo-latest.tar.gz # ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.5.tar.gz # ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.5.tar.gz (untar in ~/cross-hppa/src/glibc-2.2.5/) # ftp://ftp.parisc-linux.org/patches/glibc22-hppa.dpatch_new-ipc # ftp://ftp.gnu.org/gnu/bash/bash-2.05.tar.gz # ftp://ftp.kernel.org/pub/linux/utils/util-linux/util-linux-2.11r.tar.bz2 # ftp://ftp.gnu.org/gnu/fileutils/fileutils-4.1.tar.gz # ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/e2fsprogs-1.27.tar.gz # ftp://ftp.atnf.csiro.au/pub/people/rgooch/linux/daemons/devfsd/devfsd-v1.3.25.tar.gz # http://www.tazenda.demon.co.uk/phil/net-tools/net-tools-1.60.tar.bz2 # ftp://metalab.unc.edu/pub/Linux/system/daemons/init/sysvinit-2.83.tar.gz # ftp://ftp.gnu.org/gnu/textutils/textutils-2.0.tar.gz # ftp://sourceware.cygnus.com/pub/bzip2/v102/bzip2-1.0.2.tar.gz # ftp://alpha.gnu.org/gnu/gzip/gzip-1.3.3.tar.gz # ftp://alpha.gnu.org/gnu/tar/tar-1.13.25.tar.gz # ftp://ftp.gnu.org/gnu/sh-utils/sh-utils-2.0.tar.gz # # ftp://ftp.pld.org.pl/software/shadow/shadow-4.0.3.tar.bz2 # ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/lukemftp-1.5.tar.gz # ftp://download.sourceforge.net/pub/sourceforge/psmisc/psmisc-21.tar.gz # ftp://people.redhat.com/johnsonm/procps/procps-2.0.7.tar.gz # # ftp://vic.cc.purdue.edu/pub/tools/unix/lsof/lsof_4.63.tar.gz # # # binutils # fjo@fjo:~/cross-hppa/src/binutils-2.12$ ./configure --prefix=$HOME/cross-hppa --host=i386-linux --target=hppa-linux fjo@fjo:~/cross-hppa/src/binutils-2.12$ export PATH=$PATH:$HOME/cross-hppa/bin # # standard gcc does not compile! # fjo@fjo:~/cross-hppa/src/gcc$ ./configure --prefix=$HOME/cross-hppa --host=i386-linux --target=hppa-linux --enable-shared --enable-languages=c # # standard kernel does not compile! # # edit Makefile # CROSS_COMPILE := hppa-linux- # # make menuconfig # set ramdisk to 8192 kB at least # enable initrd # enable devfs # make dep clean # # # palo - Parisc Linux Loader # # edit Makefile # comment out "NFSROOT = 10.10.10.2" # remove '#' before "RAMDISK = ${PA}/ramdisk.bin" # # # dietlibc # cvs://cvs.fefe.de # fjo@fjo:~/src/dietlibc$ make fjo@fjo:~/src/dietlibc$ make ARCH=hppa CROSS=hppa-linux- fjo@fjo:~/src/dietlibc$ su root@fjo:/home/fjo/src/dietlibc$ make ARCH=hppa CROSS=hppa-linux- install root@fjo:/home/fjo/src/dietlibc$ make install root@fjo:/home/fjo/src/dietlibc$ exit fjo@fjo:~/src/binutils-2.11.2$ export PATH=$PATH:/opt/diet/bin # # glibc # first we compile for cross-compilation (installs in $HOME/cross-hppa) # then we compile for native use on the parisc machine (installs in # $HOME/cross-hppa/export) # # # parisc port of glibc is broken; eg. no dynamic linking is possible # without this patch # fjo@fjo:~/cross-hppa/src/glibc-2.2.5$ patch -p1 <../glibc22-hppa.dpatch_new-ipc # # compile the beast for cross compilation # fjo@fjo:~/cross-hppa/src/glibc-2.2.5$ ./configure --prefix=$HOME/cross-hppa --host=hppa-linux --build=i386-linux --with-headers=$HOME/cross-hppa/src/linux/include --disable-profile --without-cvs --enable-add-ons # # type 'make && make install and go for a cup of coffee # # # rearrange include paths # fjo@fjo:~/cross-hppa/include$ ln -s ../src/linux/include/asm . fjo@fjo:~/cross-hppa/include$ ln -s ../src/linux/include/linux . fjo@fjo:~/cross-hppa/hppa-linux$ mv -i lib/ldscripts ../lib/ fjo@fjo:~/cross-hppa/hppa-linux$ rmdir lib fjo@fjo:~/cross-hppa/hppa-linux$ ln -s ../lib . fjo@fjo:~/cross-hppa/hppa-linux$ ln -s ../include . # # sorry, but this has to be done # fjo@fjo:~/cross-hppa/src/glibc-2.2.5$ make distclean # # now for native use on the parisc # fjo@fjo:~/cross-hppa/src/glibc-2.2.5$ ./configure --prefix=/usr --host=hppa-linux --build=i386-linux --with-headers=$HOME/cross-hppa/src/linux/include --disable-profile --without-cvs --enable-add-ons # # type 'make && make install install_root=$HOME/cross-hppa/export' and # go for another cup of coffee! # # # bash # fjo@fjo:~/src/bash-2.05$ cat >config.cache ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void=yes} ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no} ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls=yes} ^D fjo@fjo:~/cross-hppa/src/bash-2.05$ CC="hppa-linux-gcc -Os -s" ./configure --enable-alias --enable-history --enable-job-control --host=hppa-linux --build=i386-linux fjo@fjo:~/cross-hppa/src/bash-2.05$ make prefix=$HOME/cross-hppa/export/usr bindir=$HOME/cross-hppa/export/bin install # # util-linux # # edit MCONFIG # DESTDIR=$(HOME)/cross-hppa/export # CPU:=hppa # USE_TTY_GROUP:=no # fjo@fjo:~/cross-hppa/src/util-linux-2.11r$ CC="hppa-linux-gcc -Os -s" ./configure fjo@fjo:~/cross-hppa/src/util-linux-2.11r$ make -i fjo@fjo:~/cross-hppa/src/util-linux-2.11r$ make -i install # # file-utils # fjo@fjo:~/cross-hppa/src/fileutils-4.1$ ac_cv_func_setvbuf_reversed=no CC="hppa-linux-gcc -Os -s" ./configure --host=hppa-linux --build=i386-linux --prefix=/usr --bindir=/bin fjo@fjo:~/cross-hppa/src/fileutils-4.1$ make prefix=$HOME/cross-hppa/export/usr bindir=$HOME/cross-hppa/export/bin install # # e2fsprocs # fjo@fjo:~/cross-hppa/src/e2fsprogs-1.27$ STRIP=hppa-linux-strip CC="hppa-linux-gcc -Os -s" ./configure --prefix=/usr --with-root-prefix="" --enable-elf-shlibs --enable-fsck fjo@fjo:~/cross-hppa/src/e2fsprogs-1.27$ make prefix=$HOME/cross-hppa/export/usr root_prefix=$HOME/cross-hppa/export install # # devfsd # edit GNUmakefile # comment out 'install -s devfsd $(SBINDIR)/devfsd' in target install # insert 'hppa-linux-strip devfsd ; cp devfsd $(SBINDIR)/devfsd' instead # fjo@fjo:~/cross-hppa/src/devfsd$ KERNEL_DIR=$HOME/cross-hppa/src/linux CC="hppa-linux-gcc -Os -s" make fjo@fjo:~/cross-hppa/src/devfsd$ make PREFIX=$HOME/cross-hppa/export install # # text-utils # fjo@fjo:~/cross-hppa/src/textutils-2.0$ ac_cv_func_setvbuf_reversed=no CC="hppa-linux-gcc -Os -s" ./configure --prefix=/usr --bindir=/bin --host=hppa-linux fjo@fjo:~/cross-hppa/src/textutils-2.0$ make prefix=$HOME/cross-hppa/export/usr bindir=$HOME/cross-hppa/export/bin install # # sed # fjo@fjo:~/cross-hppa/src/sed-3.02$ CC="hppa-linux-gcc -Os -s" ./configure --prefix=/usr fjo@fjo:~/cross-hppa/src/sed-3.02$ make prefix=$HOME/cross-hppa/export/usr install # # awk # # edit io.c # comment out #if defined(NGROUPS_MAX) && NGROUPS_MAX > 0 /* for (i = 0; i < ngroups; i++) { *cp++ = ' '; sprintf(cp, "%d", (int) groupset[i]); cp += strlen(cp); }*/ #endif # fjo@fjo:~/cross-hppa/src/gawk-3.1.1$ ac_cv_func_getpgrp_void=yes CC="hppa-linux-gcc -Os -s" ./configure --prefix=/usr fjo@fjo:~/cross-hppa/src/gawk-3.1.1$ make prefix=$HOME/cross-hppa/export/usr install # # bzip2 # fjo@fjo:~/cross-hppa/src/bzip2-1.0.2$ make CC="hppa-linux-gcc -Os -s" AR=hppa-linux-ar RANLIB=hppa-linux-ranlib fjo@fjo:~/cross-hppa/src/bzip2-1.0.2$ make PREFIX=$HOME/cross-hppa/export/usr install # # gzip # fjo@fjo:~/cross-hppa/src/gzip-1.3.3$ CC="hppa-linux-gcc -Os -s" ./configure --prefix=/usr --host=hppa-linux --build=i386-linux fjo@fjo:~/cross-hppa/src/gzip-1.3.3$ make prefix=$HOME/cross-hppa/export/usr install # # tar # fjo@fjo:~/cross-hppa/src/tar-1.13.25$ CC="hppa-linux-gcc -Os -s" ./configure --prefix=/usr --host=hppa-linux fjo@fjo:~/cross-hppa/src/tar-1.13.25$ make prefix=$HOME/cross-hppa/export/usr install # # sh-utils # fjo@fjo:~/cross-hppa/src/sh-utils-2.0$ ac_cv_func_setvbuf_reversed=no CC="hppa-linux-gcc -Os -s" ./configure --prefix=/usr --bindir=/bin --host=hppa-linux --build=i386-linux fjo@fjo:~/cross-hppa/src/sh-utils-2.0$ make prefix=$HOME/cross-hppa/export/usr bindir=$HOME/cross-hppa/export/bin install # # net-utils # fjo@fjo:~/cross-hppa/src/net-tools-1.60$ CC="hppa-linux-gcc -Os -s" make fjo@fjo:~/cross-hppa/src/net-tools-1.60$ make BASEDIR=$HOME/cross-hppa/export install # # PAM # # edit Make.Rules: # under "# generic build setup" prefix hppa-linux- to all gcc, ld, ranlib # and strip commands # set CC to CC=hppa-linux-gcc -Os -s # set CFLAGS to CFLAGS=$(WARNINGS) -D$(OS) $(OS_CFLAGS) $(HEADER_DIRS) -fPIC -DPIC # # make fjo@fjo:~/cross-hppa/src/Linux-PAM-0.75$ make FAKEROOT=$HOME/cross-hppa/export install # # chdir to ~/cross-hppa/export/lib and check for missing links: # ln -s libpam.so.0.75 libpam.so.0 # ln -s libpam_misc.so.0.75 libpam_misc.so.0 # ln -s libpamc.so.0.75 libpamc.so.0 # # # shadow-pass _WITH_ pam (doesn't work!) # # edit configure in line 10271 change: # LIBS="-lpam_misc $LIBS" # to # LIBS="$LIBPAM -lpam_misc $LIBS" # # edit libmisc/xmalloc.c comment out: # // extern char *malloc(); # fjo@fjo:~/cross-hppa/src/shadow-4.0.3$ ac_cv_func_setpgrp_void=yes CC="hppa-linux-gcc -Os -s -I$HOME/cross-hppa/export/usr/include -L$HOME/cross-hppa/export/lib -lpam -lpam_misc" ./configure --enable-shared --with-libpam --host=hppa-linux --build=i386-linux fjo@fjo:~/cross-hppa/src/shadow-4.0.3$ make prefix=$HOME/cross-hppa/export/usr exec_prefix=$HOME/cross-hppa/export/usr bindir=$HOME/cross-hppa/export/bin install # # shadow without pam # fjo@fjo:~/cross-hppa/src/shadow-4.0.3$ ac_cv_func_setpgrp_void=yes CC=hppa-linux-gcc ./configure --enable-shared --host=hppa-linux --build=i386-linux fjo@fjo:~/cross-hppa/src/shadow-4.0.3$ make prefix=$HOME/cross-hppa/export/usr exec_prefix=$HOME/cross-hppa/export/usr bindir=$HOME/cross-hppa/export/bin install # # lukemftp # fjo@fjo:~/cross-hppa/src/lukemftp-1.5$ ac_cv_func_getpgrp_void=yes CC="hppa-linux-gcc -Os -s" ./configure --host=hppa-linux --prefix=/usr --disable-editcomplete fjo@fjo:~/cross-hppa/src/lukemftp-1.5$ make prefix=$HOME/cross-hppa/export/usr install # # cyrus-sasl # fjo@fjo:~/cross-hppa/src/cyrus-imapd-2.1.5$ CC="hppa-linux-gcc -Os -s" ./configure --prefix=/opt/sasl --with-plugindir=/opt/sasl/plugins --disable-anon --disable-gssapi --disable-krb4 --disable-otp --disable-digest --without-des --disable-des --disable-cram --disable-checkapop --with-saslauthd=/var/sasl --without-pam --disable-pam --host=hppa-linux --build=i686-linux # # edit include/Makefile: # change CC to C = gcc -Os -s # # # Berkeley DB # fjo@fjo:~/cross-hppa/src/db-4.0.14/build_unix$ db_cv_sprintf_count=yes db_cv_fcntl_f_setfd=yes db_cv_mutex=no db_cv_alignp_t=int CC="hppa-linux-gcc -Os -s" ../dist/configure --prefix=/usr --host=hppa-linux --build=i386-linux # # edit include/Makefile: # change CC to C = gcc -Os -s # # Cyrus IMAP # /cyrus-imapd-2.1.5$ CC="hppa-linux-gcc -Os -s -I/tmp/usr/include -L/tmp/usr/lib" ./configure --host=hppa-linux --build=i386-linux --prefix=/opt/cyrus --with-cyrus-prefix=/opt/cyrus --disable-sieve --with-auth=unix # # procps # edit Makefile: # delete 'top' and 'watch' from UPROG # comment out # LIBCURSES = -lncurses # LIBTERMCAP = -lncurses # # edit proc/Makefile: # replace any apperance of 'gcc' by '$(CC)' # fjo@fjo:~/cross-hppa/src/procps-2.0.7$ CC="hppa-linux-gcc -Os -s" make # # SYS-V init # edit Makefile, add to target 'install' # install: all # mkdir -p $(ROOT)/bin $(ROOT)/sbin $(ROOT)$(MANDIR)/man5 $(ROOT)$(MANDIR)/man8 $(ROOT)/usr/bin $(ROOT)/usr/include # fjo@fjo:~/cross-hppa/src/sysvinit-2.83/src$ make CC="hppa-linux-gcc -Os -s" fjo@fjo:~/cross-hppa/src/sysvinit-2.83/src$ make -i ROOT=$HOME/cross-hppa/export install # # init scripts # HOST-, DOMAINNAME # pam config # /etc/passwd, group, shadow # fstab # palo.conf # syslog-ng config # /proc, /dev, /tmp, /var/tmp, /var/run # sh -> bash # # # make bootable image containing kernel & ramdisk # need to become root here! # fjo@fjo:~/cross-hppa/src/linux$ chmod 755 $HOME/cross-hppa/export/bin/* $HOME/cross-hppa/export/sbin/* $HOME/cross-hppa/export/usr/bin/* $HOME/cross-hppa/export/usr/sbin/* fjo@fjo:~/cross-hppa/src/linux$ hppa-linux-strip $HOME/cross-hppa/export/bin/* $HOME/cross-hppa/export/sbin/* $HOME/cross-hppa/export/usr/bin/* $HOME/cross-hppa/export/usr/sbin/* fjo@fjo:~/cross-hppa/src/linux$ cat >makelifimage.sh ^D fjo@fjo:~/cross-hppa/src/linux$ su -c ./makelifimage.sh ; make palo fjo@fjo:~/cross-hppa/src/linux$ su -c "cp ../palo/lifimage /tftpboot/"