用了好多年的macbook pro,终于还是到了它卡的不行的时候。想换个新款的,然而新款的竟然没有esc键,我的第一反应,就是太牛(S)皮(B)了。伤疤好了太久,甚至会怀念以前受伤的日子。所以,我入手了一个配置华丽丽的win系超极本。
说实话,真特么的瞎。电脑没有任何问题,就是windows系统,可能真的是天生与开发相冲。你会在捣腾很多东西的时候,心惊胆战,又意料之中的发现,某某某不支持windows操作系统,或者说操作案例中,有Linux的,有Mac OS的,就是没有windows的,你说气人不气人?身为菜瓜,我实在没有资格评论,或者黑什么,只是聊发牢骚,以自慰。
So,最好的办法是什么?什么?换mbp?恩,好想法,哥乌嗯~!当然是装个Linux系统咯!
我选了Ubuntu做双系统,大学学Linux的时候,实验室里装的是red hat。whatever,都差不多。如果非要纠结自己选哪个,上知乎吧,有一群人就谁是最好用的Linux进行了,嗯,很“深入”的探讨~!
网上装win10和Ubuntu双系统的教程满天飞。可是现在的国内教程啊,博客啊,水分太多。很多人喜欢抄来抄去,可能也不是他们想抄,只是没找到合适的方式收藏,怕自己以后忘记了,干脆就一股脑复制过来。除此之外,很多的前排博客(一搜关键字,就会出现在头几个的),已经是两三年前的东西。都村村通公路,跑小汽车了,老哥,你还在告诉我骑马走哪个山头会更近???
===========================正文分割线,手动微笑===========================
第一关:打天下
思路很简单。
首先是制作启动U盘。下载Ubuntu桌面系统,稳定大于一切,自己选择版本,我装的是18.04.1 LTS。接着就是利用刚下载的文件,制作启动U盘,下个软碟通就好。至于制作过程,前人之述备矣。(别忘了备份U盘里的东西)。这一步,通常不会有任何问题,有问题你也别问我,我不修电脑,也不懂多少操作系统,大学学的理论?哦,如果不是翻课表,我都忘了学过操作系统。
接下来是压缩你现在的硬盘,为Ubuntu腾出空间。win10计算机管理中的硬盘管理,就可以执行“压缩卷”的操作,不需要安装任何磁盘管理软件。
最后一步呢,其实也很简单,就是进入引导系统,选择U盘启动,然后按步骤去但是却会在形形色色的地方出问题。
首先,在bios中,我disabled了fast startup和Secure boot,至于原因,下文会提到(如果要按照我的步骤操作,最好先通读一遍,看是否跟你的情况类似,再操作)。选中U盘启动,不知道为什么,我一选择install Ubuntu,就死机,所以干脆选择了try Ubuntu,先进系统,你会发现进来之后,桌面就有一个Install Ubuntu的按钮,愉快~!接下来的配置过程在这里。
我安装了两次Ubuntu,原因在下文中也有说明。那么如何彻底的清除Ubuntu,从而进行重装呢?格式化为Ubuntu腾出来的空间,并不足够,bios会一直保留着ubuntu的启动项。我下载了EasyUEFI(如果不是UEFI的,使用EasyBCD),但并不work,可能跟电脑厂商和bios的版本有关。最终的解决方案来自youtube上的一个视频。
我将相关操作摘录如下:
1.删除Ubuntu占用的硬盘卷;2.以管理员的身份运行命令行,并输入disk part3.输入 list disk,查看当前有多少个硬盘,一般来说,只有一个硬盘,硬盘代号为0。如果有多个硬盘,先确定efi在哪个盘上,不确定的话,按照下面的操作,一个个的找。4.输入 select disk 0,选中0号硬盘5.输入 list partition,查看当前硬盘上的分区情况。每个partition都有自己的type,有Recovery(恢复区),reserved(保留区),system(系统区),primary(主区)等。6.找到system区的partition代号,比如2,输入 select partition 2,选中system partition。7.输入 assign letter=x , 为system partition分配盘符为x(注意,系统盘,跟系统分区,不是同一个概念,我们俗称的系统盘的盘符通常是C)。这时候你如果打开“我的电脑”,会发现多了x盘。不要担心,这个x盘在重启之后,自动就没有了。8.输入exit,退出磁盘分区管理9.输入 x: , 进入x盘10.输入dir,查看x盘中的内容,会发现有个名叫 “EFI” 的文件夹11.输入 cd efi,进入efi文件夹12.输入 dir,查看efi文件夹中的内容,会发现有个叫ubuntu的文件夹13.输入 rd ubuntu /s,来删除ubuntu文件夹,回车之后,会需要你再次确认,输入y来确认删除14.重启
重启之后,我进入到bios,仍然可以看到ubuntu的启动项,电脑是华硕UX550VE,BIOS未升级,没看版本。我进行了针对这个bios的后续删除操作,仅供参考,不同型号的电脑不同版本的bios,操作不尽相同。首先进入到advanced mode,选择boot选项卡,那里可以选择删除某个boot项。删除之后,不要按照旁边的按键提示“F10 SAVE”,我第一次按了F10,没看提示,就确定了,然后重启,发现Ubuntu的启动项,仍然在。后来发现,按了F10之后的提示,是save and reset????kidding me???又保存又重置,是什么鬼?我发现在删除boot项附近,有个save的选项,那边才是真正的保存。保存之后,不要退出,选择windows boot manager启动windows就行了。之后重启进入bios,ubuntu启动项,就没有了。
仅仅是装上了双系统,对于经常要用到它的开发人员来说,没有任何意义。所以我们需要装好,并把乱七八糟的环境配好,才算完事。
第二关:破残匪
我遇上了这么些问题,一一介绍趟坑之旅。
1.从Try Ubuntu进Ubuntu,点击install Ubuntu,一路通行,到最后restart now,会死机。现象就是屏幕卡在那个画面,鼠标丢失,显示屏常亮,无论等待多久,都不会关机。
解决方案:强制关机~!
对,没错,就是这么暴力。不清楚具体原因,ask Ubuntu上有个2016年的BUG,到目前为止,没有下文。这个BUG的现象就跟我这儿很像,从后续的解决过程来看,很可能是系统的某个驱动有问题,而这个驱动,又很有可能是wifi驱动,和NVIDIA独显驱动。
2.强制关机之后,再开机,惊喜的发现,呀,启动页面竟然出现了Ubuntu和windows,无论选哪个,潇洒一回车,就进入了对应系统的登录界面。多次尝试,windows进入登录界面后,可以正常登录,没有问题,但Ubuntu就没那么好运了。这里要特别注意,本次进入Ubuntu登录界面,如果能成功登录,一定要谨慎选择重启或者关机。因为很可能一关机,就再也进不来了。我按我出问题的顺序来说明。我的这次登录Ubuntu成功了,everything seems to be Ok。可以正常连wifi,各种显示也正常,各种命令也都work,如果非要说有什么不太正常的地方,就是我关机的时候,又死机了。。。。。。
解决方案:只能强制重启~!
其实可能的原因,跟1中的一样。只不过这次强制重启后,可能会遇上更大的麻烦。
3.没错,麻烦来了,登录,没问题,一样可以进来。但是忽然发现不显示wifi功能了~!这不完犊子呢嘛~!
解决方案:无。
反正我是没直接针对这个问题,采取什么有效的解决方案,而是在后续出现的问题中,顺带解决了它。但不要失望,先想想,大体可能就是wifi驱动的问题。可以尝试使用手机USB共享网络,给Ubuntu续上网络,然后尝试操作下文所写的更新软件及驱动的操作。
4.我在无法显示wifi的时候,一头雾水,要说是没有驱动,那也不合理,因为第一次登录的时候,是可以连接wifi的。或许是系统本身有什么BUG,反正我选择了,再来一次,就是删掉重新。这一次的麻烦更大,甚至都无法正常登录,每次输入密码后,就死机不动了。
解决方案:在一些国内外的论坛上,有很多人说要修改什么杂七杂八的启动参数。此处存疑,我并没有采用,第一是因为自己觉得自己一顿乱改,到最后自己都不知道改了哪些地方,出了问题,就真完蛋了;第二是觉得,Ubuntu不是小作坊生产的小产品,不应该存在他们所说的那些显而易见的BUG。相反,我在Ubuntu官网上找到了一篇关于RecoveryMode启动Ubuntu的文章,简单的说,就是当你无法正常启动Ubuntu的时候,尝试进入RecoveryMode来启动,因为RecoveryMode只会加载最基础的组件,大部分情况下,可以成功启动。
正是在切换RecoveryMode的时候,我发现屏幕内容显示异常,直觉告诉我,电脑里的独显在作怪。又查了很多的资料,很多资料都显示,我遇到的问题1-4,都可能是驱动不正常导致的,而这个驱动不正常要怎么解决呢?最起码我需要解决两个驱动问题,第一个是wifi,第二个是显卡。
Ok,RecoveryMode进入Ubuntu,这次一进来就发现,整个屏幕显示都异常了。下面我们更新驱动,能连wifi连wifi,不能连wifi就用手机USB共享网络(不知道是不是所有手机都支持,华为是支持的)。由于一篇说明如何安装Ubuntu双系统的博客中谈到了NVIDIA独显驱动的问题,又大概看了一下阮一峰先生关于Secure Boot的介绍,当然,我其实没搞懂到底发生了什么,但我照做了,进入BIOS,关掉了Secure Boot和Fast Startup。然后启动Ubuntu,找到software & updates,长这样
打开后,因为有人说,国内网络情况不是很好,下载Ubuntu的很多东西,会失败,或者很慢,建议Download from 阿里云的镜像,但我发现打开software & updates之后,Download from 后面显示的是Server from China,所以我就没改,it works。
如果你的也是显示Server from China,则应该也不要进行任何修改,直接切换上面的选项卡,选择Additional Drivers。正常情况下,它会搜索是否有需要替换的驱动。我这边是出现了NVIDIA的驱动
Ok,切换到使用NVIDIA驱动,然后点Apply changes。如果当前你的显示是异常的,那么很可能点完Apply changes后没有任何反应,并且刚选中的Using NVIDIA driver又跳回默认的 Using X.org X巴拉巴拉。遇到这种情况,你先把当前窗口最小化,看看桌面有没有弹起软件更新的窗口,这个软件更新的窗口很重要,一定要更新,如果没有出现,多点几次Apply changes,或者干脆去点software updates(注意跟上面提到的software & updates不是同一个东西),长这样
等待软件更新完成,你可以从更新详情中,大概发现,它似乎帮你更新了很多东西,而其中一些,似乎是针对wifi驱动,以及一些基础的组件。更新完成之后,你再点Apply changes,就会正常apply。重启后,login正常启动,并且显示恢复正常,wifi列表显示正常,Ubuntu可以正常重启,或关闭。
至此,Ubuntu才是一个已经能正常运行在你的硬件上的操作系统。
总结一下,其实,装Ubuntu并没有什么难点,而Ubuntu本身也不会有什么特别明显的BUG,问题一般都是因为硬件或其驱动与Ubuntu的不兼容,导致的。那最好的方式,就是第一次强制重启后,直接连上wifi,执行上文提到的software update。
5.在Ubuntu上安装搜狗拼音
这个没什么问题,首先确保Ubuntu使用的输入框架是fcitx。如果不是,先装fcitx,并去系统设置中,切换input method framework为fcitx。再去下载一个sougoupinyin for linux。
6.安装shadowsocks client,并完成配置。
这是为了干嘛,我就不多说了,懂的人都懂。
自己搭建server的教程很多,我是很久之前搭建的,这次直接配置的client。server的搭建教程可以参考这里。一样的,具体问题具体分析,这篇博客里很多地方都已经不适用于现在的搭建过程,自己分析分析。
首先安装Ubuntu下的客户端。我采用的是命令行的方式安装的。
1234 | sudo apt-get install python-pip sudo pip install shadowsocks sudo apt-get install shadowsocks-libev sudo cpan Net::Shadowsocks |
英文官网的quick-guide特别坑 ,没头没尾。
我man了一下shadowsocks-libev,从中找到了ss-local命令似乎就是用来实现本地代理的。继而找了中文版的说明。
多讽刺,哈哈。
所以,接下来就是
1 | sudo vim /etc/shadowsocks-libev/config .json |
填入server(远程服务器ip),server_port(服务端端口),method(加密方式),password,具体代表什么,中文说明里面都有。注意这里的local和local_port,如果不写,则分别是默认的127.0.0.1和1080,这两个参数代表ss-local作本地代理的时候,转发来自127.0.0.1的1080端口的请求。这两个参数后面要用到。
输入下面的命令,启动client。
1 | sudo ss- local -c /etc/shadowsocks-libev/config .json |
出现下图显示,则应该是启动成功了。
启动成功后,我们按照中文说明中的,将socks代理转为http代理。
安装privoxy
1 | sudo apt-get install python-m2crypto privoxy |
修改配置文件
1 | sudo vim /etc/privoxy/config |
其实只需要找个地方添加一行(注意最后面有个点号),这一步,127.0.0.1和1080要和上面ss-local启动的配置文件中的local和local_port一致。就是要将某些请求,转发到127.0.0.1的1080端口。
forward-socks5 / 127.0.0.1:1080 .
上面说的“某些请求”其实在config文件中有默认配置
listen-address 127.0.0.1:8118listen-address [::1]:8118
即本机发往8118端口的http请求,都会被转到我们配置的sock5代理端口,即127.0.0.1:1080。
重启privoxy
sudo service privoxy restart
最后一步,就是要将我们的http请求,https请求转发到8118端口。
中文说明中写的很“清楚”,我采用的是chrome浏览器。因为一开始没有任何代理,所以打不开chrome extensions商城,不能直接安装SwitchyOmega插件。做法是先修改设置中的network选项,将network proxy改成Manual,并将端口改为/etc/privoxy/config中默认的8118。
然后再从SwitchyOmega插件进入,直接安装该插件。其实到这一步为止,不安装这个插件,也可以完成代理操作了,也就是说,我们可以愉快的使用谷歌搜索了。但正如中文说明中指明的那样,全局代理并不合理。所以我们需要借助这个插件,来限制仅仅代理chrome浏览器的http请求。
这个插件的使用说明,在安装好后,自动会跳出来。功能很强大,能实现PAC自动模式的代理。
简单的说,这个插件有两种请求方式,一种是直接请求(Direct),不进行任何代理,比如我们用chrome访问百度,就不希望各种代理,各种转发;第二种就是代理请求(proxy),我们可以在插件options页面找到proxy的配置界面,并将其端口配置成8118,即我们要将chrome的http,https请求都转发到8118端口,由privoxy将此请求转发到ss-local的1080,再由ss-local client将请求发到我们的server,进行后续的请求操作。so crazy~!
除了proxy的配置界面之外,我们还能找到auto-switch的配置界面。在这里,我们可以使用域名通配符的方式,来决定哪些请求使用Direct,哪些请求使用proxy。其实我们只用配置哪些请求使用proxy,没有配置的域名,默认会选择Direct。同时,你在日后使用过程中,遇到某些页面无法访问的时候,发现插件亮黄色的数字,点击插件小图标,会出现failed resources,点击,然后选择要使用proxy的域名,添加到auto-switch配置中就可以了。
最后别忘了,要开启插件,并选中auto-swich。如下图
然后关掉上文中曾经为了安装插件而设置的全局代理,将network重新设置成disabled。
到这里,愉快~!