busybox date 日期增加一天明天 网上都是减一天 昨天

#!/bin/bash  
  
  

y_begin=$1
m_begin=$2
d_begin=$3
y_end=$4
m_end=$5
d_end=$6

echo $y_begin $m_begin $d_begin 
echo $y_end $m_end $d_end 

tmp=""
tomorrowday=""

begin="$y_begin$m_begin$d_begin" 
echo $begin
end="$y_end$m_end$d_end" 
echo $end


year=$y_begin
month=$m_begin
day=$d_begin
echo ${year} ${month} ${day}

fun_next_day()
{
	
	#echo "---${year} ${month} ${day}"
	
	if [[ "$day" == "31" ]];then 
	    if [[ "$month" == "12" ]];then 
	    	day="01"
	    	month="01"
	        year=`expr $year + 1`
	    elif [[ "$month" == "01" || "$month" == "03" ||  "$month" == "05" || "$month" == "07" || "$month" == "08" || "$month" == "10" ]];then	        
	        day="01"  
	        month=`expr ${month} + 1`
	        month=$(printf "%02d" "$month")
	    fi
	elif [[ "$day" == "30" ]];then 
		#echo "--30-----"
		if [[ "$month" == "04" || "$month" == "06" || "$month" == "09" || "$month" == "11" ]];then 
			#echo "--31-----" 		        
		        day="01"
		        month=`expr ${month} + 1`
		        month=$(printf "%02d" "$month")
		else
			#echo "--32-----" 
			day=`expr $day + 1`
			day=$(printf "%02d" "$day")
			#echo "day------$day"		
		fi
	elif [[ "$day" == "29" && "$month" == "02" ]];then            
	        day="01" 
	        month=`expr ${month} + 1` 
	        month=$(printf "%02d" "$month")
	        tomorrowday="${year}${month}${day}"
	elif [[ "$day" == "28" && "$month" == "02" ]];then 
	        year_type=`expr ${year} % 4`
	        if [[ "$year_type" == "0" ]];then   
	        	day=`expr $day + 1`
	        	day=$(printf "%02d" "$day")
	        else
	        	day="01"  
	        	month=`expr ${month} + 1`
	        	month=$(printf "%02d" "$month")
	        fi
		         
	else
		day=`expr $day + 1`
		day=$(printf "%02d" "$day")
		#echo "day---$day"	    
	fi
	
	tomorrowday="${year}${month}$day"
	echo $tomorrowday
	#echo "end ---${year} ${month} ${day}"	
	
	#return $tomorrowday
}




echo "----------begin------"
echo $end
while [ "$begin" != "$end" ]
do
echo "begin--- $begin"
cp -rvf 20200509  $begin
fun_next_day  
begin=$tomorrowday

#sleep 1
done
<think>好的,用户现在想了解如何使用BusyBox创建一个根文件系统。我需要先回顾之前的对话历史。之前用户遇到了编译BusyBox时的错误,涉及内核头文件版本的问题,我给出了解决方案。现在用户的问题转向如何创建根文件系统,这可能是在解决编译问题之后的下一个步骤。 首先,用户可能是嵌入式系统开发者或正在学习Linux系统构建,他们需要构建一个最小化的根文件系统,用于嵌入式设备或测试环境。用户的真实需求可能不仅仅是步骤,还包括理解每个步骤的作用,以及如何验证文件系统的正确性。 我需要确保回答结构清晰,分步骤讲解,同时覆盖必要的目录结构、配置文件、权限设置等。还要注意用户可能对某些步骤不熟悉,比如交叉编译或设备节点的创建,需要详细说明。 可能需要注意的要点包括: 1. 准备工作:交叉编译工具链、内核模块、BusyBox的编译配置。 2. 目录结构的创建,遵循FHS标准。 3. 安装BusyBox到目标目录,创建必要的符号链接。 4. 配置关键的系统文件如inittab、fstab、passwd等。 5. 设置权限,特别是/dev和/proc等特殊目录。 6. 测试和打包文件系统,可能使用chroot或QEMU测试。 需要检查是否遗漏了某些关键步骤,比如动态库的拷贝,或者如何处理静态编译的情况。同时,用户可能需要了解如何配置启动脚本,比如rcS文件,以及如何设置环境变量。 另外,用户可能对如何交叉编译BusyBox有疑问,特别是如果目标平台与宿主机架构不同,需要指定正确的交叉编译选项。此外,可能还需要说明如何生成initramfs或者如何制作可引导的镜像文件。 最后,应该给出验证方法,比如使用QEMU启动测试,或者打包成镜像文件并用虚拟机载。同时提醒用户注意权限问题,避免因权限不当导致的启动失败。</think>使用BusyBox创建根文件系统是嵌入式Linux开发的常见需求,以下是详细操作指南: --- ### **一、准备工作** ```bash # 创建基础目录结构(需root权限) mkdir rootfs && cd rootfs mkdir -pv bin dev etc home lib mnt opt proc root run sbin sys tmp usr var mkdir -p usr/bin usr/sbin usr/lib usr/include ``` --- ### **二、编译BusyBox** 1. **获取源码**(以v1.36.1为例): ```bash wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2 tar -xf busybox-1.36.1.tar.bz2 && cd busybox-1.36.1 ``` 2. **配置编译选项**: ```bash make menuconfig ``` 关键配置: ``` -> Settings -> Build static binary (no shared libs) [根据需求选择] -> Linux System Utilities -> Support mounting /dev [*] -> Support mounting /proc [*] -> Coreutils -> cpio [*] ``` 3. **交叉编译示例**(ARM架构): ```bash make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install ``` --- ### **三、安装到根文件系统** 1. **复制二进制文件**: ```bash # 假设当前在busybox源码目录 make CONFIG_PREFIX=../rootfs install ``` 2. **验证安装**: ```bash ls ../rootfs/bin/busybox # 应显示二进制文件 ``` --- ### **四、配置关键系统文件 1. **/etc/inittab**(基础配置): ```bash echo "::sysinit:/etc/init.d/rcS ::respawn:/sbin/getty -L ttyS0 115200 vt100 ::ctrlaltdel:/sbin/reboot" > ../rootfs/etc/inittab ``` 2. **/etc/fstab**(文件系统挂载): ```bash cat << EOF > ../rootfs/etc/fstab proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 EOF ``` 3. **初始化脚本**: ```bash mkdir -p ../rootfs/etc/init.d echo "#!/bin/sh mount -a echo 'Hello from BusyBox'" > ../rootfs/etc/init.d/rcS chmod +x ../rootfs/etc/init.d/rcS ``` --- ### **五、添必要设备节点** ```bash sudo mknod ../rootfs/dev/console c 5 1 sudo mknod ../rootfs/dev/null c 1 3 sudo chmod 666 ../rootfs/dev/null ``` --- ### **六、补充依赖库(动态编译时)** ```bash # 以ARM架构为例 cp /usr/arm-linux-gnueabihf/lib/libc.so.6 ../rootfs/lib/ cp /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 ../rootfs/lib/ ``` --- ### **七、测试文件系统** 1. **使用QEMU测试**: ```bash qemu-system-arm -M versatilepb -kernel zImage -dtb versatile-pb.dtb \ -initrd rootfs.cpio -append "root=/dev/ram0 console=ttyAMA0" ``` 2. **打包成CPIO格式**: ```bash cd rootfs find . | cpio -H newc -ov --owner root:root > ../rootfs.cpio ``` --- ### **常见问题处理** 1. **权限问题**: ```bash chown -R root:root rootfs chmod 4755 rootfs/bin/busybox ``` 2. **缺少动态库**: ```bash # 使用ldd检查依赖 arm-linux-gnueabihf-ldd rootfs/bin/busybox ``` --- ### **扩展功能建议** ```bash # 添基础工具 mkdir rootfs/usr/share/udhcpc cp examples/udhcp/simple.script rootfs/usr/share/udhcpc/default.script ``` 通过以上步骤,您将获得一个约3-5MB的最小根文件系统,可通过`initramfs`或直接挂载到嵌入式设备使用。建议根据实际需求添`/etc/passwd`, `/etc/group`等配置文件以完善系统功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值