搞定ARM LINUX下用ntfsprogs(ntfsmount)挂载ntfs分区

文章详细记录了作者在没有参考的情况下,自行搭建嵌入式Linux开发平台的过程,从交叉编译工具链的制作、版本匹配问题到内核BUG修复,每个环节都充满了挑战。最终成功搭建的平台包括binutils、gcc、uClibc、Linux内核、BusyBox、FUSE和NTFS工具,展示了作者解决问题的全过程。

折腾了几天,加了几天的班,不停的编译,不停的更换代码版本。总算搞定了。一个小小的功能,却让我把整个系统的基础翻了个底朝天。

第一步:arm-linux-uclibc交叉编译工具链没有宽字符支持,无法编译ntfsprogs或者ntfs-3g.重新自己制作交叉编译工具链,花了不少于两天的时间,包括编译gcc,uclibc,linux kernel 这一步等整理过后一定做个记录,太不容易了。

第二步:busybox和ntfs-3g以及ntfsprogs的版本匹配问题,busybox中实现的mount不支持某些特定的参数,导致ntfs-3g或者ntfsprogs无法正确执行,而且busybox某些版本的make menuconfig配置中也没交叉编译选项。

第三步:fuse的内核BUG,linux2.6.14内核源码中的fuse无法正常工作于ARM平台,在ls等命令时会卡住无法退出,必须使用fuse2.6.x的内核模块编译后动态插入,要保证此步骤正确完成,前面的交叉工具链,kernel,busybox等都必须配置正确。否则会出现文件明明就在其目录下,insmod却找不到等奇怪现象。

 

 

目前正确工作的版本为:binutils-2.16+gcc-3.4.3+uClibc-0.9.28  linux-2.6.14+busybox-1.1.2+fuse2.6.0+ntfsprogs-1.13.1

以上7个组件全部自行编译测试。

总结:要在没有参考的情况下自己搭建linux嵌入式开发的基础平台真的很麻烦,无数的不明所以的错误,无数的版本兼容配合问题。

 

1. 先安装win10,并给centos 7分出空间。 2. 安装centos 7系统分使用刚预留的分区。 3. 装完centos7,进入系统修改vim /boot/grub2/grub.cfg 最后面插入以下内容: menuentry 'Windows 10' { #显示菜单的名字 insmod ntfs #加载ntfs支持 set root=(hd0,1) #设置第一个硬盘的第一分区工作目录(根目录) chainloader +1 #加载引导 boot #启动 } 4. 保存重启 5. 安装图形界面。 更新系统: yum -y upgrade 6. 安装必要的软件包: yum -y install grub2-efi fwupdate 7.重启电脑,删除老版本内核: yum -y remove kernel 8.查看可安装组列表: yum grouplist 9. 安装桌面: yum -y groupinstall'GNOME Desktop''Graphical Administration Tools' 10.配置默认启动方式: vim /etc/inittab vi /etc/inittab //查询当前的默认设置: systemctl get-default //启动切换图形化界面: startx //设置默认启动为图形化界面: systemctl set-default graphical.target //设置默认启动为命令行界面: systemctl set-default multi-user.target //命令行界面热切换到图形界面: init 5 //图形界面热切换到命令行界面: init 3 6. 执行以下命令。 systemctl set-default graphical.target systemctl set-default multi-user.target 7. 输入init5 进入图形化界面。 8. 执行以下命令设置图形化界面开机启动。 systemctl set-default graphical.target 图形化安装界面参考地址:https://blog.csdn.net/wqh0830/article/details/86701379 https://blog.csdn.net/qq_37279783/article/details/88086454 双系统安装参考地址;https://www.jianshu.com/p/643b613f4629 删除原来的内核及内核工具 [root@test ~]# rpm -qa | grep kernel* kernel-lt-4.4.140-1.el7.elrepo.x86_64 kernel-3.10.0-862.3.2.el7.x86_64 kernel-headers-3.10.0-862.3.3.el7.x86_64 kernel-tools-libs-3.10.0-862.3.2.el7.x86_64 kernel-tools-3.10.0-862.3.2.el7.x86_64 yum remove kernel-3.10.0-862.3.2.el7.x86_64 kernel-headers-3.10.0-862.3.3.el7.x86_64 kernel-tools-libs-3.10.0-862.3.2.el7.x86_64 kernel-tools-3.10.0-862.3.2.el7.x86_64 更新内核: 首先导入第三方的公共key rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 查看目前可以使用的longterm 版本(生产环境中一定要使用这种版本) yum --disablerepo="*" --enablerepo="elrepo-kernel" list available 安装长期支持版内核 yum --enablerepo=elrepo-kernel install kernel-lt 同时修改默认加载内核的启动顺序,修改成如下: [root@test ~]# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=0 GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值