| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
* helper/ext2cpio.c (add_link): Don't leak just-allocated buffer.
Instead, link it into links_head list.
|
|
|
|
|
|
| |
* helper/ext2initrd.c (read_module_deps): Don't leak filename.
(ext2_make_initrd): Don't leak "outfile".
* helper/utils.c (load_file): Don't leak a file pointer.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
ArchLinux used to keep its kernel in /boot/vmlinuz26 but, with
Linux 3.0, now uses /boot/vmlinuz-linux. Instead of just changing the
kernel filename and module directory, this change removes the ArchLinux
specific code, lets febootstrap find a kernel, and then computes the
module directory from the version string extracted from the actual kernel
file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Detect libz and, if present, define HAS_LIBZ and add -lz to Makefile's
LIBS variable.
Add entry on optional zlib package requirement.
Detect both uncompressed and gzipped kernel modules.
Some Linux distros (like ArchLinux) use gzipped kernel modules with
filenames like ext2.ko.gz. This change modifies the filename pattern
from (e.g.) "ext2.ko" to "ext2.ko*".
When available, use libz to read the module.
The init_module system call requires uncompressed kernel module bytes.
On some systems (e.g. ArchLinux) the modules are gzipped on disk.
Libz is used to read and uncompress gzipped disk files (*.ko.gz) or
transparently read uncompressed modules (*.ko).
|
| |
|
|
|
|
|
|
|
|
| |
This saves over 5 seconds during the slow path construction of the
appliance.
The ext2fs_close2 API is present in the e2fsprogs 'next' branch and
will be in a later e2fsprogs release (thanks Ted Ts'o).
|
|
|
|
|
| |
This step takes a considerable amount of time (about half of the total
construction time), so separately display a timestamped message for it.
|
| |
|
|
|
|
| |
This updates commit df569d49aa10af5995f771362ddc1400f16486e8.
|
|
|
|
|
|
|
|
|
|
|
|
| |
objcopy needs "output-target" and "binary-architecture" parameters
which makes it necessary to keep a list of known architectures.
The bin2s.pl script generates input for the GNU assembler which should
produce an object file that is equivalent to that produced by objcopy.
I have successfully tested the change on an amd64 Debian/unstable system.
RWMJ: Added bin2s.pl to EXTRA_DIST and updated .gitignore.
|
| |
|
|
|
|
|
|
|
|
| |
Modern kernels allow you to use the ext4.ko module to support ext2 and
ext3 access.
On Fedora, this is the default (albeit not as a module, so this code
path would not be tested yet).
|
| |
|
| |
|
|
|
|
| |
This is just code tidy-up.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous implementation had two problems: (I) Not all needed
kernel modules were copied to the initrd. (II) If a kernel module
depended on more than one other module, only the first dependency was
considered for the load order. Using 2.6.39-1-amd64 (Debian/unstable)
ext2.ko was not loaded and therefore the root FS could not be mounted.
The use of tsort(1) has been replaced with a set of functions that
build a DAG in memory and use that to calculate the list of modules to
be copied into the initrd and the order in which to load them.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Add module loading functionality into init.c, thus making
insmod.static unnecessary.
|
|
|
|
|
|
|
|
|
| |
After adding a line containing "/lib/modules" to hostfiles solved the
immediate problem for me -- febootstrap-supermin-helper finished its
run.
The attached patch makes sure that febootstrap-supermin-helper always
creates this directory.
|
| |
|
|
|
|
|
|
| |
The overhead is now 66 MB which is unfortunate. However 4 GB should
be enough for people who accidentally add kernel modules that are
hand-compiled with all the debuginfo information in them.
|
|
|
|
|
|
|
|
|
|
|
| |
The appliance root was 1GB. However the error message you got
if you overran this space was very obscure:
febootstrap-supermin-helper: ext2fs_file_write:
Could not allocate block in ext2 filesystem
This adds the name of the file that is failing, and replaces the error
message with something more meaningful.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Latest gcc (4.6.0) does not recognize the -all-static
option; see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46410
Using -static still results in a static init binary:
$ file helper/init
helper/init: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, stripped
$ ldd helper/init
not a dynamic executable
(cherry picked from commit 42a6e60307b8116dd888e9dae4960f12d895f73f)
|
|
|
|
|
| |
ArchLinux doesn't use the ordinary Linux kernel naming scheme.
(Thanks Thomas S Hatch for helping to diagnose the issue)
|
|
|
|
|
| |
Variation in the times of /dev/ptmx was causing the
appliance to be rebuilt too frequently.
|
| |
|
| |
|
|
|
|
|
| |
This is not packaged on Debian/Ubuntu, but we require it. Fail
with a useful error message if it is not available.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This complete rewrite of the building tools turns febootstrap
into a general purpose, cross-distro, supermin appliance only
build tool.
There is now only one program 'febootstrap' which is used to
build a supermin appliance from a list of packages.
Normal appliances are not supported.
The tools are incompatible with febootstrap 2.x (use the
febootstrap-2.x branch from git to get the old package).
|
|
|
|
|
|
|
|
|
| |
We weren't expanding ext2 directories and as a result we could
hit a limit when the directory grows larger than one block.
Note that this fix only applies for creating subdirectories.
For creating files (ie. ext2fs_link) we were already doing the
right thing.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bash automatically resets euid to uid when it executes. This means that the
effective user id of a program at the point it calls febootstrap-supermin-helper
will be lost if any part of execution chain involved bash. This in turn can
result in:
* the generation of an incorrect checksum, which contains the uid.
* the generation of supermin files with a mixture of owners
The -u and -g options allow the caller to pass in an explicit user and group to
run as. febootstrap-supermin-helper will set(u|g)id as appropriate.
|
|
|
|
|
| |
If usage information is displayed because of an error, it should go to stderr.
If it is displayed because the -h option was given it should go to stdout.
|
|
|
|
|
|
|
| |
Recent state of the elf-default-arch script and the hardcoded i386 arch doesn't
allow building on other arches than ix86 or x86_64. See attachment for a fix.
Can be easily extended to support additional secondary arches by adding new
patterns to the elf-default-arch script
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously in febootstrap-supermin-helper we would visit the
files in supermin.d in arbitrary (ie. readdir) order. This has
caused a series of heisenbugs where some implicit dependency
between these files has not been honoured. The latest one is
that '/etc/localtime' can be added to the appliance before '/etc'
has been created (and this operation fails).
Instead of continuing to chase these, this commit forces us to
visit the files in filename order by sorting them before visiting
them.
Note that in libguestfs, the current order is sufficient, because
the files are called:
base.img
daemon.img
hostfiles
|
| |
|
| |
|