前提

  • 安装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实现,具体可以看下面参考链接。我没有选择用这种是因为修改后虽然系统用起来正常,但总会有一些细微的毛病,加上自己并不是经常插上存储设备之类的,所以还是用的老方法。

参考