#
560961ee |
|
11-Aug-2020 |
Murai Takashi <tmurai01@gmail.com> |
Bootloader: replace blacklist with blocklist Various projects, both commercial and OSS, began to use inclusive terminology. There is no reason to not do it. In Haiku, bootloader uses Blacklist, which is recommended to replace with Denylist or Blocklist. I think Blocklist is appropriate here, since it's a list used to block offending driver at boot. Some strings remain unchanged for compatibility with previous naming, but this change prepares for later removal of these (once everyone has updated their kernel and bootloader). Change-Id: Id9105ff5e9fcb866000355089b5ef97bf63ee854 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3145 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
#
1cb37613 |
|
22-Apr-2019 |
Augustin Cavalier <waddlesplash@gmail.com> |
bootloader packagefs: Implement PrintErrorVarArgs. The package kit calls this function to print errors it hits when reading packages. We should never hit this in "normal operation", but it should help with debugging #14993.
|
#
211483cb |
|
14-Apr-2016 |
Fredrik Holmqvist <fredrik.holmqvist@gmail.com> |
EFI: Initial test EFI application * Only set HAIKU_BOOT_PLATFORM to bios_ia32 if not defined * Add gnuefi build feature * Introduce BOOT_LDFLAGS, and move options for passing to linker into ArchitectureSetup * x86_64 compile fixes for warnings in boot loader * loader/elf.cpp: don't include ELF32 support when targeting EFI * relocation_func.cpp: copy of the relocation code from gnuefi to make _relocate extern "C", and avoid including <efilib.h> * boot_loader_efi.ld: copy of gnuefi's elf_x86_64_efi.lds, modified to include support for C++ constructors, etc. Keep in sync with the gnuefi package Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
|
#
e527b796 |
|
12-Jul-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Switch package file accessor classes to use BPositionIO * PackageFileHeap{Reader,Writer} as well as Package{Reader,Writer} and their implementation and super classes do now internally use a BPositionIO instead of a FD to access the package file. This provides more flexibility needed for features to come. * BPackageReader has already grown a new Init() version with a BPositionIO* parameter.
|
#
c04f3a62 |
|
20-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
boot loader: Add safe mode blacklist submenu It's a browser for the system package content, where entries can be selected to blacklist them. The selected entries are removed from the packagefs instance in the boot loader, so that e.g. selected drivers won't be picked up. The paths are also added to the safe mode driver settings and will be interpreted when the system packagefs instance is mounted by the kernel.
|
#
3a7e0b00 |
|
19-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Support blacklisting entries in packages In each installation location, it is now possible to create a settings file "packages" that allows to blacklist entries contained in packages. The format is: Package <package name> { EntryBlacklist { <entry path> ... } } ... <package name> is the base name (no version) of the respective package (e.g. "haiku"), <entry path> is an installation location relative path (e.g. "add-ons/Translators/FooTranslator"). Blacklisted entries will be ignored by packagefs, i.e. they won't appear in the file system. This addresses the issue that it may be necessary to remove a problematic file (e.g. driver, add-on, or library), which would otherwise require editing the containing package file. The settings file is not not "live". Changes take effect only after reboot (respectively when remounting the concerned packagefs volume).
|
#
6ef9697b |
|
25-Oct-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
boot loader: packagefs: Fix memory leak on unmount The PackageNodes weren't destroyed.
|
#
46122852 |
|
21-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Add caching for the package file heap reader * ReaderImplBase: - Add virtual CreateCachedHeapReader() which can create a cached reader based on the given heap reader. - Rename HeapReader() to RawHeapReader() and add HeapReader() for the cached heap reader. - Add DetachHeapReader() to allow a clients to remove the heap reader(s) after deleting the ReaderImplBase object. * packagefs: - Add CachedDataReader class, which wraps a given BAbstractBufferedDataReader and provides caching for it using a VMCache. The implementation is based on the IOCache implementation. - Use CachedDataReader to wrap the heap reader. For file data that means they are cached twice -- in the heap reader cache and in the file cache -- but due to the heap reader using a VMCache as well, the pages will be recycled automatically anyway. For attribute data the cache should be very helpful, since they weren't cached at all before.
|
#
d59e0feb |
|
20-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
package: Suppress version mismatch errors where V1 is supported * Add flags parameter to Init() of BPackageReader and friends. * Introduce flag B_HPKG_READER_DONT_PRINT_VERSION_MISMATCH_MESSAGE and don't print a version mismatch error when given. * package extract/list: Use the new flag.
|
#
1f633814 |
|
17-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
hpkg format: compress the whole heap Instead of handling compression for individual file/attribute data we do now compress the whole heap where they are stored. This significantly improves compression ratios. We still divide the uncompressed data into 64 KiB chunks and use a chunk offset array for the compressed chunks to allow for quick random access without too much overhead. The tradeoff is a limited possible compression ratio -- i.e. we won't be as good as tar.gz (though surprisingly with my test archives we did better than zip). The other package file sections (package attributes and TOC) are no longer compressed individually. Their uncompressed data are simply pushed onto the heap where the usual compression strategy applies. To simplify things the repository format has been changed in the same manner although it doesn't otherwise use the heap, since it only stores meta data. Due to the data compression having been exposed in public and private API, this change touches a lot of package kit using code, including packagefs and the boot loader packagefs support. The latter two haven't been tested yet. Moreover packagefs needs a new kind of cache so we avoid re-reading the same heap chunk for two different data items it contains.
|
#
0ee16518 |
|
14-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Rename BBlockBufferCache and friends to *Pool* Also move BBlockBufferPoolNoLock into BHPKG namespace with the other classes. Not sure why it wasn't there before.
|
#
cb893561 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Boot loader packagefs: Fix ".." lookups * PackageDirectory::Lookup(): Support "." and ".." lookups. * PackageLoaderContentHandler::HandleEntry(): If the entry doesn't have a parent directory, use the volume's root directory directly. This makes PackageVolume::AddNode() superfluous and also always passes a non-NULL parent directory to PackageNode::Init().
|
#
441b85e1 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Assign node IDs to packagefs nodes Fixes module loading. elf_load_image() checks the node ID to verify whether an image was already loaded, so giving all nodes the same ID only gets one image loaded. The IDs don't necessarily match the ones the kernel packagefs assigns, which could be a problem later on.
|
#
cbc85916 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add boot loader packagefs support * Add pread(). * Add Node::ReadLink() to read a symbolic link path. * Add Directory::LookupDontTraverse() and make Lookup() non-abstract. Lookup() is implemented via LookupDontTraverse() and Node::ReadLink(). * Adjust all FS implementations accordingly. * Add a packagefs implementation. Unlike other FS implementations it isn't a pseudo-module, but provides a function to explicitly mount a package file (packagefs_mount_file()). * Finish BootVolume::SetTo() implementation, mounting the package file and replacing fSystemDirectory. Now the boot loader can load the kernel and boot modules from a packaged system. The kernel boots up to the point where the boot volume is mounted.
|
#
e527b796319f21ca025f68e1964df140daa6de35 |
|
12-Jul-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Switch package file accessor classes to use BPositionIO * PackageFileHeap{Reader,Writer} as well as Package{Reader,Writer} and their implementation and super classes do now internally use a BPositionIO instead of a FD to access the package file. This provides more flexibility needed for features to come. * BPackageReader has already grown a new Init() version with a BPositionIO* parameter.
|
#
c04f3a625afa73d870e755e27e1ebdf9ea6c8038 |
|
20-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
boot loader: Add safe mode blacklist submenu It's a browser for the system package content, where entries can be selected to blacklist them. The selected entries are removed from the packagefs instance in the boot loader, so that e.g. selected drivers won't be picked up. The paths are also added to the safe mode driver settings and will be interpreted when the system packagefs instance is mounted by the kernel.
|
#
3a7e0b00147f7a33bc52cb75a56bde8d9652d92a |
|
19-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Support blacklisting entries in packages In each installation location, it is now possible to create a settings file "packages" that allows to blacklist entries contained in packages. The format is: Package <package name> { EntryBlacklist { <entry path> ... } } ... <package name> is the base name (no version) of the respective package (e.g. "haiku"), <entry path> is an installation location relative path (e.g. "add-ons/Translators/FooTranslator"). Blacklisted entries will be ignored by packagefs, i.e. they won't appear in the file system. This addresses the issue that it may be necessary to remove a problematic file (e.g. driver, add-on, or library), which would otherwise require editing the containing package file. The settings file is not not "live". Changes take effect only after reboot (respectively when remounting the concerned packagefs volume).
|
#
6ef9697b0028d73bf381f4b2dde87dd407c552bc |
|
25-Oct-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
boot loader: packagefs: Fix memory leak on unmount The PackageNodes weren't destroyed.
|
#
46122852f1dfbbf4bac6f5a634452ff90c5635ce |
|
21-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
packagefs: Add caching for the package file heap reader * ReaderImplBase: - Add virtual CreateCachedHeapReader() which can create a cached reader based on the given heap reader. - Rename HeapReader() to RawHeapReader() and add HeapReader() for the cached heap reader. - Add DetachHeapReader() to allow a clients to remove the heap reader(s) after deleting the ReaderImplBase object. * packagefs: - Add CachedDataReader class, which wraps a given BAbstractBufferedDataReader and provides caching for it using a VMCache. The implementation is based on the IOCache implementation. - Use CachedDataReader to wrap the heap reader. For file data that means they are cached twice -- in the heap reader cache and in the file cache -- but due to the heap reader using a VMCache as well, the pages will be recycled automatically anyway. For attribute data the cache should be very helpful, since they weren't cached at all before.
|
#
d59e0feb59b92ca19ecda2935369fd0fcc5a4f56 |
|
20-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
package: Suppress version mismatch errors where V1 is supported * Add flags parameter to Init() of BPackageReader and friends. * Introduce flag B_HPKG_READER_DONT_PRINT_VERSION_MISMATCH_MESSAGE and don't print a version mismatch error when given. * package extract/list: Use the new flag.
|
#
1f633814fa347b0bd822f683af731615df600347 |
|
17-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
hpkg format: compress the whole heap Instead of handling compression for individual file/attribute data we do now compress the whole heap where they are stored. This significantly improves compression ratios. We still divide the uncompressed data into 64 KiB chunks and use a chunk offset array for the compressed chunks to allow for quick random access without too much overhead. The tradeoff is a limited possible compression ratio -- i.e. we won't be as good as tar.gz (though surprisingly with my test archives we did better than zip). The other package file sections (package attributes and TOC) are no longer compressed individually. Their uncompressed data are simply pushed onto the heap where the usual compression strategy applies. To simplify things the repository format has been changed in the same manner although it doesn't otherwise use the heap, since it only stores meta data. Due to the data compression having been exposed in public and private API, this change touches a lot of package kit using code, including packagefs and the boot loader packagefs support. The latter two haven't been tested yet. Moreover packagefs needs a new kind of cache so we avoid re-reading the same heap chunk for two different data items it contains.
|
#
0ee1651856a4364bfa7ffd10f796baf35fb524d3 |
|
14-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Rename BBlockBufferCache and friends to *Pool* Also move BBlockBufferPoolNoLock into BHPKG namespace with the other classes. Not sure why it wasn't there before.
|
#
cb89356142930e4357e2419538cbc67751a331b4 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Boot loader packagefs: Fix ".." lookups * PackageDirectory::Lookup(): Support "." and ".." lookups. * PackageLoaderContentHandler::HandleEntry(): If the entry doesn't have a parent directory, use the volume's root directory directly. This makes PackageVolume::AddNode() superfluous and also always passes a non-NULL parent directory to PackageNode::Init().
|
#
441b85e1cc56ed04ee4dedbd37d98186ad0a1e74 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Assign node IDs to packagefs nodes Fixes module loading. elf_load_image() checks the node ID to verify whether an image was already loaded, so giving all nodes the same ID only gets one image loaded. The IDs don't necessarily match the ones the kernel packagefs assigns, which could be a problem later on.
|
#
cbc85916fb5c35022ba6e52eb5b55a93271b1fb6 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add boot loader packagefs support * Add pread(). * Add Node::ReadLink() to read a symbolic link path. * Add Directory::LookupDontTraverse() and make Lookup() non-abstract. Lookup() is implemented via LookupDontTraverse() and Node::ReadLink(). * Adjust all FS implementations accordingly. * Add a packagefs implementation. Unlike other FS implementations it isn't a pseudo-module, but provides a function to explicitly mount a package file (packagefs_mount_file()). * Finish BootVolume::SetTo() implementation, mounting the package file and replacing fSystemDirectory. Now the boot loader can load the kernel and boot modules from a packaged system. The kernel boots up to the point where the boot volume is mounted.
|