转载:https://www.polarxiong.com/archives/%E6%A0%91%E8%8E%93%E6%B4%BE-%E5%B0%86Ubuntu-15-04%E5%AE%89%E8%A3%85%E5%88%B0USB%E7%A7%BB%E5%8A%A8%E7%A1%AC%E7%9B%98.html
前提
- 安装Ubuntu 15.04仅支持树莓派2,即目前的最新版;
- 安装过程中需要用到SD卡,安装完也一直需要用到SD卡;
- 由于目前的镜像并未预置openssh-server,所以需要将树莓派连接显示器,和键盘。
原理
实际上就是将Ubuntu的整个根目录拷贝到移动硬盘,然后将引导分区由SD卡分区改至移动硬盘分区,最后设置Ubuntu移动硬盘分区为根目录挂载点。
步骤
下载Ubuntu 15.04树莓派版镜像
Ubuntu官网提供的是Ubuntu 14.04 LTS的镜像,但实际上15.04早已有人发布到树莓派官方论坛,可以在Ubuntu 15.04 (vivid) Raspberry Pi 2 image找到下载链接。
一共有3个版本提供下载,Desktop、server和standard,可以根据自己喜好下载;下载完是.img文件。
安装Ubuntu到SD卡
安装就是树莓派的标准安装了,官网有相关的教程,参考INSTALLING OPERATING SYSTEM IMAGES。
登录Ubuntu
烧录到SD卡后插入到树莓派接上电源就开机了,预置的用户名和密码都是ubuntu
,注意此时并不需要apt-get update
之类的,因为还需要将整个根目录拷贝到移动硬盘。
移动硬盘分区、格式化
接上移动硬盘,准备分区(实际上并不一定需要分区,如果你已经分区过的话),使用Linux’s Partition Editor
sudo parted
输入
print all
查看所有的设备及其分区
选择移动硬盘(不出意外都是sda
,不过还是需要看清楚)
select /dev/sda
输入
mklabel gpt
注意此命令会删除移动硬盘所有数据,确定则输入Y
确认。
输入
q
退出parted
使用fdisk进行后续操作,同样这里注意sda
sudo fdisk /dev/sda
输入
p
查看目前的分区,如果如上重建分区表的话应该是没有分区的。
输入
n
新建分区
First sector
直接用默认的就好,Last sector
输入
+80G
即新建80G大小的分区,这里凭自己喜好。
输入
p
查看分区,可以看到新建的/dev/sda1
分区。
最后输入
w
写入分区表,完成分区
格式化(注意sda1
)
sudo mke2fs -t ext4 -L rootfs /dev/sda1
挂载新分区
将移动硬盘的新分区挂载到/mnt
sudo mount -t ext4 /dev/sda1 /mnt
拷贝根目录到新分区
sudo rsync -axv / /mnt
这时可以先放松一下了,这个拷贝得花点时间的。
修改树莓派引导分区
这里说下树莓派引导原理,树莓派上电启动时会寻找SD卡上/boot
下的cmdline.txt
,读取里面的参数决定引导分区。
对于Ubuntu,默认引导为/dev/mmcblk0p2
,即SD卡上的分区;此时需要修改为移动硬盘中分区
sudo nano /boot/cmdline.txt
原本为:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootwait
修改为(注意sda1
,以及最后的延时5秒):
dwc_otg.lpm_enable=0 console=tty1 root=/dev/sda1 rootwait rootdelay=5
修改后保存
修改挂载点
上一步修改完后实际上再次启动树莓派时就会从移动硬盘启动了,但这里还需要修改挂载点
sudo nano /mnt/etc/fstab
将:
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
修改为(注意sda1
):
/dev/sda1 / ext4 defaults,noatime 0 1
修改后保存。
注意这里要理清:下次开机时,这次的/mnt
就是下次的/
,即根目录了。
重启
sudo reboot
重启可以发现树莓派绿灯只会在启动前几秒闪烁,之后就变成移动硬盘灯一直闪烁了。
继续使用ubuntu
账号密码登录。
输入
df -h
可以看到如(我改成中文了):
文件系统 容量 已用 可用 已用% 挂载点
/dev/root 79G 3.1G 72G 5% /
容量变成移动硬盘那个分区的大小了,挂载点是根目录/
注意:至此Ubuntu已经成功安装到了移动硬盘,但注意并不是说SD卡就没用了,因为每次启动树莓派都会从/boot/cmdline.txt
读取引导,这个一定不能缺少!
后续步骤
启用root
sudo passwd root
输入当前密码ubuntu
后,输入两次新root密码就启用root账户了。
exit
然后重新用root登录即可。
更新源
sudo apt-get update
sudo apt-get upgrade
设置SWAP
sudo apt-get install dphys-swapfile
会设置2G大小的SWAP分区,需要一点时间。
安装openssh-server
sudo apt-get install openssh-server
注意修改/etc/ssh/sshd_config
,主要是允许root登录和密码登录。
另一种方法
考虑到引导时指定的是sda1,显然如果有新的存储设备连接到树莓派,开机启动时很可能因为sda被占用而造成不能开机。一种解决办法是利用GPT分区特性,用UUID实现,具体可以看下面参考链接。我没有选择用这种是因为修改后虽然系统用起来正常,但总会有一些细微的毛病,加上自己并不是经常插上存储设备之类的,所以还是用的老方法。
参考
- Ubuntu 15.04 (vivid) Raspberry Pi 2 image
- Installing Operating System Images - Raspberry Pi Documentation
- Raspberry Pi Home Server: Part 6, Adding a hard drive | MelGrubb.ToBlog()
- Circuidipity | Run a Raspberry Pi 2 from USB storage v2.0
- server - How do I change UUID of a disk to whatever I want? - Ask Ubuntu