فهرست منبع

ci: 添加glibc的安装

- 更新DADK最小版本要求至0.4.0
- test_newfstatat\test_fstat的代码改为使用glibc
- 写入磁盘镜像时,添加文件系统类型检测逻辑
- 更新shell服务环境变量配置

Signed-off-by: longjin <longjin@DragonOS.org>
longjin 2 روز پیش
والد
کامیت
e01fc6aa06

+ 1 - 1
kernel/src/filesystem/page_cache.rs

@@ -316,7 +316,7 @@ impl InnerPageCache {
 
 impl Drop for InnerPageCache {
     fn drop(&mut self) {
-        log::debug!("page cache drop");
+        // log::debug!("page cache drop");
         let mut page_manager = page_manager_lock_irqsave();
         for page in self.pages.values() {
             page_manager.remove_page(&page.phys_address());

+ 0 - 3
kernel/src/filesystem/vfs/syscall.rs

@@ -1388,9 +1388,6 @@ impl Syscall {
         let iovecs = unsafe { IoVecs::from_user(iov as *const IoVec, count, false) }?;
 
         let data = iovecs.gather();
-        if ProcessManager::current_pid().data() >= 9 {
-            log::debug!("writev: fd = {}, data.len() = {:?}", fd, data.len());
-        }
 
         Self::write(fd, &data)
     }

+ 1 - 1
kernel/src/net/net_core.rs

@@ -37,7 +37,7 @@ impl TimerFunction for NetWorkPollFunc {
 }
 
 pub fn net_init() -> Result<(), SystemError> {
-    // dhcp_query()?;
+    dhcp_query()?;
     // Init poll timer function
     // let next_time = next_n_ms_timer_jiffies(5);
     // let timer = Timer::new(Box::new(NetWorkPollFunc), next_time);

+ 9 - 1
tools/write_disk_image.sh

@@ -79,6 +79,9 @@ $DADK -w $root_folder rootfs mount || exit 1
 LOOP_DEVICE=$($DADK -w $root_folder rootfs show-loop-device || exit 1)
 echo $LOOP_DEVICE
 echo ${mount_folder}
+
+FS_TYPE=$(findmnt -n -o FSTYPE ${mount_folder} || df -T ${mount_folder} | tail -1 | awk '{print $2}')
+echo "FS_TYPE: $FS_TYPE"
 # mkdir -p ${GRUB_INSTALL_PATH}
 
 # 检测grub文件夹是否存在
@@ -99,7 +102,12 @@ mkdir -p ${mount_folder}/bin
 mkdir -p ${mount_folder}/dev
 mkdir -p ${mount_folder}/proc
 mkdir -p ${mount_folder}/usr
-cp -r ${root_folder}/bin/sysroot/* ${mount_folder}/
+
+if [ "$FS_TYPE" = "vfat" ] || [ "$FS_TYPE" = "fat32" ]; then
+    cp -rL ${root_folder}/bin/sysroot/* ${mount_folder}/
+else
+    cp -r ${root_folder}/bin/sysroot/* ${mount_folder}/
+fi
 
 # 设置 grub 相关数据
 if [ ${ARCH} == "i386" ] || [ ${ARCH} == "x86_64" ]; then

+ 1 - 1
user/Makefile

@@ -2,7 +2,7 @@ user_sub_dirs = apps
 
 DADK_VERSION=$(shell dadk -V | awk 'END {print $$2}')
 # 最小的DADK版本
-MIN_DADK_VERSION = 0.3.0
+MIN_DADK_VERSION = 0.4.0
 DADK_CACHE_DIR = $(ROOT_PATH)/bin/dadk_cache
 
 ECHO:

+ 2 - 2
user/apps/test_fstat/Makefile

@@ -1,5 +1,5 @@
 ifeq ($(ARCH), x86_64)
-	CROSS_COMPILE=x86_64-linux-musl-
+	CROSS_COMPILE=x86_64-linux-gnu-
 else ifeq ($(ARCH), riscv64)
 	CROSS_COMPILE=riscv64-linux-musl-
 endif
@@ -8,7 +8,7 @@ CC=$(CROSS_COMPILE)gcc
 
 .PHONY: all
 all: main.c
-	$(CC) -static -o test_fstat main.c
+	$(CC) -o test_fstat main.c
 
 .PHONY: install clean
 install: all

+ 2 - 2
user/apps/test_newfstatat/Makefile

@@ -1,5 +1,5 @@
 ifeq ($(ARCH), x86_64)
-	CROSS_COMPILE=x86_64-linux-musl-
+	CROSS_COMPILE=x86_64-linux-gnu-
 else ifeq ($(ARCH), riscv64)
 	CROSS_COMPILE=riscv64-linux-musl-
 endif
@@ -8,7 +8,7 @@ CC=$(CROSS_COMPILE)gcc
 
 .PHONY: all
 all: main.c
-	$(CC) -static -o test_newfstatat main.c
+	$(CC) -o test_newfstatat main.c
 
 .PHONY: install clean
 install: all

+ 4 - 0
user/dadk/config/core_utils-9.4.0.toml

@@ -22,6 +22,10 @@ type = "build-from-source"
 source = "archive"
 # 路径或URL
 source-path = "https://mirrors.dragonos.org.cn/pub/third_party/gnu/coreutils/coreutils-9.4.tar.xz"
+
+# 把压缩包中的哪个目录作为根目录(可选),仅当 source = "archive" 时生效
+archive-rootdir = "coreutils-9.4"
+
 # 构建相关信息
 [build]
 # (可选)构建命令

+ 40 - 0
user/dadk/config/glibc_bin_ubuntu2404.toml

@@ -0,0 +1,40 @@
+# 用户程序名称
+name = "glibc_bin_ubuntu2404"
+# 版本号
+version = "2.39"
+# 用户程序描述信息
+description = "GNU C Library for Ubuntu 24.04"
+# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果
+build-once = false
+#  (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装
+install-once = false
+# 目标架构
+# 可选值:"x86_64", "aarch64", "riscv64", "loongarch64"
+target-arch = ["x86_64"]
+# 任务源
+[task-source]
+# 构建类型
+# 可选值:"build-from-source", "install-from-prebuilt"
+type = "install-from-prebuilt"
+# 构建来源
+# "build_from_source" 可选值:"git", "local", "archive"
+# "install_from_prebuilt" 可选值:"local", "archive"
+source = "archive"
+# 路径或URL
+source-path = "https://mirrors.dragonos.org.cn/pub/third_party/gnu/glibc-bin/glibc-ubuntu2404-x86_64-202505111756-8f3207567bf10f4d09027b2cd84b7807.tar.xz"
+archive-rootdir = "sysroot/"
+
+[build]
+
+# 安装相关信息
+[install]
+# (可选)安装到DragonOS的路径
+in-dragonos-path = "/"
+# 清除相关信息
+[clean]
+# (可选)清除命令
+clean-command = ""
+# (可选)依赖项
+# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]]
+# (可选)环境变量
+# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]]

+ 4 - 1
user/dadk/config/musl_1_2_4.toml

@@ -22,10 +22,13 @@ type = "build-from-source"
 source = "archive"
 # 路径或URL
 source-path = "https://mirrors.dragonos.org.cn/pub/third_party/musl/musl-1.2.4.tar.gz"
+# 把压缩包中的哪个目录作为根目录(可选),仅当 source = "archive" 时生效
+archive-rootdir = "musl-1.2.4"
+
 # 构建相关信息
 [build]
 # (可选)构建命令
-build-command = "touch config.mak && DESTDIR=$DADK_CURRENT_BUILD_DIR make install -j $(nproc)"
+build-command = "touch config.mak && DESTDIR=$DADK_CURRENT_BUILD_DIR make install -j $(nproc) && rm -rf $DADK_CURRENT_BUILD_DIR/lib && rm -rf $DADK_CURRENT_BUILD_DIR/lib64"
 # 安装相关信息
 [install]
 # (可选)安装到DragonOS的路径

+ 2 - 1
user/sysconfig/etc/reach/system/shell.service

@@ -7,4 +7,5 @@ ExecStart=/bin/NovaShell
 Restart=always
 ExecStartPre=-/bin/about.elf
 ExecStartPre=/bin/busybox stty erase 127
-Environment=PATH=/bin:/usr/bin:/usr/local/bin
+Environment=PATH=/bin:/usr/bin:/usr/local/bin
+Environment=LD_LIBRARY_PATH=/usr/lib:/usr/lib64:/usr/local/lib