制作ubuntu根文件系统
来源:互联网 发布:ctrl alt 互换 linux 编辑:程序博客网 时间:2024/05/22 01:55
参考文档:
http://blog.csdn.net/mountzf/article/details/51707853
http://developer.t-firefly.com/thread-10963-1-1.html
http://rockchip.wikidot.com/porting-os
折腾了几天,看了不少参考资料,终于把ubuntu根文件系统制作出来了,基本是参考着上面几篇资料完成制作的。然后我结合自己过程写下来,希望不会涉及到侵权问题哈。
本次根文件系统使用的是ubuntu-base-14.04-core-armhf作为基础。在此之前我尝试了ubuntu16的版本,但是mount上去之后,串口上只有内核输出,没有登录信息,系统就卡着。查找了一下原因,网友说是由于登录串口没有配置好,需要在/etc/init目录下添加ttyS0.conf启动。我尝试添加了,然而还是启动不了,结果他们说换个内核版本或者打上相应的补丁就能解决了。如下(我卡住的地方和那位仁兄一样。)
总之ubuntu16版本我试了好多次都没有出现登录信息,只好先放一下,用ubuntu14版本。
以下是制作流程:
1、下载ubuntu14源码
wget http://cdimage.ubuntu.com/ubuntu-core/releases/14.04.1/release/ubuntu-base-14.04-core-armhf.tar.gz
上面的链接不知道还行不行,不行的话自行到ubuntu官网上通过页面下载再传过去吧。
2、解压源码
mkdir ubuntu14
sudo tar -xpf ubuntu-base-14.04-core-armhf.tar.gz -C ubuntu14
注意,一定要用sudo命令。
3、下载qemu-user-static
sudo apt-get install qemu-user-static
4、复制一些必要的文件
首先进入解压后的目录下 cd ubuntu14
- #!/bin/bash
- function mnt() {
- echo "MOUNTING"
- sudo mount -t proc /proc ${2}proc
- sudo mount -t sysfs /sys ${2}sys
- sudo mount -o bind /dev ${2}dev
- sudo mount -o bind /dev/pts ${2}dev/pts
- sudo chroot ${2}
- }
- function umnt(){
- echo "UNMOUNTING"
- sudo umount ${2}proc
- sudo umount ${2}sys
- sudo umount ${2}dev/pts
- sudo umount ${2}dev
- }
- if ["$1" == "-m" ] && [ -n "$2" ] ;
- then
- mnt $1 $2
- elif ["$1" == "-u" ] && [ -n "$2" ];
- then
- umnt $1 $2
- else
- echo ""
- echo "Either 1'st, 2'nd or bothparameters were missing"
- echo ""
- echo "1'st parameter can be one ofthese: -m(mount) OR -u(umount)"
- echo "2'nd parameter is the full pathof rootfs directory(with trailing '/')"
- echo ""
- echo "For example: ch-mount -m/media/sdcard/"
- echo ""
- echo 1st parameter : ${1}
- echo 2nd parameter : ${2}
- fi
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>分割线>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2017.9.19更新——将ubuntu rootfs拷贝到SD卡遇到的问题s.
拷贝步骤:
1、用读卡器把sd卡插入电脑,并且在虚拟机下的/media目录下找到挂载上的sd卡,确认已经挂载上了。
2、执行命令fdisk -l 查看原先sd卡的分区情况。在我的这张sd卡上一共有3个分区。分别是sdb1、sdb2和sdb5.
3、按照我大哥的说法,根文件系统放在第5分区上 也就是sdb5 ,进去一看,果不其然,存放的确实是原先的根文件系统。
4、删除或新建一个分区。比如要对sdb5进行操作,执行指令:fdisk /dev/sdb5 然后进入命令行 ,输入d代表删除这个分区,或者输入n代表新建一个分区。
5、格式化新建的分区。为了省时间,我没有做第4步,而是直接把原来的sdb5格式化了。执行命令 mkfs -t ext4 /dev/sdb5 此处为ext4的格式,按需格式相应的格式。
6、文件系统拷贝到第5分区。我们需要先把sdb5 mount到某个文件夹下,如果发现提示说sdb5正在挂载的话,请先umount /dev/sdb5 一下。然后 mount /dev/sdb5 /mnt
7、第6步之后第5分区就挂载到/mnt目录下了,接着 sudo cp -rp ubuntu/* /mnt (注意,加上-p参数是为了在拷贝的时候保持rootfs文件的属性不会改变,不然可能启动不了)
8、修改文件 /etc/fstab 原先文件为:
因为我们rootfs 放在第5个分区 所以把/dev/mmcblk0p2改为/dev/mmcblk0p5即可。
9、sd卡插到开发板启动。果不其然,启动不了,真是尴尬。
10、无奈~~~向大哥寻求帮助。他说在uboot界面的命令行 bootm去掉根文件系统地址选项 也就是改为 bootm 80200000 - 81280000 然后save 再次启动。成功啦~~
二、网络配置问题
经过上面的折腾之后,开发板已经能从sd卡启动了,不用去nfs挂载上去了。然而接下来的问题是,没网啊。。。下面开始说明配置。
1、修改/etc/network/interface 这个文件夹。配置成这样:
根据自己的实际情况配置。。也可以配置成动态ip,不过开发板嘛,最好是配置成静态的。
2、在/etc/resov.conf 下 配置成:nameserver 192.168.x.1 (根据你自己情况替换掉x)
3、重启网络 : sudo /etc/init.d/networking restart
4、然后pingy一下,发现说network is unreachble..(无语)
5、我想会不会是eth0没起来啊,于是乎,执行 sudo ifconfig eth0 up ,结果提示:eth0: ERROR while getting interface flags: No such device(我擦。相当无语)
6、都没有eth0 还起个鬼啊。于是乎,执行 ifconfig -a 一看显示的结果,还真没eth0,取而代之的是can0,怪不得。
7,不过不用怕,招儿有的是。执行:sudo rm /etc/udev/rules.d/70-persistent-net.rules 把原先的文件删了。
8、重启开发板 sudo reboot 然后ifconfig 发现eth0又回来啦 哈哈哈 。。ping网关和ping百度都没问题。就这么愉快配置好了网络。
- 制作ubuntu根文件系统
- ubuntu制作android根文件系统
- arm-linux(ubuntu) 根文件系统 制作
- ubuntu制作nfs文件系统
- Ubuntu for Arm根文件系统制作与SPICE安装
- tiny4412 busybox制作根文件系统rootfs nfs 挂载 ubuntu 14.04
- tiny4412 busybox制作根文件系统rootfs nfs 挂载 ubuntu 14.04
- tiny4412 busybox制作根文件系统rootfs nfs 挂载 ubuntu 14.04
- 制作ramdisk根文件系统
- 根文件系统的制作
- 根文件系统的制作
- 根文件系统的制作
- Jffs2根文件系统制作
- 根文件系统制作
- 根文件系统制作
- 根文件系统制作
- linux根文件系统制作
- 制作ramdisk根文件系统
- lvm
- java数据库连接池代码实现
- java实现FTP多线程断点续传,上传下载!
- Android自定义对话框
- 从送外卖到建站售主机还有共享自行车说起-2017年8月江西IDC排行榜与发展报告
- 制作ubuntu根文件系统
- javascript向上向下取整
- 安全获取操作系统位数
- Android中Recyclerview使用14----RecycleView的item间距设置
- leetcode寻找最大长度的连续数对
- 每日一题(10)—— 数组与指针
- PAT
- Yii2路由设置和语言包设置
- Kotlin Reference (七) Returns and Jumps