From 0e0ff3af72d7e53ac6d53c90fd741100e21550fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 16 Nov 2004 01:45:22 +0000 Subject: [PATCH] Updated version of Ingo's script to build a valid Haiku boot image. It has not yet been tested in this version, so it might not work correctly. Needs Ingo's userland FS server. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9973 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- makehdimage | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100755 makehdimage diff --git a/makehdimage b/makehdimage new file mode 100755 index 0000000000..c67379ffdb --- /dev/null +++ b/makehdimage @@ -0,0 +1,132 @@ +#!/bin/sh + +# path of the checked out Haiku sources +sourceDir=/boot/home/develop/openbeos/current +# disk image path, size in MB +imagePath=/media/haiku.image +imageSize=40 +# ufs_mount path +ufsMount=/boot/home/develop/other/userlandfs/generated/distro/ufs_mount/ufs_mount + +# build everything needed +cd $sourceDir +RUN_WITHOUT_APP_SERVER=1 +jam -q kernel boot_loader config_manager pci isa ide scsi \ + ide_isa bfs blkman fast_log ide_adapter locked_pool \ + scsi_periph intel keyboard scsi_dsk scsi_cd libbe.so \ + rld.so libroot.so init kernel_false consoled \ + kernel_fortune kernel_true ls df mount unmount \ + kernel_uname df libnet.so null zero random tty sh ps || exit 1 + + +# create the image and the directory structure + +dd if=/dev/zero of=$imagePath bs=1M count=$imageSize +mkbfs $imagePath Haiku +mkdir -p /haiku +sync +$ufsMount obfs $imagePath /haiku || exit 1 + +cd /haiku +mkdir -p beos/system/add-ons/kernel/bus_managers +mkdir -p beos/system/add-ons/kernel/generic +mkdir -p beos/system/add-ons/kernel/file_systems +mkdir -p beos/system/add-ons/kernel/partitioning_systems +mkdir -p beos/system/add-ons/kernel/busses/ide +mkdir -p beos/system/add-ons/kernel/boot +mkdir -p beos/system/add-ons/kernel/drivers/bin +mkdir -p beos/system/add-ons/kernel/drivers/dev/disk/scsi +mkdir -p beos/bin +mkdir -p beos/system/lib +mkdir -p beos/system/boot +mkdir -p beos/etc +mkdir -p home + + +# modules + +cd $sourceDir/distro/x86.R1/beos/system/add-ons/kernel + +for f in bus_managers/isa bus_managers/ide bus_managers/scsi busses/ide/ide_isa \ + file_systems/bfs generic/blkman generic/fast_log generic/ide_adapter \ + generic/locked_pool generic/scsi_periph partitioning_systems/intel; do + cp $f /haiku/beos/system/add-ons/kernel/$f +done + +for f in drivers/dev/disk/scsi/scsi_dsk drivers/dev/disk/scsi/scsi_cd; do + name=drivers/bin/$(basename $f) + cp $name /haiku/beos/system/add-ons/kernel/$name +done + +cd $sourceDir/objects/x86.R1/add-ons/kernel + +for f in bus_managers/config_manager bus_managers/pci; do + name=$(basename $f) + cp $f/$name /haiku/beos/system/add-ons/kernel/$f +done + +# drivers +for f in drivers/arch/x86/keyboard/keyboard; do + cp $f /haiku/beos/system/add-ons/kernel/drivers/bin +done + +cd $sourceDir/distro/x86.R1/beos/system/add-ons/kernel/drivers/dev +for f in tty random null zero; do + cp $f /haiku/beos/system/add-ons/kernel/drivers/bin +done + + +# kernel +cp $sourceDir/objects/x86.R1/kernel/kernel /haiku/beos/system/kernel_x86 + + +# libs +cd $sourceDir/distro/x86.R1/beos/system/lib +cp libbe.so /haiku/beos/system/lib/ +cd $sourceDir/objects/x86.R1/kernel/ +cp rld.so libroot.so /haiku/beos/system/lib/ +cp /system/lib/libstdc++.r4.so /haiku/beos/system/lib/ + + +# apps +cd $sourceDir/objects/x86.R1/kernel +for f in false fortune ls ps true uname; do + cp kernel_$f /haiku/beos/bin/$f +done +cp $sourceDir/src/kernel/apps/fortune/fortunes /haiku/beos/etc/ +cp $sourceDir/distro/x86.R1/beos/bin/df /haiku/beos/bin/ +cd /haiku/beos/bin/ + + +# boot loader +cd /haiku/beos/system +objcopy -O binary $sourceDir/objects/x86.R1/kernel/boot_loader zbeos + + +# boot module links +cd /haiku/beos/system/add-ons/kernel/boot +for f in bus_managers/config_manager bus_managers/pci bus_managers/isa bus_managers/ide bus_managers/scsi busses/ide/ide_isa file_systems/bfs generic/blkman generic/fast_log generic/ide_adapter generic/locked_pool generic/scsi_periph partitioning_systems/intel; do + ln -fs /boot/beos/system/add-ons/kernel/$f $(basename $f) +done +for f in drivers/dev/disk/scsi/scsi_dsk drivers/dev/disk/scsi/scsi_cd; do + ln -fs /boot/beos/system/add-ons/kernel/drivers/bin/$(basename $f) . +done + + +# driver links +cd /haiku/beos/system/add-ons/kernel +for f in drivers/dev/keyboard drivers/dev/null drivers/dev/tty drivers/dev/zero \ + drivers/dev/disk/scsi/scsi_dsk drivers/dev/disk/scsi/scsi_cd; do + relName=$(echo $f | sed -e s@drivers/dev/@@) + linkName=bin/$(basename $f) + while [ $relName != . ]; do + relName=$(dirname $relName) + linkName=../$linkName + done + (cd $(dirname $f); ln -fs $linkName .) +done + + +cd / +sync +unmount /haiku