终于厌烦了讨厌的CentOS破旧软件源!决定把阿里云的ECS服务器系统换了,于是今晚干了一件神奇的事情,当时手头上只有我的Motorola XOOM,装的CyanogenMod(Android CM版),因为Android本身就是Linux,而且自带SSH,之前也经常用我的平板SSH到ECS上维护服务器,所以照例用root登陆进去,从控制台中把系统给升级了。

现在成文,教大家怎么把阿里云的Ubuntu搞定到最新版!
前提
我的ECS服务器实例里面没有什么东西,所以不需要备份,如果你进行了不少设置,或者放进去了不少东西,又心疼丢失,那就先备份出来吧,阿里云ECS更换系统是会抹掉系统盘的!
当然如果你挂载了数据盘,就可以高枕无忧了。
停止ECS实例,更换系统。
进入控制台点“停止”,或者SSH/VNC进去shutdown都可以。
完事儿刷新一下控制台里面ECS的当前状态,当状态为“停止”时,“更多操作”菜单里面的“更换系统”按钮就Enable了。
请更换为Ubuntu,阿里云提供的版本是12.04,古老的东西,本文旨在升级这个古老的东西。
SSH登陆Ubuntu 12.04
刚切换完系统,阿里云会发短信给你,告知相关变动情况,顺便把root密码也告诉你。
这样我们就直接爽快的打开控制台(Windows用户请用Putty! Windows Command Prompt是没有SSH的):
1 | ssh root@xxx.xxx.xxx.xxx |
进去第一件事是先用passwd把root密码改了
用apt-get升级Update/Dist区域的所有软件包
在root身份下,或者你之前新建了用户并登陆了,就su一下,或者确保你的当前用户在sudoers中。
1 | apt-get update |
上面四条命令分别是:
更新apt-get的源信息
升级apt-get的Dist区域软件包
删除多余包
重启系统(关键!)
上面第二条命令比较费时,截至今晚Ubuntu 14.04还是LTS版本,需要下载大约270M的软件包,如果以后最新版本是更高的了,这个数字肯定还会变动。
因为是给ECS升级,走的都是阿里云的带宽,说真的270M左右,分分钟就完事儿了,从这也能看出,目前用户数不多的阿里云ECS不管性能还是带宽都还是十分非常极其令人满意的(我的这个ECS实例是1 CPU/512M RAM/2M Bandwidth,基本属于最低配置)。
注意:最后一定要重启系统(用reboot命令)
确保update manager已经安装在系统中
1 | apt-get install update-manager-core |
一般会提示已经安装了该包,确认是最新版本就行了。
正式开始自动升级!
此步骤要求非常稳定的SSH连接,一旦断线就比较难办,请在网络状况较好的时候执行,如果不怕折腾,升级失败导致系统崩溃,就ECS控制台中再擦除一次系统盘也行。
实在点儿背中断了,参看最后
0A步骤!我用的平板登陆的,风险更是相当高!说明我的运气还是不错的。
运行升级命令后,系统会立刻提醒你使用SSH操作存在风险,选择“Yes”会打开一个额外的SSH连接,端口为1020(或者1022),如果当前SSH中断了,则可以使用ssh登陆到这个端口来恢复系统到初始状态。
让我们开始吧:
1 | do-release-upgrade -d |

这一步会下载更多的包,580M左右吧,但咱的服务器是云服务器,带宽不是问题,总体上会运行个大约7~8分钟,包括自动下载和编译安装等等全过程。
开始不久会开始提示“New version…”之类的回答“yes/no”的问题,大致意思每次都是软件包提供者提供了该软件包的新版本,是否套用新配置,一路Yes就好。
过程中会被问到一次“有些服务需要停止以便更新,是否同意由升级程序操作自动停止/更新/重启相关服务?”类似的问题(英文),这时候照例选择“Yes”
过程中会进入一个红色背景的界面(SSH 服务配置),说“新版本建议取消root用户的SSH密码登陆方式”,这时候可以选择“同意”来关闭之后root通过SSH的登陆行为,也可以默认“不同意”继续同意root的SSH密码登陆。我在这里是保持了,因为阿里云有“云盾”服务,从云出口处检测暴力攻击,并是反向端口开放策略(手动指定开放,默认全部关闭),已经够安全了(除非你的root密码是123456这样的……)。
过程中会有一个“Grub”的提示,说引导记录怎么怎么更新的,细节不用管,继续“Yes”
等一切搞定,提示你升级完毕,就可以重启系统了,等一会儿再用root登陆进来,你看到的就将是最新版本(目前是14.04 LTS)的Ubuntu运行在你的阿里云ECS服务器中了!
1 | reboot |
再次登陆,添加用户
1 | ssh root@xxx.xxx.xxx.xxx |
上面的adduser是Ubuntu中添加用户的命令,当然你也可以使用更“标准”的useradd命令,只是这两个命令的区别是,adduser自动为你创建Home文件夹,并进入设置密码过程,最后拷贝相应的shell配置和RC文件到Home文件夹中,而useradd需要你自己搞定这些东西。
编辑/etc/sudoers文件,里面添加xxx ALL=(ALL) ALL一行,xxx是用户名,这样你新建的xxx用户就可以sudo了。
0A. 升级过程中SSH不幸中断!
如果你点儿确实背,不幸在升级过程中break了SSH,还是有办法恢复并重新开始自动升级过程的。
首先用那个备用的端口SSH进去系统,然后编辑/etc/update-manager/release-upgrades文件,找到Prompt=xxxxxxxx(内容不一样)这样的句子,把所有的Prompt=这行全改成Prompt=normal
然后重复do-release-upgrade -d步骤再次启动自动升级程序。
一切搞定了?给自己恭喜一下吧!
等14.04正式版,或者以后更高的版本出来想升级的话,打开此文,再次走一遍。
当然,这次升级纯粹是因为12.04“太老”了,apt源里都没什么新东西。
其实版本升级不用这么频繁,反正ECS包月,带宽性能不用也是浪费(有服务的另说)。
最后,希望能帮到你。