\documentclass[10pt,letterpaper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\author{Bart Trojanowski $<bart@jukie.net>$}
\title{Debian AMD64 Proposal}
\begin{document}

\maketitle

\tableofcontents

\newpage 

%% ----------------------------------------------------------------------------
\section{Introduction}

\subsection{Purpose}

This document aims at outlining the port of Debian to the AMD64
architecture (previously known as x86-64 and Hammer).

The intent is to provide the porting team, and other interested parties,
an informal porting guideline and a list of packages that are to be
ported.

The AMD Developer Center granted the porting team use of one of their
systems for the purpose of the port.  This document also aims at
providing the AMD Developer Center a plan on how the porting team will
use the resources.  Unless otherwise specified this document will refer
to this system as ``the build system.''

\subsection{Scope}

This document provides a rough guideline for the porting team.  It is not 
to be considered a definitive time-line of events.  It is expected that the
project will be very fluid and specifics will change as time goes on.

\subsection{Project Goals}

The Debian AMD64 porting project sets out to create a Debian release
targeted at the AMD64, and specifically at the 64-bit mode or Long-mode.  

Initially the project will not be self-bootstrapping and will require
that a 32-bit version of Debian be running on the system.  Eventually,
the team hopes to release a set of ISO images for direct installation
onto an AMD64 system.

\subsection{Web Presence}

The project is already under way.  Interested parties should be familiar
with the following web pages and email addresses:

\begin{itemize}
\item Official Project Mailing List \\
	\emph{http://lists.debian.org/debian-x86-64/}
\item Alioth Project Page \\
	\emph{http://alioth.debian.org/projects/debian-x86-64/}
\end{itemize} 

A few project members maintain some information related to this project
on their personal web pages, these are listed here:

\begin{itemize}
\item \emph{http://www.arndb.de/debian/}
\item \emph{http://www.jukie.net/~bart/debian/amd64/}
\end{itemize} 

There is a plan to utilize the Debian wiki facilities for other
contributions:

\begin{itemize}
\item \emph{http://wiki.debian.net/}
\end{itemize}


%% ----------------------------------------------------------------------------

\section{Organization}

This section of the document describes the initial requirements of the
Debian AMD64 porting team.  Please note that as of this documents'
creation some of the requirements are already fulfilled.

\subsection{The Build System}

The porting team will require the following configuration from the AMD
Developer Center to start:

\begin{itemize}
\item SuSE 64-bit system on Opteron hardware (ie the build system)
\item chrooted 32-bit Debian/Sarge
\item serial console access from another box/terminal server/etc.
\item a remote-access power switch to the build system
\item ssh access to the build system
\end{itemize} 

\subsection{Porting Team}

The AMD Developer Center granted five (5) developers access to the build
machine; these individuals are listed below:

\begin{itemize}
\item Kurt Keville
\item Arnd Bergmann
\item Bart Trojanowski
\item Falk Hüffner
\item Roland Fehrenbacher
\end{itemize} 

Note that this list does not limit other from contributing to the
project.

\subsection{Team Communication}

The porting team will use the official mailing list 
\emph{debian-x86-64@lists.debian.org}.

Packages will be made available and exchanged via the Alioth Project
page \emph{http://alioth.debian.org/projects/debian-x86-64/}.

\subsection{Port Name}

The Opteron is the first publicly available implementation of the AMD64
bit architecture.  This architecture used to be referred to as Hammer
and x86-64.

An AMD representative suggested that we do go with AMD64.  Since the
Hammer name is no longer used to describe the architecture, and the
x86-64 has the underscore vs dash problem (ie x86-64 vs x86\_64),
this suggestion was agreed to by the porting team.

Since the tool-chain and glibc were ported in the era of x86-64 naming
scheme, those tools will (probably) forever use x86-64 to name this
architecture.  The porting team will have to keep this in mind when
working on certain packages.

The final Debian package names wil take a form of $*\_amd64.deb$.


%% ----------------------------------------------------------------------------

\section{Initial Build System}

This section of the document describes the steps that will be taken by
the porting team, specifically on the build system, before any .deb's
can be ported.

The sections that follow assume that actions taken only influence the
32-bit Debian/Sarge chrooted environment.

\subsection{Mixed 32/64-bit Platform}

One of the big pluses of the AMD64 architecture for Debian is it's 
concurrent support for AMD64 and i386.  It is the plan to initially
port only the ``important'' and ``interesting'' packages to AMD64
while leaving the remainder of the applications as i386 (ie nothing
will be done to these packages).  The Debian user running on an AMD64
would have the appropriate sources list for both package databases.

While running a 64-bit SuSE kernel, it should be possible to install,
build, and run simple 32-bit Debian applications.

Having a functional chrooted environment will conclude this step.

\subsection{64-bit Tool Chain}

Arnd Bergmann's biarch (i386 and amd64) compiler should be installed on
the build system.  With this setup it should be possible to build
functional 64-bit applications.

\subsection{64-bit Kernel}

Given a functional 64-bit toolchain, it should be possible to build a
working 2.4.20+ kernel.


%% ----------------------------------------------------------------------------

\section{Initial release}

This section of the document qualifies what the porting team will
consider an $initial release$.  This release will be the first
advertised release of AMD64, while still considered 'unstable'.

It is the hope of the author that this release could be advertised at
OLS/2003.

The initial release will contain 64-bit ports for at least those
packages marked as priority required, important and standard.  There 
are approximately 160 said packages.  A more detailed list can be found
on \emph{http://www.jukie.net/~bart/debian/amd64/proposal/}.

Some of the packages listed may be superceded by newer versions or even
be replaced by packages that have different names.

\subsection{Core Libraries}

The first porting effort will be that of porting the core libraries.  At
the completion of this stage the Debian AMD64 port will consist of, at
minimum, the following library packages:

\begin{verbatim}
console-tools-libs
libblkid1
libc6
libcap1
libdb1
libdb2
libdb3
libdb4
libdns5
libdns8
libgcc1
libgdbmg1
libident
libisc4
libldap2
liblockfile1
liblwres1
libncurses5
libnewt0
libnss-db
libpam-modules
libpam-runtime
libpam0g
libpcre3
libperl
libperl
libpng2
libpopt0
libreadline
libsasl
libssl
libstdc++
libwrap0
zlib1g
\end{verbatim}

A more current list can be found on \\
\emph{http://www.jukie.net/~bart/debian/amd64/proposal/packages.libs}.

As outlined by the LSB, the 32-bit libraries will exist in the $/lib$
directory, while the 64-bit variants will live in $/lib64$.

At this point it should be possible to run simple C programs against the
ported libraries.

\subsection{Autobuilder Requirements}

Autobuilder (sbuild) will help tremendously in the porting process.
After having ported the core libraries, the porting team will
concentrate on the packages which are required by sbuild.  These are as
follows:

\begin{verbatim}
binutils
coreutils
cpio
cpp
cron
debconf
debianutils
g++
gcc
gcc
libsasl2
login
make
passwd
patch
perl
perl-base
perl-modules
slang1
\end{verbatim}

A more current list can be found on \\
\emph{http://www.jukie.net/~bart/debian/amd64/proposal/packages.pre-sbuild}.

\subsection{Running Autobuilder}

This stage is not well defined.  There may be some unforeseen problems
that will arise when setting up the autobuilder.
 
\subsection{Remaining Core Packages}

The majority of the packages are in this stage of the build.  The
following packages will be ported with the help of autobuilder.

\begin{verbatim}
adduser
apt
at
bc
biff
bin86
bind9-host
binutils
bison
bsdmainutils
console-common
console-data
console-tools
cpio
cpp
cron
dc
debconf
dictionaries-common
dnsutils
doc-debian
doc-linux-text
dpkg-dev
dselect
ed
exim
file
fileutils
finger
flex
ftp
g++
gcc
gdb
gettext-base
gnupg
gnupg-doc
groff-base
iamerican
ibritish
ifupdown
info
ipchains
ipmasqadm
iptables
ispell
klogd
less
lilo
locales
logrotate
lpr
lsof
lynx
m4
mailx
make
makedev
man-db
manpages
manpages-dev
mawk
mbr
mime-support
modutils
mpack
mtools
mtr-tiny
mutt
nano
ncurses-term
net-tools
netbase
netkit-inetd
netkit-ping
nfs-common
nvi
passwd
patch
perl
perl-modules
pidentd
portmap
procmail
procps
python
python-newt
rcs
reportbug
setserial
sharutils
shellutils
slang1
ssh
strace
sysklogd
tcpd
tcsh
telnet
texinfo
textutils
time
vacation
wenglish
whiptail
whois
\end{verbatim}

A more current list can be found on \\
\emph{http://www.jukie.net/~bart/debian/amd64/proposal/packages.rest}.


%% ----------------------------------------------------------------------------

\section{Future Work}

The plan post initial release is still up in the air.  Upon
the successful conclusion of the ``initial releases'' the 
porting team will reevaluate this section of the document.

Currently the following ideas have been proposed for future work:

\begin{enumerate}
\item Hack dpkg to understand the new architecture.
\item Make the ftp people create the new architecture in the archive.
\item Ability to build a 2.5.x 64-bit kernel natively.
\item Install CD.
\end{enumerate} 

\end{document}












