History log of /haiku/src/system/kernel/fs/vfs_boot.cpp
Revision Date Author Comments
# bf2786ef 05-Nov-2022 X512 <danger_mail@list.ru>

kernel: enable ramfs build and automount to shared_memory directory

This will allow proper operation of POSIX SHM API (shm_open etc.).
Now memory files are stored fully in memory and do not affect disk
storage (except swap if enabled).

Change-Id: Iae3ce1afa968df72e82198e598a273cbf7cb0269
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5802
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 99806fe3 22-Mar-2021 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

Anyboot CD detection, remove nr of partitions check

When booting from floppy image (BOOT_VOLUME_BOOTED_FROM_IMAGE)
we don't know the partition offset, and the number of partitions
are different for 32 bit and 64 bit anyboot cds. So don't check
for number of partitions.

This should only happen when BOOT_VOLUME_BOOTED_FROM_IMAGE
is set. Its intention is to signal if boot was from a floppy
image, so most boot platforms should not set it. It seems they
do, that probably needs a fix of its own.

Change-Id: I6b60a997b72b9928555840358257e15ff417fd42
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3819
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# b9fc38d9 13-Sep-2019 Augustin Cavalier <waddlesplash@gmail.com>

kernel/fs: Automatically tail syslog on "no boot partitions".

The real reason none were found is likely in the syslog.
Even if the last 15 messages do not have the real error, they
may be enough to point towards what the problem is, or at least
uniquely identify the issue.

Fixes #15348.


# a310e5e5 09-Sep-2019 Augustin Cavalier <waddlesplash@gmail.com>

kernel/fs: Continue even if InitialDeviceScan returns an error.

See inline comment. Should fix #15330.


# 1bdffaf4 09-Sep-2019 Augustin Cavalier <waddlesplash@gmail.com>

kernel/fs: Only dump devices and partitions under KDEBUG.

Avoids a lot of noise in release kernel syslogs.


# d7b12f71 26-May-2017 James Woodcock <tiphphin@gmail.com>

kernel/fs: Fix permissions on symlinks in root directory.

Various symbolic links (/bin, for example) in the root directory have
no read, write or execute permissions. This prevents non-privileved users
from logging in.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
Fixes #13530.


# 3aeed660 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# 6b3a5caf 14-Apr-2014 Ingo Weinhold <ingo_weinhold@gmx.de>

VFS: Pass packages state selected in boot loader to packagefs


# 8585939d 14-Apr-2014 Ingo Weinhold <ingo_weinhold@gmx.de>

VFS: Don't try to mount the no longer existing /boot/common packagefs


# fdaba7aa 27-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Skip boot device check sum test on CD boot

Whatever we read from the drive in the boot loader isn't what we can
read from the device later, so rather skip the check sum test for
identifying the boot device in the kernel when booting off CD. Fixes
#10147.


# 38fa81bf 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Remove B_COMMON*_DIRECTORY and kCommon*Directory constants

* This does intentionally break source compatibility, so that a review
of concerned code is forced.
* Binary compatibility should be maintained in most cases. The values
of the constants for the writable directories are now used for the
writable system directories. The values for the non-writable
directories are mapped to "/boot/system/data/empty/...", an empty or
non-existent directory, so that they will simply be skipped in search
paths. Only code that explicitly expects to find something in a
B_COMMON_* directory, will fail.


# cc0838da 12-Sep-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

VFS boot: Mount packagefs when booting off an image

... and the mounted boot volume looks like a PM Haiku. This gets the CD
boot going.


# e64db4da 25-Aug-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Also mount the packagefs at ~/config


# d7ec2fa3 20-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

A couple of format string fixes for tracing printfs.


# 6b87898a 22-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Code style fixes.


# 5915eeb4 21-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Some improvements to the previous changes made to vfs_boot.cpp suggested by Ingo.


# d8efc6ca 21-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Changes to kernel_args to make it identical for x86 and x86_64.

* Added a FixedWidthPointer template class which uses 64-bit storage to hold
a pointer. This is used in place of raw pointers in kernel_args.
* Added __attribute__((packed)) to kernel_args and all structures contained
within it. This is necessary due to different alignment behaviour for
32-bit and 64-bit compilation with GCC.
* With these changes, kernel_args will now come out the same size for both
the x86_64 kernel and the loader, excluding the preloaded_image structure
which has not yet been changed.
* Tested both an x86 GCC2 and GCC4 build, no problems caused by these changes.


# 192af9e0 20-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Changed addr_range to use uint64.

I've tested this change on x86, causing no issues. I've checked over the code
for all other platforms and made the necessary changes and to the best of my
knowledge they should also still work, but I haven't actually built and
tested them. Once I've completed the kernel_args changes the other platforms
will need testing.


# 93cb9538 20-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Don't store a KMessage in kernel_args for the boot volume, only the buffer address/size.

Pointers in kernel_args are going to be changed to unconditionally use 64-bit
storage (to make kernel_args compatible with both the x86 and x86_64 kernels).
KMessage stores a pointer to its buffer, however since KMessage is used
outside of the boot code it is undesirable to change it to use 64-bit storage
for the pointer as it may add additional overhead on 32-bit builds. Therefore,
only store the buffer address and size and then construct a KMessage from
those in the kernel.


# 4be4fc6b 15-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

More 64-bit compilation/safety fixes.


# bde19722 10-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move <directories.h> to headers/private/system


# 323b6546 21-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Filtered flat import of Oliver's svn package management branch

Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.


# f19b93ff 14-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Missing newline in error message


# 407c09e2 10-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Create /packages symlink on boot

Rename the package links directory from /package-links to just /packages
and create it when booting.


# 70de928e 10-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move <directories.h> to headers/private/system


# 76ca9833 03-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Postpone setting gBootDevice until after packagefs

The modules code uses gBootDevice as an indicator that modules can be
loaded from the boot volume. This is not the case until packagefs has
been mounted, though, so we postpone setting gBootDevice.


# 57af7489 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Also mount "common" packagefs on boot


# ffc66d8d 23-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Specify mount type when mounting packagefs


# 60043152 21-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Mount packagefs with "system" shine-through mode


# 18e7d26c 19-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Mount the /boot/system packagefs on boot


# 3dfd9cb9 16-Jun-2011 Oliver Tappe <zooey@hirschkaefer.de>

Flat commit of all changes from package-management branch in svn


# 63fe660c 21-Apr-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Replaced a few hardcoded partitioning/file system type names by the
respective constants.
* compare_image_boot(): Compare volume names case insensitively.
* DiskBootMethod::IsBootDevice(): For BOOT_METHOD_CD only accept devices with
removable media.
* DiskBootMethod::IsBootPartition(): Added special recognition for anyboot
CDs. Since their partition types aren't kPartitionTypeDataSession,
compare_cd_boot() didn't prefer them and it was more or less random whether
it was chosen when other Haiku installations where available. Moreover
selecting the CD in the boot loader menu would cause the kernel not to find
it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36403 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 29ddbdbb 16-Jan-2010 Axel Dörfler <axeld@pinc-software.de>

* Moved the "var" directory to /boot/common/.
* Moved the "tmp" directory out of /var, and to /boot/common/cache/.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35104 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 492dd892 10-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Removed /system/etc directory.
* /etc now points to /boot/common/etc/, and the remaining contents of the former
"etc" are put there now, as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33986 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1dd63455 06-Sep-2009 Michael Lotz <mmlr@mlotz.ch>

If the boot volume is BFS and read-only mount it with the write_overlay. This
allows for BFS based LiveCDs. Still this whole name matching feels hacky.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32976 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c39811b8 18-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed stupid typo with big consequences as pointed out by Rene. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31098 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 477a4ca7 05-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* vfs_boot.cpp now also exports gReadOnlyBootDevice which is true when the
boot device is actually read-only (even if it's using the write overlay).
* Do not create a swap file on a read-only device - this would really be a
stupid use of the write overlay (just saw this happening on an older
machine).
* Made swap_file_{add|delete}() take a const char* path - there was no reason
this was writable, and this also avoids casting away the const when adding
the default swap file.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30975 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 317bd7dd 03-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Changed directory structure as suggested on the mailing list.
* Made the TimeZoneView less error prone, and also actually use Haiku code (the
previous check didn't work since it used #if, not #ifdef).
* Also took the liberty to rename our boot loader to haiku_loader, since I had
to update the nasm binary anyway. Updated the assembly sources to nasm 2.0.
* I haven't found where the synth location in the MIDI code is specified,
though.
* Also, NetBootArchive, and FloppyBootImage haven't been updated yet. Will do
so next.
* Some optional packages still put their license to beos/etc/licenses. I didn't
update them yet, as we'll probably do so anyway at some point. Also, I think
we might want to introduce a common/data/licenses instead for those.
* If you encounter any problems, please tell!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29876 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c41ac5b0 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Remove the original overlay filesystem.
* Add attribute_overlay and write_overlay to the image/floppy instead.
* Mount a iso9660 boot volume with both write and attribute overlay for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29261 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bea22f62 14-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Add overlay filesystem to the boot floppy and normal image.
* When booting from an iso, mount the boot volume with the overlay layer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29202 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a079780e 13-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Add the iso9660 filesystem to the floppy image.
* Allow iso9660 partitions to be boot partitions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29193 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6075e354 26-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Call module_init_post_boot_device() right after the boot volume has
been mounted, before anyone could try to load any modules from it.
Also pass it a flag whether the boot volume is where the boot loader
pre-loaded the modules from.
* module_init_post_boot_device() changes the pre-loaded module image
paths to normalized boot volume paths, now. Got rid of the code in
register_preloaded_module_image() which tried something like this.
* Changed module image ref counting. A referenced module has single
reference to its image, which is released when the module becomes
unreferenced.
* get_module() for a reference module will not try to re-get and re-set
the module's image anymore. That could lead to a similar module (from
different paths) being loaded at the same time. A module from a new
file can only be loaded when the old one has been put completely.
* Simplified B_KEEP_ALIVE module handling a bit. When the module is
initialized, we add another reference, which we'll never free. Thus
the module remains loaded without special handling. Removed
module_image::keep_loaded. A B_KEEP_ALIVE module remains referenced
and thus its image remains referenced, too.
* Removed module::file, a cached path to the module's image. An
optimization that wouldn't work with multiple root directories for
modules (/boot/beos/..., /boot/common/...) or when module files were
moved. get_module() does now always search the image file, when the
module is still unreferenced. This should be a bit slower than before,
but I didn't notice any difference in VMware at least. If it turns out
to be a problem we could introduce a more intelligent cache that stays
up to date by using node monitoring.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27752 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a1209343 10-Jul-2008 Axel Dörfler <axeld@pinc-software.de>

* Moved KMessage field printing from vfs_boot.cpp::get_boot_partitions() into
KMessage::Dump().
* Improved message dump output a bit (more concise).
* get_boot_partitions() now simply calls KMessage::Dump() instead.
* Added a KMessage::IsEmpty() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26365 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6e36a49e 05-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added _kern_create_pipe() syscall, creating a pipe as an entryless
FIFO. Reimplemented pipe() to use it.
* pipefs is no longer mounted. Will remove the superfluous code soon.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24823 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 06da81f0 03-Apr-2008 Michael Lotz <mmlr@mlotz.ch>

Implement node monitoring in the kernel disk device manager.

* Added {Create|Delete}Device() analogous to {Create|Delete}FileDevice
* Added a small DeviceWatcher class that reacts to entry creation/removal
* Implemented a way to start/stop node monitoring
* Start watching for devices after the boot volume has been mounted and the
the second initial scan was run

The disk device manager now creates and scans a device when a "raw" node is
published and deletes the device on removal. This makes hot-plugging of disk
devices (for example memory sticks using usb_disk) work. Their partitions will
be scanned and published so they can be mounted. Somehow the removal of the
partitions does not yet work however, any insights are welcome.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24777 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 51877273 26-Dec-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

dump all found devices and partitions to serial debug output


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23161 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fe679b9f 19-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

axeld+bonefish:
* Refactored RescanDiskSystems(). Pulled out a function
_RescanDiskSystems() that scans for either file or partitioning
systems. RescanDiskSystems(), which scanned for file systems only
before, is used from the constructor as well (open_module_list()
works in the early boot process since a while).
* Made InitialDeviceScan() and partition scanning safe to be called a second
time. We call it directly after the kernel has mounted the boot
volume, now, so that additional disk systems from the boot volume have a
chance to recognize previously unrecognized partitions. This is a
temporary change only; later the disk device manager shall
automatically find out when new disk systems/devices/whatever are
available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21655 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1fa400cd 16-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

The partition offset is int64, of course, not bool. Sometimes one wishes,
C++ had a stricter typing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21624 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a199128 15-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

* Now checks if the BootMethod allocation succeeds.
* Minor cleanup, reordered header files to go from private/local to public/global.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21623 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e8dc2a9 14-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

[Sorry, couldn't split this one up any further.]
* Images preloaded by the boot loader had to be modules to be of any use
to the kernel. Extended the mechanism so that any images not accepted
by the module code would later be tried to be added as drivers by the
devfs. This is a little hacky ATM, since the devfs manages the drivers
using a hash map keyed by the drivers inode ID, which those drivers
obviously don't have.
* The devfs emulates read_pages() using read(), if the device driver
doesn't implement the former (all old-style drivers), thus making it
possible to BFS, which uses the file cache which in turn requires
read_pages(), on the device. write_pages() emulation is still missing.
* Replaced the kernel_args::boot_disk structure by a KMessage, which can
more flexibly be extended and deals more gracefully with
arbitrarily-size data. The disk_identifier structure still exists,
though. It is added as message field in cases where needed (non net
boot). Moved the boot_drive_number field of the bios_ia32 platform
specific args into the message.
* Made the stage 1 PXE boot loader superfluous. Moved the relevant
initialization code into the stage 2 loader, which can now be loaded
directly via PXE.
* The PXE boot loader does now download a boot tgz archive via TFTP. It
does no longer use the RemoteDisk protocol (it could actually be
removed from the boot loader). It also parses the DHCP options in the
DHCPACK packet provided by PXE and extracts the root path to be
mounted by the kernel.
* Reorganized the boot volume search in the kernel (vfs_boot.cpp) and
added support for network boot. In this case the net stack is
initialized and the network interface the boot loader used is brought
up and configured. Since NBD and RemoteDisk are our only options for
net boot (and those aren't really configurable dynamically) ATM, the
the boot device is found automatically by the disk device manager.

Booting via PXE does work to some degree now. The most grievous problem
is that loading certain drivers or kernel modules (or related activity)
causes a reboot (likely a triple fault, though one wonders where our
double fault handler is on vacation). Namely the keyboard and mouse input
server add-ons need to be deactivated as well as the media server.
A smaller problem is the net server, which apparently tries to
(re-)configure the network interface we're using to boot, which
obviously doesn't work out that well. So, if all this stuff is disabled
Haiku does fully boot, when using the RemoteDisk protocol (not being
able to use keyboard or mouse doesn't make this a particular fascinating
experience, though ;-)). I had no luck with NBD -- it seemed to have
protocol problems with the servers I tried.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21611 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 43792b9e 12-Jan-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

propagate required settings for the remote disk from boot loader to kernel (client-ip, server-ip, server-port)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f5fa54f7 12-Jan-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Improved error reporting when a failure to find/mount the root device occurs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19774 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4c3702d4 04-Sep-2006 Jérôme Duval <korli@users.berlios.de>

moved rescan call to vfs_mount_boot_file_system() as suggested by axeld :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18738 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 65bd831c 05-May-2006 Axel Dörfler <axeld@pinc-software.de>

* KDiskDeviceManager::_ScanPartition() can now run synchronously (and execute the
scan job in the calling thread).
* KDiskDeviceManager::InitialDeviceScan() now runs synchronously, so that
get_boot_partitions() doesn't need to do this ugly wait hack.
* KDiskDeviceManager::CreateFileDevice() can now run synchronously as well, which
fixes a deadlock in fs_mount() - note, mounting file devices still doesn't work,
though as Haiku's BFS doesn't allow this right now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17334 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2a62d0d6 28-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Added a second pass to the boot device retrieval in case nothing has been found.
Right now, the size of the device is ignored in the second pass. Maybe this helps
with bug #357.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16917 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fabe8c62 27-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

The kernel boot code now supports the unknown bus/device method to identify the
boot volume. The other (better) methods are now disabled in the boot loader.
This fixes bug #241.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16895 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5a2ad00c 20-Feb-2006 Jérôme Duval <korli@users.berlios.de>

fix a TODO in _user_mount : added an argsLength parameter


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16480 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ce357f41 30-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

Removed "bootfs" and the support for it in other components.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14585 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 888248d4 24-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

The kernel now panics if it didn't found any possible boot partitions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14506 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3ea780cd 18-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

If booted from an image, the list of possible boot partitions is now ordered by
some heuristic: when you booted from a CD, CDs are preferred; else, volumes with
names like "Haiku" or "System" are preferred - if someone has better ideas, please
shout.
Note, this heuristic will only come into play if the boot loader was loaded from
an image (ie. floppy/CD/network), and you didn't choose any boot device.
Added evil methods to the Stack class that come in handy (you can now directly
access the array) for this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14410 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2db3fced 17-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

Moved vfs_bootstrap_file_systems() and vfs_mount_boot_file_system() out of vfs.cpp
and into its own file vfs_boot.cpp.

Added basic support for booting from CD - it doesn't give CDs a higher priority,
so you could end up booting from HD when you didn't explicetly select "CD-ROM"
in the boot loader. Eventually, it should only boot from HD in this case, if
booting from CD failed (because of a missing boot partition or whatever).

fs_mount(), _kern_mount(), and _user_mount() will now return the dev_t of the
mounted device, and not just B_OK. Maybe we should have fs_unmount() work on
a dev_t instead of a path as well...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14403 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3aeed6607cd07762c0e709633c012b3a632dbad9 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# 6b3a5caf99c309375a67b4f19ce477306b9aa4ba 14-Apr-2014 Ingo Weinhold <ingo_weinhold@gmx.de>

VFS: Pass packages state selected in boot loader to packagefs


# 8585939dca2919322b52ce62cceb7497bc71aae5 14-Apr-2014 Ingo Weinhold <ingo_weinhold@gmx.de>

VFS: Don't try to mount the no longer existing /boot/common packagefs


# fdaba7aaa588f2808e66c439db0bb4ea8bebbf5e 27-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Skip boot device check sum test on CD boot

Whatever we read from the drive in the boot loader isn't what we can
read from the device later, so rather skip the check sum test for
identifying the boot device in the kernel when booting off CD. Fixes
#10147.


# 38fa81bf8f0ccc37a615a9f5bd333f9b781322b3 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Remove B_COMMON*_DIRECTORY and kCommon*Directory constants

* This does intentionally break source compatibility, so that a review
of concerned code is forced.
* Binary compatibility should be maintained in most cases. The values
of the constants for the writable directories are now used for the
writable system directories. The values for the non-writable
directories are mapped to "/boot/system/data/empty/...", an empty or
non-existent directory, so that they will simply be skipped in search
paths. Only code that explicitly expects to find something in a
B_COMMON_* directory, will fail.


# cc0838da34abe9840b09cc5c9540b7ed9e85bd45 12-Sep-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

VFS boot: Mount packagefs when booting off an image

... and the mounted boot volume looks like a PM Haiku. This gets the CD
boot going.


# e64db4da44a5c23edf1e8c91c46e6d37072b3de1 25-Aug-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Also mount the packagefs at ~/config


# d7ec2fa3bfda5ba1674e97528fba2f4cfec00144 20-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

A couple of format string fixes for tracing printfs.


# 6b87898af5966561770a79a17f13415c47c38aa0 22-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Code style fixes.


# 5915eeb461026dabc5e2ccd61b650cd7fc0e40a7 21-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Some improvements to the previous changes made to vfs_boot.cpp suggested by Ingo.


# d8efc6caf6babe278c48e8aa3277376fb68ff455 21-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Changes to kernel_args to make it identical for x86 and x86_64.

* Added a FixedWidthPointer template class which uses 64-bit storage to hold
a pointer. This is used in place of raw pointers in kernel_args.
* Added __attribute__((packed)) to kernel_args and all structures contained
within it. This is necessary due to different alignment behaviour for
32-bit and 64-bit compilation with GCC.
* With these changes, kernel_args will now come out the same size for both
the x86_64 kernel and the loader, excluding the preloaded_image structure
which has not yet been changed.
* Tested both an x86 GCC2 and GCC4 build, no problems caused by these changes.


# 192af9e0afd2f3d0cbaf5c935480343a70c8ff53 20-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Changed addr_range to use uint64.

I've tested this change on x86, causing no issues. I've checked over the code
for all other platforms and made the necessary changes and to the best of my
knowledge they should also still work, but I haven't actually built and
tested them. Once I've completed the kernel_args changes the other platforms
will need testing.


# 93cb9538be54a2dd4ab6097453ac7d521a9a0b6c 20-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

Don't store a KMessage in kernel_args for the boot volume, only the buffer address/size.

Pointers in kernel_args are going to be changed to unconditionally use 64-bit
storage (to make kernel_args compatible with both the x86 and x86_64 kernels).
KMessage stores a pointer to its buffer, however since KMessage is used
outside of the boot code it is undesirable to change it to use 64-bit storage
for the pointer as it may add additional overhead on 32-bit builds. Therefore,
only store the buffer address and size and then construct a KMessage from
those in the kernel.


# 4be4fc6b1faddbd037146214a0011d320842b4f3 15-Jun-2012 Alex Smith <alex@alex-smith.me.uk>

More 64-bit compilation/safety fixes.


# bde197222943d6f975a0d82dbfe263ffcc1834ba 10-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move <directories.h> to headers/private/system


# 323b65468e5836bb27a5e373b14027d902349437 21-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Filtered flat import of Oliver's svn package management branch

Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.


# f19b93ff219652717c42346226293e4a69356d42 14-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Missing newline in error message


# 407c09e2d9f356e5a69b40091c0c64c088ec7606 10-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Create /packages symlink on boot

Rename the package links directory from /package-links to just /packages
and create it when booting.


# 70de928ed8a7bda307dd4aaf814991ce311f30ec 10-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move <directories.h> to headers/private/system


# 76ca98339d0b98f4f3c17c510ddcf134bb001cab 03-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Postpone setting gBootDevice until after packagefs

The modules code uses gBootDevice as an indicator that modules can be
loaded from the boot volume. This is not the case until packagefs has
been mounted, though, so we postpone setting gBootDevice.


# 57af7489207c9c9cd504ecdf221b1f59caee170e 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Also mount "common" packagefs on boot


# ffc66d8dd7ed88062eba71386d61e8b310f42d6d 23-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Specify mount type when mounting packagefs


# 60043152eb2bd423a94fd780c15276027cbe5c6c 21-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Mount packagefs with "system" shine-through mode


# 18e7d26c8d6e4cc9aba4efa9f7ff7ddf44335620 19-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Mount the /boot/system packagefs on boot


# 3dfd9cb95ce45f59160d50975210bc55e3fc0709 16-Jun-2011 Oliver Tappe <zooey@hirschkaefer.de>

Flat commit of all changes from package-management branch in svn


# 63fe660c1bf8ba22be3e0e251108a2512c0fc8b3 21-Apr-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Replaced a few hardcoded partitioning/file system type names by the
respective constants.
* compare_image_boot(): Compare volume names case insensitively.
* DiskBootMethod::IsBootDevice(): For BOOT_METHOD_CD only accept devices with
removable media.
* DiskBootMethod::IsBootPartition(): Added special recognition for anyboot
CDs. Since their partition types aren't kPartitionTypeDataSession,
compare_cd_boot() didn't prefer them and it was more or less random whether
it was chosen when other Haiku installations where available. Moreover
selecting the CD in the boot loader menu would cause the kernel not to find
it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36403 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 29ddbdbb53af79445de933b590598e4342a34ae9 16-Jan-2010 Axel Dörfler <axeld@pinc-software.de>

* Moved the "var" directory to /boot/common/.
* Moved the "tmp" directory out of /var, and to /boot/common/cache/.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35104 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 492dd892ce90cc1dc4916eb54b656f04cc480ee6 10-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Removed /system/etc directory.
* /etc now points to /boot/common/etc/, and the remaining contents of the former
"etc" are put there now, as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33986 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1dd6345561db3086c54b4cd0f8b8ba69abdb5f10 06-Sep-2009 Michael Lotz <mmlr@mlotz.ch>

If the boot volume is BFS and read-only mount it with the write_overlay. This
allows for BFS based LiveCDs. Still this whole name matching feels hacky.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32976 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c39811b8b3ee653affa785867dc51d2cff64fb40 18-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed stupid typo with big consequences as pointed out by Rene. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31098 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 477a4ca70ef1e6947178e35c639e16d4c7298f32 05-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* vfs_boot.cpp now also exports gReadOnlyBootDevice which is true when the
boot device is actually read-only (even if it's using the write overlay).
* Do not create a swap file on a read-only device - this would really be a
stupid use of the write overlay (just saw this happening on an older
machine).
* Made swap_file_{add|delete}() take a const char* path - there was no reason
this was writable, and this also avoids casting away the const when adding
the default swap file.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30975 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 317bd7dda3eb26d4d24ba5b0a831461119f70d34 03-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Changed directory structure as suggested on the mailing list.
* Made the TimeZoneView less error prone, and also actually use Haiku code (the
previous check didn't work since it used #if, not #ifdef).
* Also took the liberty to rename our boot loader to haiku_loader, since I had
to update the nasm binary anyway. Updated the assembly sources to nasm 2.0.
* I haven't found where the synth location in the MIDI code is specified,
though.
* Also, NetBootArchive, and FloppyBootImage haven't been updated yet. Will do
so next.
* Some optional packages still put their license to beos/etc/licenses. I didn't
update them yet, as we'll probably do so anyway at some point. Also, I think
we might want to introduce a common/data/licenses instead for those.
* If you encounter any problems, please tell!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29876 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c41ac5b0e1433d84f8519d0c62f8d438f50a80a8 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Remove the original overlay filesystem.
* Add attribute_overlay and write_overlay to the image/floppy instead.
* Mount a iso9660 boot volume with both write and attribute overlay for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29261 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bea22f624015d11d59d3b93d76358e035ccc013a 14-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Add overlay filesystem to the boot floppy and normal image.
* When booting from an iso, mount the boot volume with the overlay layer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29202 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a079780e8a83240e16484ed42103234dd2994a03 13-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Add the iso9660 filesystem to the floppy image.
* Allow iso9660 partitions to be boot partitions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29193 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6075e354abea9c571e3e74ecdc56662de736c4eb 26-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Call module_init_post_boot_device() right after the boot volume has
been mounted, before anyone could try to load any modules from it.
Also pass it a flag whether the boot volume is where the boot loader
pre-loaded the modules from.
* module_init_post_boot_device() changes the pre-loaded module image
paths to normalized boot volume paths, now. Got rid of the code in
register_preloaded_module_image() which tried something like this.
* Changed module image ref counting. A referenced module has single
reference to its image, which is released when the module becomes
unreferenced.
* get_module() for a reference module will not try to re-get and re-set
the module's image anymore. That could lead to a similar module (from
different paths) being loaded at the same time. A module from a new
file can only be loaded when the old one has been put completely.
* Simplified B_KEEP_ALIVE module handling a bit. When the module is
initialized, we add another reference, which we'll never free. Thus
the module remains loaded without special handling. Removed
module_image::keep_loaded. A B_KEEP_ALIVE module remains referenced
and thus its image remains referenced, too.
* Removed module::file, a cached path to the module's image. An
optimization that wouldn't work with multiple root directories for
modules (/boot/beos/..., /boot/common/...) or when module files were
moved. get_module() does now always search the image file, when the
module is still unreferenced. This should be a bit slower than before,
but I didn't notice any difference in VMware at least. If it turns out
to be a problem we could introduce a more intelligent cache that stays
up to date by using node monitoring.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27752 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a1209343884e1b6d0c1bfa79c30e40fdc52bd28b 10-Jul-2008 Axel Dörfler <axeld@pinc-software.de>

* Moved KMessage field printing from vfs_boot.cpp::get_boot_partitions() into
KMessage::Dump().
* Improved message dump output a bit (more concise).
* get_boot_partitions() now simply calls KMessage::Dump() instead.
* Added a KMessage::IsEmpty() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26365 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6e36a49e62cbad57eb5c88dd1a16ca39be3f4e3f 05-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added _kern_create_pipe() syscall, creating a pipe as an entryless
FIFO. Reimplemented pipe() to use it.
* pipefs is no longer mounted. Will remove the superfluous code soon.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24823 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 06da81f012843e3aec1bba94dcd5ac837492cafb 03-Apr-2008 Michael Lotz <mmlr@mlotz.ch>

Implement node monitoring in the kernel disk device manager.

* Added {Create|Delete}Device() analogous to {Create|Delete}FileDevice
* Added a small DeviceWatcher class that reacts to entry creation/removal
* Implemented a way to start/stop node monitoring
* Start watching for devices after the boot volume has been mounted and the
the second initial scan was run

The disk device manager now creates and scans a device when a "raw" node is
published and deletes the device on removal. This makes hot-plugging of disk
devices (for example memory sticks using usb_disk) work. Their partitions will
be scanned and published so they can be mounted. Somehow the removal of the
partitions does not yet work however, any insights are welcome.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24777 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 518772739f9ef939beff1df7555c8b91c8caf46d 26-Dec-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

dump all found devices and partitions to serial debug output


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23161 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fe679b9fa7210f8c0622ff33f723d87d8f8732ad 19-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

axeld+bonefish:
* Refactored RescanDiskSystems(). Pulled out a function
_RescanDiskSystems() that scans for either file or partitioning
systems. RescanDiskSystems(), which scanned for file systems only
before, is used from the constructor as well (open_module_list()
works in the early boot process since a while).
* Made InitialDeviceScan() and partition scanning safe to be called a second
time. We call it directly after the kernel has mounted the boot
volume, now, so that additional disk systems from the boot volume have a
chance to recognize previously unrecognized partitions. This is a
temporary change only; later the disk device manager shall
automatically find out when new disk systems/devices/whatever are
available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21655 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1fa400cd92c55cabc1ef95012068c31b183dae89 16-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

The partition offset is int64, of course, not bool. Sometimes one wishes,
C++ had a stricter typing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21624 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a199128dee9d321474ed44a856f2b47dd413ef1 15-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

* Now checks if the BootMethod allocation succeeds.
* Minor cleanup, reordered header files to go from private/local to public/global.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21623 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e8dc2a9bbbe768acdfd224a6a4af01918bb4ce0 14-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

[Sorry, couldn't split this one up any further.]
* Images preloaded by the boot loader had to be modules to be of any use
to the kernel. Extended the mechanism so that any images not accepted
by the module code would later be tried to be added as drivers by the
devfs. This is a little hacky ATM, since the devfs manages the drivers
using a hash map keyed by the drivers inode ID, which those drivers
obviously don't have.
* The devfs emulates read_pages() using read(), if the device driver
doesn't implement the former (all old-style drivers), thus making it
possible to BFS, which uses the file cache which in turn requires
read_pages(), on the device. write_pages() emulation is still missing.
* Replaced the kernel_args::boot_disk structure by a KMessage, which can
more flexibly be extended and deals more gracefully with
arbitrarily-size data. The disk_identifier structure still exists,
though. It is added as message field in cases where needed (non net
boot). Moved the boot_drive_number field of the bios_ia32 platform
specific args into the message.
* Made the stage 1 PXE boot loader superfluous. Moved the relevant
initialization code into the stage 2 loader, which can now be loaded
directly via PXE.
* The PXE boot loader does now download a boot tgz archive via TFTP. It
does no longer use the RemoteDisk protocol (it could actually be
removed from the boot loader). It also parses the DHCP options in the
DHCPACK packet provided by PXE and extracts the root path to be
mounted by the kernel.
* Reorganized the boot volume search in the kernel (vfs_boot.cpp) and
added support for network boot. In this case the net stack is
initialized and the network interface the boot loader used is brought
up and configured. Since NBD and RemoteDisk are our only options for
net boot (and those aren't really configurable dynamically) ATM, the
the boot device is found automatically by the disk device manager.

Booting via PXE does work to some degree now. The most grievous problem
is that loading certain drivers or kernel modules (or related activity)
causes a reboot (likely a triple fault, though one wonders where our
double fault handler is on vacation). Namely the keyboard and mouse input
server add-ons need to be deactivated as well as the media server.
A smaller problem is the net server, which apparently tries to
(re-)configure the network interface we're using to boot, which
obviously doesn't work out that well. So, if all this stuff is disabled
Haiku does fully boot, when using the RemoteDisk protocol (not being
able to use keyboard or mouse doesn't make this a particular fascinating
experience, though ;-)). I had no luck with NBD -- it seemed to have
protocol problems with the servers I tried.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21611 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 43792b9eeda5ba6d5fc57b0779537681a022cfeb 12-Jan-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

propagate required settings for the remote disk from boot loader to kernel (client-ip, server-ip, server-port)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f5fa54f79828b9fdf292f3c4c67db108e9f1c420 12-Jan-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Improved error reporting when a failure to find/mount the root device occurs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19774 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4c3702d42a79c7b69c5e2fcae190196380dfb034 04-Sep-2006 Jérôme Duval <korli@users.berlios.de>

moved rescan call to vfs_mount_boot_file_system() as suggested by axeld :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18738 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 65bd831cbbb39791cefba28f9a343cbe0c7210fe 05-May-2006 Axel Dörfler <axeld@pinc-software.de>

* KDiskDeviceManager::_ScanPartition() can now run synchronously (and execute the
scan job in the calling thread).
* KDiskDeviceManager::InitialDeviceScan() now runs synchronously, so that
get_boot_partitions() doesn't need to do this ugly wait hack.
* KDiskDeviceManager::CreateFileDevice() can now run synchronously as well, which
fixes a deadlock in fs_mount() - note, mounting file devices still doesn't work,
though as Haiku's BFS doesn't allow this right now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17334 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2a62d0d6c5cb472a842c959adf3bef1ebc0d89fb 28-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Added a second pass to the boot device retrieval in case nothing has been found.
Right now, the size of the device is ignored in the second pass. Maybe this helps
with bug #357.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16917 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fabe8c62ff591d112290ac797243751693981bab 27-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

The kernel boot code now supports the unknown bus/device method to identify the
boot volume. The other (better) methods are now disabled in the boot loader.
This fixes bug #241.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16895 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5a2ad00cab1adde7fe59540ca5ef692c7e83b3a3 20-Feb-2006 Jérôme Duval <korli@users.berlios.de>

fix a TODO in _user_mount : added an argsLength parameter


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16480 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ce357f41f9e67b3e4c00053160bc6ea69c2cdf06 30-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

Removed "bootfs" and the support for it in other components.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14585 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 888248d42e6550917e46799b8f84c7fcf070e97e 24-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

The kernel now panics if it didn't found any possible boot partitions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14506 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3ea780cdf9eb1d20ab301d305d5064443e51fc14 18-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

If booted from an image, the list of possible boot partitions is now ordered by
some heuristic: when you booted from a CD, CDs are preferred; else, volumes with
names like "Haiku" or "System" are preferred - if someone has better ideas, please
shout.
Note, this heuristic will only come into play if the boot loader was loaded from
an image (ie. floppy/CD/network), and you didn't choose any boot device.
Added evil methods to the Stack class that come in handy (you can now directly
access the array) for this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14410 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2db3fced5f119bb3f7c8b8a3ac3fe60190f76e6c 17-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

Moved vfs_bootstrap_file_systems() and vfs_mount_boot_file_system() out of vfs.cpp
and into its own file vfs_boot.cpp.

Added basic support for booting from CD - it doesn't give CDs a higher priority,
so you could end up booting from HD when you didn't explicetly select "CD-ROM"
in the boot loader. Eventually, it should only boot from HD in this case, if
booting from CD failed (because of a missing boot partition or whatever).

fs_mount(), _kern_mount(), and _user_mount() will now return the dev_t of the
mounted device, and not just B_OK. Maybe we should have fs_unmount() work on
a dev_t instead of a path as well...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14403 a95241bf-73f2-0310-859d-f6bbb57e9c96