mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-09 05:16:47 +00:00
Fix dependencies of initramfs
This commit is contained in:
parent
c15eb2299b
commit
4eff679eac
2
.github/workflows/kernel_test.yml
vendored
2
.github/workflows/kernel_test.yml
vendored
@ -35,7 +35,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Ktest Unit Test
|
- name: Ktest Unit Test
|
||||||
id: ktest_unit_test
|
id: ktest_unit_test
|
||||||
run: make update_initramfs && make ktest
|
run: make ktest
|
||||||
|
|
||||||
# TODO: add component check.
|
# TODO: add component check.
|
||||||
|
|
||||||
|
13
Makefile
13
Makefile
@ -114,8 +114,12 @@ install_osdk:
|
|||||||
$(CARGO_OSDK):
|
$(CARGO_OSDK):
|
||||||
@make --no-print-directory install_osdk
|
@make --no-print-directory install_osdk
|
||||||
|
|
||||||
build: $(CARGO_ODSK)
|
.PHONY: initramfs
|
||||||
|
initramfs:
|
||||||
@make --no-print-directory -C regression
|
@make --no-print-directory -C regression
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
|
build: initramfs $(CARGO_OSDK)
|
||||||
@cd kernel && cargo osdk build $(CARGO_OSDK_ARGS)
|
@cd kernel && cargo osdk build $(CARGO_OSDK_ARGS)
|
||||||
|
|
||||||
.PHONY: tools
|
.PHONY: tools
|
||||||
@ -133,7 +137,7 @@ test:
|
|||||||
done
|
done
|
||||||
|
|
||||||
.PHONY: ktest
|
.PHONY: ktest
|
||||||
ktest: $(CARGO_OSDK)
|
ktest: initramfs $(CARGO_OSDK)
|
||||||
@# Exclude linux-bzimage-setup from ktest since it's hard to be unit tested
|
@# Exclude linux-bzimage-setup from ktest since it's hard to be unit tested
|
||||||
@for dir in $(OSDK_CRATES); do \
|
@for dir in $(OSDK_CRATES); do \
|
||||||
[ $$dir = "framework/libs/linux-bzimage/setup" ] && continue; \
|
[ $$dir = "framework/libs/linux-bzimage/setup" ] && continue; \
|
||||||
@ -173,8 +177,3 @@ clean:
|
|||||||
@cargo clean
|
@cargo clean
|
||||||
@cd docs && mdbook clean
|
@cd docs && mdbook clean
|
||||||
@make --no-print-directory -C regression clean
|
@make --no-print-directory -C regression clean
|
||||||
|
|
||||||
.PHONY: update_initramfs
|
|
||||||
update_initramfs:
|
|
||||||
@make --no-print-directory -C regression clean
|
|
||||||
@make --no-print-directory -C regression
|
|
||||||
|
@ -5,9 +5,9 @@ CUR_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH)))
|
|||||||
BUILD_DIR := $(CUR_DIR)/build
|
BUILD_DIR := $(CUR_DIR)/build
|
||||||
VDSO_DIR := $(BUILD_DIR)/linux_vdso
|
VDSO_DIR := $(BUILD_DIR)/linux_vdso
|
||||||
INITRAMFS := $(BUILD_DIR)/initramfs
|
INITRAMFS := $(BUILD_DIR)/initramfs
|
||||||
|
INITRAMFS_FILELIST := $(BUILD_DIR)/initramfs.filelist
|
||||||
INITRAMFS_IMAGE := $(BUILD_DIR)/initramfs.cpio.gz
|
INITRAMFS_IMAGE := $(BUILD_DIR)/initramfs.cpio.gz
|
||||||
EXT2_IMAGE := $(BUILD_DIR)/ext2.img
|
EXT2_IMAGE := $(BUILD_DIR)/ext2.img
|
||||||
SHELL := /bin/bash
|
|
||||||
INITRAMFS_EMPTY_DIRS := \
|
INITRAMFS_EMPTY_DIRS := \
|
||||||
$(INITRAMFS)/sbin \
|
$(INITRAMFS)/sbin \
|
||||||
$(INITRAMFS)/root \
|
$(INITRAMFS)/root \
|
||||||
@ -25,11 +25,12 @@ INITRAMFS_ALL_DIRS := \
|
|||||||
$(INITRAMFS)/regression \
|
$(INITRAMFS)/regression \
|
||||||
$(INITRAMFS)/benchmark \
|
$(INITRAMFS)/benchmark \
|
||||||
$(INITRAMFS_EMPTY_DIRS)
|
$(INITRAMFS_EMPTY_DIRS)
|
||||||
|
SYSCALL_TEST_DIR := $(INITRAMFS)/opt/syscall_test
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: build
|
all: build
|
||||||
|
|
||||||
$(INITRAMFS)/lib/x86_64-linux-gnu: $(VDSO_DIR)
|
$(INITRAMFS)/lib/x86_64-linux-gnu: | $(VDSO_DIR)
|
||||||
@mkdir -p $@
|
@mkdir -p $@
|
||||||
@cp -L /lib/x86_64-linux-gnu/libc.so.6 $@
|
@cp -L /lib/x86_64-linux-gnu/libc.so.6 $@
|
||||||
@cp -L /lib/x86_64-linux-gnu/libstdc++.so.6 $@
|
@cp -L /lib/x86_64-linux-gnu/libstdc++.so.6 $@
|
||||||
@ -64,11 +65,11 @@ $(INITRAMFS)/bin:
|
|||||||
@mkdir -p $@
|
@mkdir -p $@
|
||||||
@/bin/busybox --install -s $@
|
@/bin/busybox --install -s $@
|
||||||
|
|
||||||
$(INITRAMFS)/usr/bin: $(INITRAMFS)/bin
|
$(INITRAMFS)/usr/bin: | $(INITRAMFS)/bin
|
||||||
@mkdir -p $@
|
@mkdir -p $@
|
||||||
@cp /usr/bin/busybox $@
|
@cp /usr/bin/busybox $@
|
||||||
|
|
||||||
# Copy from apps.
|
.PHONY: $(INITRAMFS)/regression
|
||||||
$(INITRAMFS)/regression:
|
$(INITRAMFS)/regression:
|
||||||
@make --no-print-directory -C apps
|
@make --no-print-directory -C apps
|
||||||
|
|
||||||
@ -82,18 +83,35 @@ $(INITRAMFS)/benchmark:
|
|||||||
$(INITRAMFS_EMPTY_DIRS):
|
$(INITRAMFS_EMPTY_DIRS):
|
||||||
@mkdir -p $@
|
@mkdir -p $@
|
||||||
|
|
||||||
$(INITRAMFS)/opt/syscall_test:
|
.PHONY: $(SYSCALL_TEST_DIR)
|
||||||
|
$(SYSCALL_TEST_DIR):
|
||||||
@make --no-print-directory -C syscall_test
|
@make --no-print-directory -C syscall_test
|
||||||
|
|
||||||
|
.PHONY: $(INITRAMFS_IMAGE)
|
||||||
|
$(INITRAMFS_IMAGE): $(INITRAMFS_FILELIST)
|
||||||
|
@if ! cmp -s $(INITRAMFS_FILELIST) $(INITRAMFS_FILELIST).previous ; then \
|
||||||
|
echo "Generating the initramfs image..."; \
|
||||||
|
cp -f $(INITRAMFS_FILELIST) $(INITRAMFS_FILELIST).previous; \
|
||||||
|
( \
|
||||||
|
cd $(INITRAMFS); \
|
||||||
|
# `$(INITRAMFS_FILELIST)` contains files' last modification \
|
||||||
|
# time in the first column, and files' relative path to \
|
||||||
|
# `$(INITRAMFS)` in the second column. This prunes the first \
|
||||||
|
# column and passes the second column to `cpio`. \
|
||||||
|
cut -d " " -f 2- $(INITRAMFS_FILELIST) | \
|
||||||
|
cpio -o -H newc | gzip \
|
||||||
|
) > $@; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: $(INITRAMFS_FILELIST)
|
||||||
# If the BUILD_SYSCALL_TEST variable is set, we should depend on the
|
# If the BUILD_SYSCALL_TEST variable is set, we should depend on the
|
||||||
# sub make output to do incremental building.
|
# sub make output to do incremental building.
|
||||||
ifeq ($(BUILD_SYSCALL_TEST), 1)
|
ifeq ($(BUILD_SYSCALL_TEST), 1)
|
||||||
$(INITRAMFS_IMAGE): $(INITRAMFS_ALL_DIRS) $(INITRAMFS)/opt/syscall_test
|
$(INITRAMFS_FILELIST): | $(INITRAMFS_ALL_DIRS) $(SYSCALL_TEST_DIR)
|
||||||
else
|
else
|
||||||
$(INITRAMFS_IMAGE): $(INITRAMFS_ALL_DIRS)
|
$(INITRAMFS_FILELIST): | $(INITRAMFS_ALL_DIRS)
|
||||||
endif
|
endif
|
||||||
@echo "Generating the initramfs image..."
|
@(cd $(INITRAMFS); find . -printf "%T@ %p\n") > $(INITRAMFS_FILELIST)
|
||||||
@(cd $(INITRAMFS); find . | cpio -o -H newc | gzip) > $@
|
|
||||||
|
|
||||||
$(EXT2_IMAGE):
|
$(EXT2_IMAGE):
|
||||||
@dd if=/dev/zero of=$(EXT2_IMAGE) bs=2G count=1
|
@dd if=/dev/zero of=$(EXT2_IMAGE) bs=2G count=1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user