# hdw - linux INSTALL file

this is a short introduction on how to install hdw-linux. you should have build
your hdw distro already or at least have the hdw-linux sources installed to use
the hdw-get script to install from precompiled binaries.
it is supposed to work, at least for me. though this may hurt your baby, be
warned. i mean it!

there are two diffrent ways of how to setup your hdw-linux system. the first
one assumes you have finished a build as explained in doc/BUILD. for the other
way you need to have the binary tarballs accessible which you may have created
after/during build procedure or on cd from someone else. please note that
hdw-get is able to fetch them from a http/ftp server too. i keep trying to
offer the binaries of the latest stable release on hackdaworld.dyndns.org,
mirrors appreciated! finally some configuration issues are discussed and the
system is prepared for reboot.

for both ways you will need kernel 2.6 running to do the chroot later on!

here we go ...

1. way - hdw-distro ready @ $hdw_build_dir
------------------------------------------

in case your hdw-build directory alreday has been mounted on a seperated 
partition you may skip the following and read on at chapter 'final steps'.
otherwise copy over the hdw system to your target partition. please make sure
unmount the hdw related mounts which the scripts may not have umounted.
	
	example:

	mke2fs <target partition>
	mkdir -p /mnt/hdw-target
	mount <target partition> /mnt/hdw-target
	(feel free to create more partitions like /usr, /var, /boot and so on)
	mke2fs <another partition>
	mkdir -p /mnt/hdw-target/boot
	mount <another partition> /mnt/hdw-target/boot

	umount $hdw_build_dir/dev/{shm,pts}
	umount $hdw_build_dir/{dev,sys,proc}
	umount $hdw_build_dir/usr/src/hdw-linux/{download,binaries}
	cp -a $hdw_build_dir/* /mnt/hdw-target

2. way - hdw-get
----------------

hdw-get is a minimal packet manager used to install/remove packages from your
hdw distribution. please have a look at the hdw-get script, it is simple and
thus more easy to get its functionality. two diffrent ways using hde-get are
introduced now. the hdw-get script can be found in the hdw-linux source tree
in the ./misc/hdw-tools directory.

	installing binaries explicitly pointing to them
	-----------------------------------------------
	in that case you may just install one package after another.
	
	example:

	mke2fs <target partition>
	mount <target partition> /mnt/hdw-target
	(again feel free to create more partitions)

	for i in /point/to/binaries/*.tar.bz2; do
		hdw-get install /mnt/hdw-target $i
	done

	this is not a nice way since what you want is more control of the
	packages going to be installed. please try to use the next method.

	install binaries according to a distribution package list
	---------------------------------------------------------
	in that case binaries should be located in bin_dir or net_addr of your
	hdw-get.conf file within the same directory structure as created by
	scripts/Create-Binary. wget is needed if you want to fetch the binaries
	via internet. please note that due to harddisk limitations binaries for
	only one arch/optimization and hdw version can be offered via internet.
	if you thnk this is bad and you could help out, please contact me!
	
	example:
	
	cat > /etc/hdw-get.conf << EOF
	net_addr="http://hackdaworld.dyndns.org/download"
	bin_addr="/usr/src/hdw-linux/binaries"
	# note that there dont exist binaries of all versions/archs
	hdw_version="0.3"
	hdw_arch="ia32" ; hdw_arch_opt="i686"
	EOF

	./scripts/Helper -create_dist_file
	./misc/hdw-tools/hdw-get dist-install /mnt/hdw-target \
						./distro/<target name>

	you may edit the distribution file, hdw-get should actually warn you
	about runtime dependencies. please note that dependency checking is
	still in development, even for the stable releases, so be sure you know
	what you are doing.

	hint: (how i am using hdw ...)
		o build target all-dev, skip packages that wont build by
		  touching a logfile
		o upload all the created binaries to a networked computer with
		  apache installed
		o boot your other debian/suse/old-hdw systems, get the hdw-linux
		  sources, create appropriate distro files and run hdw-get
		  (or even use an automated method using pxe boot,
		   see ./doc/FAI)

final steps
-----------

|--------------------------------------------------------------------------|
| you may want/need to mount proc/sysfs somewhere in tis steps, simply do: |
| mount /proc ; mount /sys  (when you think its needed)                    | 
|--------------------------------------------------------------------------|

- chroot to your new build system and compile a new kernel
  (you have to do this if you are not booting via nfsroot!)
	
	example:
	
	chroot /mnt/hdw-target /bin/bash \
		PATH="/sbin:/bin:/usr/sbin:/usr/bin" --login
	cd /usr/src/linux
	make menuconfig
	(disable CONFIG_ROOT_NFS, if you are not booting via nfsroot!)
	make dep bzImage modules modules_install

- yo may want to set a root password (default is 'hdw' iirc)
	
	example:
	
	passwd
	(type your password, yes, type it twice :)

- leave the chroot (beside you are not installing from rescue disks or via FAI)
  and make the kernel bootable

	example:
	
	exit
	cp /mnt/hdw-target/usr/src/linux/arch/i386/boot/bzImage \
		/boot/vmlinuz_hdw
	vi /etc/lilo.conf
	(add vmlinuz_hdw)
	lilo

- create essential console and null nodes (!important!)

	example:
	
	mknod -m 0666 /mnt/hdw-target/dev/null c 1 3
	mknod -m 0600 /mnt/hdw-target/dev/console c 5 1

	[ WARNING : your system will not start up without these nodes ]

- have a look at the config files in /mnt/hdw-target/etc/* and adjust to your 
  needs. reboot then - good luck! ;)
	
	example:
	
	init 6


troubleshooting:
----------------

- visit: irc.hackdaworld.dyndns.org, #hackdaworld
- visit: http://www.hackdaworld.dyndns.org/contents/mailing-list/
- visit: www.linuxfromscratch.org, www.linuxdoc.org, www.rocklinux.org ;)


regards hackbard
