红联Linux门户
Linux帮助

制作ubuntu根文件系统

发布时间:2017-08-17 10:09:44来源:blog.csdn.net/stephen_lu_fahai作者:Stephen_Lu_Fahai
折腾了几天,看了不少参考资料,终于把ubuntu根文件系统制作出来了,基本是参考着几篇资料完成制作的。然后我结合自己过程写下来。
本次根文件系统使用的是ubuntu-base-14.04-core-armhf作为基础。在此之前我尝试了ubuntu16的版本,但是mount上去之后,串口上只有内核输出,没有登录信息,系统就卡着。查找了一下原因,网友说是由于登录串口没有配置好,需要在/etc/init目录下添加ttyS0.conf启动。我尝试添加了,然而还是启动不了,结果他们说换个内核版本或者打上相应的补丁就能解决了。如下:
制作ubuntu根文件系统
制作ubuntu根文件系统
制作ubuntu根文件系统
总之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
sudo cp /usr/bin/qemu-arm-static usr/bin/
拷贝PC主机端的dns配置,因为待会安装程序时要用网络:
sudo cp -b /etc/resolv.conf  etc/resolv.conf
增加软件源:
sudo vi etc/apt/source.list
去掉除以deb-src开头的所有库的注释
 
5、切换到此根文件系统
为了简化操作,用一个切换根文件系统的脚本ch-mount.sh,下载:https://pan.baidu.com/s/1pLo36jD,其内容如下:
#!/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
将下载好的ch-mount.sh拷贝到ubuntu14所在的目录,注意,不是ubuntu14下。
然后增加其可执行权限。sudo chmod +x ch-mount.sh 
接着执行./ch-mount.sh -m ubuntu14/  
(其实它的用法在内容写的很清楚了。)
执行成功后就能看到此事的用户名发生了变化,切换到root,也就是我们进入到自己下载的ubuntu14这个文件系统下了。
这时候我们就可以装一些工具,例如
apt-get install vim sudo bash-conpletiong 
耐心等它装完吧。
 
6、添加用户和root
由于新手上路,我还以为useradd和adduser是没有区别的,然后随便用的一个,导致我第一次登陆的时候,无法登陆普通用户,只能用root账户登陆。以下是二者的区别。useradd在创建用户时不会在/home下自动创建于用户名同名的用户目录,也不会自动选择shell版本,也没有设置密码,正因为这样,一开始无法登陆,需要用passwd命令修改密码。而adduser在创建目录时,能完成前者的几个功能,用户体验更加友好。
那么我们就使用adduser来创建root和ubuntu这两个账户。
 
7、退出
exit
 
8、退出mount
./ch-mount -u ubuntu14/
这样就基本完成了,至于怎么配置网络以及桌面系统之类的,后续完成。现在先用nfs挂载上去看看能不能成功mount上。实验效果如下:
制作ubuntu根文件系统
开发板nfs挂接上去后,操作和我们虚拟机用的ubuntu一样,ubuntu根文件制作成功。
 
后续:制作根文件的镜像
1、dd if=/dev/zero  of=ubuntu.img   bs=1M   count=3000
大概可以这么理解,先给ubuntu.img这个镜像bs*count也就是3000M的空间,如果给小了,后面放不进东西。不要怕给大,后面可以修复减小。
2、格式化镜像文件,并加入linuxroot卷标:
sudo mkfs.ext4 -F -L linuxroot ubuntu.img
3、挂载镜像并往里面拷入修改后的文件系统:
mkdir ubuntu-mount
sudo mount  ubuntu.img ubuntu-mount
sudo cp -rfp ubuntu14/* ubuntu-mount
4、卸载镜像:
sudo umount ubuntu-mount
5、检查并修复ubuntu.img
e2fsck -p -f ubuntu.img
6、减小镜像到实际大小
resize2fs -M ubuntu.img
大功告成,看看此时的ubuntu.img是不是小了,可以烧录了。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/32345.html