搜索
bottom↓
回复: 28

linux根文件系统debian制作 和编译器的关联性

[复制链接]

出0入0汤圆

发表于 2015-10-31 13:17:25 | 显示全部楼层 |阅读模式
最近移植linux,基本跑起来都ok。然后自己再试着弄不同的根文件系统。一开始自己全手工搞了个很小的busybox,mdev这样20MB左右的rootfs,成功了。然后现在自己想着移植个复杂点的,选了debian,按照网上所说的方法用Debootstrap或者CDebootstrap或者Multistrap工具(例如http://www.cnblogs.com/qiaoqiao2003/p/3738552.html 这个文章,类似文章,太多,但方法是一样的)   。但是 他们描述的 制作 debian rootfs的方法,竟然没有提到过用自己的交叉编译器版本,这样怎么能用呢?我想他们的交叉编译器和自己的版本一般是不同的吧。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2015-11-15 00:39:59 | 显示全部楼层
LZ能讲讲根文件系统的制作吗?或者在哪有提到步骤的

出0入0汤圆

 楼主| 发表于 2015-11-15 10:30:42 | 显示全部楼层
dhbighead 发表于 2015-11-15 00:39
LZ能讲讲根文件系统的制作吗?或者在哪有提到步骤的

简单的,你可以看韦东山的书,用busybox+自带的mdev。然后再加上自己的lib库,这样我坐下来的库大概有6MB。其实非常好用,实现了最基本的功能。但是这个和真正的一个rootfs还有非常大的距离,你以服务器版的ubuntu做假想,至少缺了网络各种server一大块,如何安装软件等等。所以我想的是安装一个这样的rootfs到自己的板子上去

出0入0汤圆

发表于 2015-11-15 11:10:53 | 显示全部楼层
这个有意思。我期望是在mips架构上弄的。我有一个开发板。NetRouter,基于mt7620a的。打算移植上这个。这样就不用交叉编译了。可以将gcc集合进去。可以apt-get安装。楼主感兴趣么~~我在打造一款适合51入门linux 的开发板~~

出0入0汤圆

 楼主| 发表于 2015-11-15 11:21:23 | 显示全部楼层
本帖最后由 imjacob 于 2015-11-15 11:22 编辑
90soso 发表于 2015-11-15 11:10
这个有意思。我期望是在mips架构上弄的。我有一个开发板。NetRouter,基于mt7620a的。打算移植上这个。这样 ...


呵呵。有兴趣,但没时间。我先要在公司的板子上搞定这个。 而且你的mips太小众了。既然是路由器,为何不弄openwrt,dd-wrt。感觉这个都帮你搞定了。只是安装的工具不是apt,而是opkg(印象而已,可能记错了)。

另外,linux的入门,我觉得各个方向都不一样,看你偏驱动还是 应用还是内核等等吧。

出0入0汤圆

发表于 2015-11-15 11:43:53 | 显示全部楼层
imjacob 发表于 2015-11-15 11:21
呵呵。有兴趣,但没时间。我先要在公司的板子上搞定这个。 而且你的mips太小众了。既然是路由器 ...

openwrt是可以的。但是目前还不支持本地gcc编译。虽说性能跟不上。但是也是一种比较实用的尝试吧~~

出0入0汤圆

发表于 2015-11-15 12:33:00 | 显示全部楼层
在iMX6上跑debian,配置好网络后,用apt-get下载软件包,爽得不要不要滴,最近要弄基于GStreamer的vpu解码,苦逼中。。。

出0入0汤圆

 楼主| 发表于 2015-11-15 12:50:58 | 显示全部楼层
广轻电气091 发表于 2015-11-15 12:33
在iMX6上跑debian,配置好网络后,用apt-get下载软件包,爽得不要不要滴,最近要弄基于GStreamer的vpu解码 ...

爽是爽,但这个debian是如何制作的,你知道吗? 用我 之前提到的Debootstrap或者CDebootstrap或者Multistrap工具 弄起来为何和 自己的交叉编译工具不相关呢?

出0入0汤圆

发表于 2015-11-15 19:00:26 | 显示全部楼层
用Debootstrap弄过来的,是人家Debian已经做好的系统,所以就不用我们自己再交叉编译了。
自己做起来整个系统,相当麻烦,我也一样偷懒用Debian的。有了apt-get真是好用,gcc,g++,gdb拉下来,连编译调试都直接在板子上做了。
当然kernel还是要自己编译。编译器版本有轻微出入好像也没发现什么问题。

出0入0汤圆

 楼主| 发表于 2015-11-15 19:50:12 | 显示全部楼层
本帖最后由 imjacob 于 2015-11-15 19:52 编辑
stdio 发表于 2015-11-15 19:00
用Debootstrap弄过来的,是人家Debian已经做好的系统,所以就不用我们自己再交叉编译了。
自己做起来整个系 ...


总算有大侠来指点了,太谢谢了。
但我的板子弄官方的debian的就会崩溃,进不去rootfs。  我在我的板子上ATMEL9260上,试了10种左右的rootfs,包括 周立功的imx283,友善的210,还有atmel的9G25. 发现有些成功,有些失败。

其实就是这个问题,“同一个内核,随便找一个 rootfs 就能跑起来吗?(前提是 内核支持了rootfs的格式,譬如UBI,yaffs等; 交叉编译器都是ARM的,且都符合EABI标准的)”

我觉得理论上似乎是,但是实际告诉我不是的。好像和 lib库非常有关系,那些动态链接库,glibc库等。

如果他们的交叉编译器 和自己用的一致,一定行。不一致,多半是不行的。

但是那些库,不一致的有时候也行。

友善也提到为什么官方的 debian系统 能够完美支持他们的 板子  “支持友善之臂Linux程序平滑移植: 因为此版本的Debian所用的交叉编译器和C库版本,和友善之臂所选刚好完全相同”(http://112.124.9.243/?page_id=116) 这个也说明了和 交叉编译器和c库有关。 但具体是如何的关系呢,不知道有什么文档来说明这个事。


写的有点乱,因为思维确实有点乱,还有试的板子比较多,描述太详细大家会看得很累。

出0入0汤圆

发表于 2015-11-15 20:06:47 | 显示全部楼层
学习,现在还在尝试移植busybox到2440,尚未成功。楼主提到了韦东山的书有讲这个。还有其他参考资料吗?我看网上的文章也都是各不相同,可能都忽略了某些细节没介绍

出0入0汤圆

发表于 2015-11-15 20:18:31 | 显示全部楼层
imjacob 发表于 2015-11-15 19:50
总算有大侠来指点了,太谢谢了。
但我的板子弄官方的debian的就会崩溃,进不去rootfs。  我在我的板子上A ...

这个其实看架构。ARM有多种版本。Debian大多支持的是armv7-l。所以armv6一类的处理器基本无法跑

出0入0汤圆

 楼主| 发表于 2015-11-15 20:54:30 | 显示全部楼层
本帖最后由 imjacob 于 2015-11-15 20:57 编辑
康乐生 发表于 2015-11-15 20:06
学习,现在还在尝试移植busybox到2440,尚未成功。楼主提到了韦东山的书有讲这个。还有其他参考资料吗?我 ...


韦东山书上有的。 还有讲这个的你可以看点 卖开发板的写的文档。一般比较好的文档都会说这个的,譬如我上面说道的友善

出0入0汤圆

发表于 2015-11-15 21:21:54 | 显示全部楼层
imjacob 发表于 2015-11-15 20:54
韦东山书上有的。 还有讲这个的你可以看点 卖开发板的写的文档。一般比较好的文档都会说这个的,譬如我上 ...

下了韦东山的书了 明天到公司慢慢看,谢谢^_^

出0入0汤圆

 楼主| 发表于 2015-11-15 21:25:20 | 显示全部楼层
本帖最后由 imjacob 于 2015-11-15 21:33 编辑
xwkm 发表于 2015-11-15 20:18
这个其实看架构。ARM有多种版本。Debian大多支持的是armv7-l。所以armv6一类的处理器基本无法跑 ...


谢谢回复。这个给我了一个启示,我印象中似乎由此说法。 但我联想到我 用的atmel9G25的一个板子,他是能跑debian的。 但9G25是armv5的。
然后我查下了资料 https://wiki.debian.org/ArmPorts 这里。
事实应该是这样,debian分成了几个分支,其中ArmHardFloatPort 的分支仅支持armv7以上的。但是像ArmEabiPort 就能支持armv4T以上了。您说的应该是 ArmHardFloatPort。


这样似乎能解释一些问题,我的板子是926ejs,是armv5。但又一想,三星6410和210他都能运行同一个debian,说明也是ArmEabiPort啊,为何我的armv5不能运行。

而且 imx283也是 926ejs的,但无法跑在我的系统上。

这样看来,和arm的指令集是有一定的关系(看下面代码中指明了armel就是这种关系的体现),但是应该和其他还是有很大关系的。

另外,附上 https://code.google.com/p/mini6410-debian/wiki/Tutorial 这里制作debian的方法,我没有找到任何和armel架构之外的信息,编译器版本信息,库相关的信息。
  1. 4. Creating the rootfs
  2. Now we will create our root filesystem. Therefore we will need a running Debian, or Debian-based, machine. I used Ubuntu 10.10 32-bit (Maverick) to do this, but every other Debian-based distro should do the job, too. If you're running some othere distro, Mac or Windows I advice you to put a recent Debian or Ubuntu image into a VM, but I won't cover this here.

  3. You will need debootstrap to create a rootfs. So we'll install it:

  4. sudo apt-get install debootstrap
  5. Then we'll create a folder were we'll put everything related to our rootfs:

  6. cd ~
  7. mkdir debian-mini6410
  8. cd debian-mini6410
  9. Now it's time to decide what you want:

  10. Debian:

  11. sudo debootstrap --arch=armel --foreign squeeze rootfs/ http://ftp.us.debian.org/debian
  12. echo "deb http://ftp.us.debian.org/debian squeeze main" >> rootfs/etc/apt/sources.list
  13. Emdebian:

  14. sudo debootstrap --arch=armel --foreign squeeze rootfs/ http://www.emdebian.org/grip/
  15. echo "deb http://www.emdebian.org/grip/ squeeze main" >> rootfs/etc/apt/sources.list
  16. Note: Squeeze is still considered to be "testing", so if you want to be 99,999999% sure to have a rocksolid system, replace squeeze by lenny Debian Squeeze is now stable!

  17. And a little tuning of the created rootfs:

  18. echo "proc /proc proc none 0 0" >> rootfs/etc/fstab
  19. echo "mini6410" > rootfs/etc/hostname
  20. sudo mkdir -p rootfs/usr/share/man/man1/
  21. sudo mknod rootfs/dev/console c 5 1
  22. Note: the last line will probably fail, because rootfs/dev/console already exists. Don't know why this happens from time to time, but doing so you're safe ;)

  23. Next, we'll roll a nice and cute tarball out of our new rootfs:

  24. cd rootfs
  25. sudo tar cjf ../debian-mini6410-rootfs.tar.bz2 .
复制代码

出0入0汤圆

 楼主| 发表于 2015-11-16 09:31:10 | 显示全部楼层
对了,ubuntu似乎只能跑在armv7以上

出0入0汤圆

发表于 2015-11-16 12:27:17 | 显示全部楼层
90soso 发表于 2015-11-15 11:10
这个有意思。我期望是在mips架构上弄的。我有一个开发板。NetRouter,基于mt7620a的。打算移植上这个。这样 ...

可以在编译OpenWrt的时候勾上 gcc 的嘛。 OpenWrt 的编译也是基于改过的buildroot的

出0入0汤圆

发表于 2015-11-16 12:30:19 | 显示全部楼层
LZ要不试试用buildroot 应该可以免去很多烦恼~

出0入0汤圆

 楼主| 发表于 2015-11-16 12:41:32 | 显示全部楼层
dhbighead 发表于 2015-11-16 12:30
LZ要不试试用buildroot 应该可以免去很多烦恼~

试过,但是这个其实制作的还是简单的根文件系统吧。不会有哪些apt等。

出0入0汤圆

发表于 2015-11-16 13:50:33 | 显示全部楼层
imjacob 发表于 2015-11-16 12:41
试过,但是这个其实制作的还是简单的根文件系统吧。不会有哪些apt等。

可以啊。。有各种各样的包的。。。 常见的软件基本上都有,包管理应该也有吧

出0入0汤圆

 楼主| 发表于 2015-11-16 14:14:42 | 显示全部楼层
dhbighead 发表于 2015-11-16 13:50
可以啊。。有各种各样的包的。。。 常见的软件基本上都有,包管理应该也有吧
...

看下了,有包管理器,但是只有ipkg和opkg,偏桌面的apt和yum没有。
不过我已经挺满意了。
这样看来buildroot真的很好用,上手简单,工具又多。但网上有些教程说的它的缺点是不支持glibc,仅支持ulibc,但我看都支持啊。

出0入0汤圆

发表于 2015-11-16 15:02:44 | 显示全部楼层
buildroot的确很好用,你可用他做一个基本的系统,需要什么功能可以再去移植。

出0入0汤圆

 楼主| 发表于 2015-11-16 18:32:24 | 显示全部楼层
wangcjishu 发表于 2015-11-16 15:02
buildroot的确很好用,你可用他做一个基本的系统,需要什么功能可以再去移植。 ...

yocto,openembeded用过吗,网上说是比buildroot好,我任是连用都不会用

出0入0汤圆

发表于 2015-11-19 10:03:23 | 显示全部楼层
imjacob 发表于 2015-11-16 18:32
yocto,openembeded用过吗,网上说是比buildroot好,我任是连用都不会用

yocto和buildroot用过,都不难,openembeded这个没用过。

出0入0汤圆

发表于 2015-11-19 12:44:23 | 显示全部楼层
链接有用,谢谢分享。最近这半个月我也是学习移植根文件系统移植到mini2440以及驱动开发,但没有楼主深入,我现在目标是移植一个Linux和根文件系统到全志A13的p76v平板上,后期移植安卓系统

出0入0汤圆

 楼主| 发表于 2016-3-27 17:10:42 | 显示全部楼层
imjacob 发表于 2015-11-16 14:14
看下了,有包管理器,但是只有ipkg和opkg,偏桌面的apt和yum没有。
不过我已经挺满意了。
这样看来buildr ...

这里更正一下,buildroot是不支持ipkg和opkg的,看到包管理器里的 ipkg和opkg估计起个提示作用吧。

出0入0汤圆

发表于 2017-4-6 10:13:53 | 显示全部楼层
imjacob 发表于 2016-3-27 17:10
这里更正一下,buildroot是不支持ipkg和opkg的,看到包管理器里的 ipkg和opkg估计起个提示作用吧。 ...

楼主最近还在研究文件系统么,
我是要在I.MX6  ARM V7,上移植带X11文件系统。
参考友善 http://www.arm9home.net/read.php ... toread--page-3.html
昨天试了用Debootstrap
sudo qemu-debootstrap --arch armhf xenial ubuntu_arm  
和楼主一样的疑问,这样直接下载下来的文件系统能用么?
实测运行不起来。

出0入0汤圆

 楼主| 发表于 2017-4-7 21:57:04 | 显示全部楼层
yulutong 发表于 2017-4-6 10:13
楼主最近还在研究文件系统么,
我是要在I.MX6  ARM V7,上移植带X11文件系统。
参考友善 http://www.arm9 ...

不好意思,很久没研究,帮不了你。最近开始搞android了,以前的东西感觉有点遥远了都

出0入0汤圆

发表于 2017-4-14 14:42:57 | 显示全部楼层
imjacob 发表于 2017-4-7 21:57
不好意思,很久没研究,帮不了你。最近开始搞android了,以前的东西感觉有点遥远了都 ...

重装了10来遍虚拟机,总算在ubuntu14.04上安装了ltib。
楼主安卓系统是不是比linux简单?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 20:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表