MagicLinux 2.0 RC3 发布

MagicLinux 2.0 RC3修复了多个KDE bug,包括小键盘灯、垃圾箱拖放中文文件等问题,并提升了X驱动的性能,支持evdev输入设备协议。此外,还升级了kernel至2.6.15.1,增强了硬件兼容性。
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

RC3 是 MagicLinux 2.0 的最后一个候选测试版本,相对于 RC2 主要更新如下:
一、修复 rc2 中存在的一些 bug:
1、修复了 KDE 中小键盘灯无法打开、垃圾箱拖放中文文件错误、kicker 同时打开多个引起高 cpu 占有率等 bug。
2、修复了 KDE 中字体安装后找不到字体的 bug,修改默认时区为上海,修复 konqueror 中 java 路径配置错误。
3、移除 qt-immodules 补丁,消除因该补丁引发的各种崩溃隐患,可正常使用 opera share 编译版。
4、修复了 bitstormlite 的崩溃问题,d4x 的下载中文文件名乱码问题,并集成到 konqeuror 的右键下载菜单中。
5、修复了 fcitx 输入乱码的 bug。
6、修复了控制台下 locale 为 zh_CN 而引发的程序输出乱码 bug。
7、用 kuser 增删用户,自动添加挂载 iso 和 adsl 拨号的 sudo 权限。
8、修复了 samba 顶级共享目录为中文时乱码问题。
9、修复了 netconfig 与 knetworkconf 写入配置文件不同的 bug 。
10、修复了 vsftpd 、powernowd、cpufreqd 等服务需要内核模块的错误。
二、更新部分软件升级以获取更好的性能、兼容性和易用性
1、升级 xorg 至 6.9,全面提升 X 驱动的性能,对 radeon、sis、via 显卡提供较好的 3d 支持,支持 evdev 输入设备协议。
2、升级 kernel 至 2.6.15.1,提供设备驱动的更好支持。
3、全面更新显卡、鼠标的配置程序,并集成到 kde 控制中心的相应模块中。
4、增加了无线网络配置工具。
5、整理 Magic 控制中心,集成各种常用配置工具,满足系统配置和更新的需要。
6、MI 内核升级以提供更好的硬件兼容性,在安装盘中集成 loadin 和硬盘安装脚本。

因公社服务器问题,暂时无法提供直接下载,请大家先用 bt 下载,分流下载地址我会陆续更新。

torrent 文件下载地址:
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=download&id=25184

RC3 的 md5sum 为:d34b79ca058a0b8fd6f55ddd68cc487b

// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2008 Semihalf * * (C) Copyright 2000-2004 * DENX Software Engineering * Wolfgang Denk, wd@denx.de * * Updated-by: Prafulla Wadaskar <prafulla@marvell.com> * default_image specific code abstracted from mkimage.c * some functions added to address abstraction * * All rights reserved. */ #include "imagetool.h" #include "mkimage.h" #include <u-boot/crc.h> #include <image.h> #include <tee/optee.h> #include <u-boot/crc.h> #include <imximage.h> static image_header_t header; static int image_check_image_types(uint8_t type) { if (((type > IH_TYPE_INVALID) && (type < IH_TYPE_FLATDT)) || (type == IH_TYPE_KERNEL_NOLOAD) || (type == IH_TYPE_FIRMWARE_IVT)) return EXIT_SUCCESS; else return EXIT_FAILURE; } static int image_check_params(struct image_tool_params *params) { return ((params->dflag && (params->fflag || params->lflag)) || (params->fflag && (params->dflag || params->lflag)) || (params->lflag && (params->dflag || params->fflag))); } static int image_verify_header(unsigned char *ptr, int image_size, struct image_tool_params *params) { uint32_t len; const unsigned char *data; uint32_t checksum; image_header_t header; image_header_t *hdr = &header; /* * create copy of header so that we can blank out the * checksum field for checking - this can&#39;t be done * on the PROT_READ mapped data. */ memcpy(hdr, ptr, sizeof(image_header_t)); if (be32_to_cpu(hdr->ih_magic) != IH_MAGIC) { debug("%s: Bad Magic Number: \"%s\" is no valid image\n", params->cmdname, params->imagefile); return -FDT_ERR_BADMAGIC; } data = (const unsigned char *)hdr; len = sizeof(image_header_t); checksum = be32_to_cpu(hdr->ih_hcrc); hdr->ih_hcrc = cpu_to_be32(0); /* clear for re-calculation */ if (crc32(0, data, len) != checksum) { debug("%s: ERROR: \"%s\" has bad header checksum!\n", params->cmdname, params->imagefile); return -FDT_ERR_BADSTATE; } data = (const unsigned char *)ptr + sizeof(image_header_t); len = image_size - sizeof(image_header_t) ; checksum = be32_to_cpu(hdr->ih_dcrc); if (crc32(0, data, len) != checksum) { debug("%s: ERROR: \"%s\" has corrupted data!\n", params->cmdname, params->imagefile); return -FDT_ERR_BADSTRUCTURE; } return 0; } static void image_set_header(void *ptr, struct stat *sbuf, int ifd, struct image_tool_params *params) { uint32_t checksum; time_t time; uint32_t imagesize; uint32_t ep; uint32_t addr; image_header_t * hdr = (image_header_t *)ptr; checksum = crc32(0, (const unsigned char *)(ptr + sizeof(image_header_t)), sbuf->st_size - sizeof(image_header_t)); time = imagetool_get_source_date(params->cmdname, sbuf->st_mtime); ep = params->ep; addr = params->addr; if (params->type == IH_TYPE_FIRMWARE_IVT) /* Add size of CSF minus IVT */ imagesize = sbuf->st_size - sizeof(image_header_t) + 0x2060 - sizeof(flash_header_v2_t); else imagesize = sbuf->st_size - sizeof(image_header_t); if (params->os == IH_OS_TEE) { addr = optee_image_get_load_addr(hdr); ep = optee_image_get_entry_point(hdr); } /* Build new header */ image_set_magic(hdr, IH_MAGIC); image_set_time(hdr, time); image_set_size(hdr, imagesize); image_set_load(hdr, addr); image_set_ep(hdr, ep); image_set_dcrc(hdr, checksum); image_set_os(hdr, params->os); image_set_arch(hdr, params->arch); image_set_type(hdr, params->type); image_set_comp(hdr, params->comp); image_set_name(hdr, params->imagename); checksum = crc32(0, (const unsigned char *)hdr, sizeof(image_header_t)); image_set_hcrc(hdr, checksum); } static int image_extract_subimage(void *ptr, struct image_tool_params *params) { const image_header_t *hdr = (const image_header_t *)ptr; ulong file_data; ulong file_len; if (image_check_type(hdr, IH_TYPE_MULTI)) { ulong idx = params->pflag; ulong count; /* get the number of data files present in the image */ count = image_multi_count(hdr); /* retrieve the "data file" at the idx position */ image_multi_getimg(hdr, idx, &file_data, &file_len); if ((file_len == 0) || (idx >= count)) { fprintf(stderr, "%s: No such data file %ld in \"%s\"\n", params->cmdname, idx, params->imagefile); return -1; } } else { file_data = image_get_data(hdr); file_len = image_get_size(hdr); } /* save the "data file" into the file system */ return imagetool_save_subimage(params->outfile, file_data, file_len); } /* * Default image type parameters definition */ U_BOOT_IMAGE_TYPE( defimage, "Default Image support", sizeof(image_header_t), (void *)&header, image_check_params, image_verify_header, image_print_contents, image_set_header, image_extract_subimage, image_check_image_types, NULL, NULL ); 怎么设置时间的
最新发布
10-31
在 U-Boot 的镜像构建过程中,镜像头中的时间戳可以通过以下两种方式设置: ### 1. **通过环境变量 `SOURCE_DATE_EPOCH` 设置时间** - 这是推荐的方式,用于确保构建的可重复性(reproducibility)。 - 设置方法: ```bash export SOURCE_DATE_EPOCH=<时间戳> ``` 例如: ```bash export SOURCE_DATE_EPOCH=1630000000 ``` - 时间戳必须是 Unix 时间格式(秒数),即从 1970-01-01 00:00:00 UTC 开始计算的整数。 - 在 U-Boot 构建过程中,`imagetool_get_source_date()` 函数会读取这个环境变量,并将其作为镜像头中的时间戳。 ### 2. **使用文件的最后修改时间(fallback)** - 如果没有设置 `SOURCE_DATE_EPOCH`,则默认使用镜像文件的最后修改时间(`sbuf->st_mtime`)作为时间戳。 - 这是通过 `imagetool_get_source_date()` 函数中的 `fallback` 参数实现的: ```c time = imagetool_get_source_date(params->cmdname, sbuf->st_mtime); ``` --- ### 总结:如何设置镜像头的时间 | 方法 | 设置方式 | 用途 | |------|-----------|------| | `SOURCE_DATE_EPOCH` | `export SOURCE_DATE_EPOCH=1630000000` | 确保构建镜像时间戳可重复 | | 默认文件修改时间 | 不设置环境变量 | 使用文件的最后修改时间 | --- ### 示例:设置时间并构建镜像 1. 设置确定性时间: ```bash export SOURCE_DATE_EPOCH=1630000000 ``` 2. 构建 U-Boot 镜像: ```bash make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_ca9x4_config make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值