0. 严正声明
要时刻记住本文的目的是为了学术交流(逃
昨晚翻来覆去想那些流氓博客爬虫问题,就顺手给图片都加上了@jukrb0x 的字样,未来或许有更先进的反爬方案。有比较酷的解决方案欢迎小伙伴给我留言或联系我
1. 在一个雨天带着清纯妹妹上门取货
三月二十七本来应该是个适合约会天朗气清的日子,傍晚将至下起了零星小雨。
朋友[@FlickerSoul]在正在今年开年这场战役下半场中为 MC 崛起之读书,三过家门而不入,是乎由我作为工具人售后服务上门维修。据了解应该是一台Ubuntu Server 18.04.4 LTS
内网穿透失败,不明原因导致内核出错无法顺利开机,只能物理维护。
第一次在朋友不在家的时候去朋友家,有一个憨批妹妹恰逢认得去朋友家的路,就一起去了。
这雨确实弄的我差不多全身湿了,还好平常有带伞的习惯,不然妹妹就要一起淋湿了。
当然,淋湿了就容易感冒,感冒就不好读书了,这不还特殊时期咱还是安全第一。
水文就水到这!正文内容开始!
2. 开机检查
拿到机器后先上电开机,这台 Samsung 电池年久失修,只能用 Adapter 持续供电。
看起来是内河(Kernel)炸了,也有可能是引导出错,对于我这种长得帅的还无法直接判断问题的根源。
这里可以用命令uname -sr
或者uname -rs
来查看系统名称以及编号,忘记截图了。这是一些uname
的基本用法
uname -rs # 系统名称以及发行编号
uname -sr # 同上
uname -a # all 显示全部信息
uname -s # sysname 操作系统名称
uname -e # release 发行编号
uname -n # nodename 网络上的主机名称
uname -m # machine 打印处理器类型?我的输出是x86_64
uname -p # processor 处理器
自然想到的解决方案是修复或重装,修复 GRUB 引导,重装内核,最后不行就完全重装 Ubuntu(屡试不爽)
3. 制作启动盘
Windows 下有 PE (Preinstallation Environment),Ubuntu 有 LiveCD,因为我用的是 U 盘,所以也可以叫 LiveUSB 吧。
我的设备是 macOS 10.15,所以我直接用 Disk Utility 的命令行版本diskutil
进行 USB 写入制作启动盘,Windows 下可以考虑使用Rufus进行制作,方法类似。
官方其实有给出一个图形化的启动盘制作教程,但需要多装一个软件,我嫌啰嗦就直接用终端操作了。
3.1. 下载系统
官方的下载地址是: 点击传送
当然因为速度原因,有很多的 mirrors(啊我只找到了网易的)
Netease Mirror: 点击传送
这台电脑本身是 Server,为了方便操作,我下载的镜像是 Desktop 版本的Ubuntu Desktop 18.04.4 LTS
根据这个镜像的大小,制作启动盘大概需要不小于 4GB的 U 盘
根据 Ubuntu 官方的Create a bootable USB stick on macOS中提到的要求只需要 A 2GB or larger USB stick/flash drive,我也有点迷惑
3.2. 镜像转换
首先先把下载好的 iso 文件转换为 img 文件,在这里用 hdutil 命令,我已经 cd 到了指定文件夹操作,所以文件路径直接用了文件名ubuntu-18.04.4-desktop-amd64.iso
$ hdiutil convert -format UDRW -o ubuntu.img ubuntu-18.04.4-desktop-amd64.iso
blog 的代码高亮对 shell 的支持没有很好,所以看着可能有点累
hdiutil 的用法,这里面的介绍太长了,我们只需要用到 convert 这个 verb
首先是我们要做一个 UDRW 格式(可以 read/write)的 img 镜像,-o
后面接着是 outfile(输出文件的文件路径),再接着原来的镜像文件路径。
上面这串命令会在指定目录下生成一个叫做ubuntu.img.dmg
的镜像文件
这会需要花一点时间来完成镜像转换,与此同时可以新开一个 Tab,使用 diskutil list
来查看 U 盘挂载的位置
$ diskutil list
在这里找到你插入的 U 盘,记住他的路径是/dev/disk5
,接下来关于磁盘擦除和重写的操作都是不可逆的,一定要记清楚你插入的 U 盘此刻的路径,如果有重新插拔需要重新使用diskutil list
检查一遍,避免灾难性的后果发生。
这里还有点小波兰🇵🇱,我使用了一个旧 U 盘(外壳都被扒了),发现在执行格式化操作的时候好像 U 盘容量变小了,当时夜深很困,没有再三确认,总之是因为 U 盘没有足够大小写入 Ubuntu
当事 U 盘
我有看到有人说在转换镜像之后需要再mv ubuntu.iso.dmg ubuntu.iso
来改写文件后缀为 iso,但小生觉得 duck 不必。(上文有提到产生的文件名会是ubuntu.iso.dmg
)
3.3. 卸载指定 U 盘
根据上一步找到 U 盘挂载的路径,然后卸载它。
$ diskutil unmountDisk /dev/disk3
众所周知,Linux 只有一个根目录/
,当你插入 U 盘到设备上时,系统自动执行了挂载操作,把 U 盘挂载到了一个地方,让你能操作它,这个地方就是/dev/disk3
3.4. 写入 U 盘
这一步是大招步骤,用 dd 命令,关键一步,记得使用sudo
来执行 root 命令
同样的,我在镜像文件的目录下执行,镜像文件路径=镜像文件名
$ sudo dd if=ubuntu.img.dmg of=/dev/rdisk2 bs=1m
if
后面跟着镜像文件位置,of
后面跟上你 U 盘的路径,注意是rdisk3
不是disk3
,r 的意思是 raw
if = input file
of = output file
bs = block size
bs 是 Block Size 的缩写,bs 是衡量一次读取、写入和转换字节的单位,bs=1m
即位块大小等于 1 MegaByte(一兆字节)
这个步骤会花费漫长的时间,同时不会有任何的提示,你只需要泡杯咖啡耐心等待。
操作成功后会有一个XXX bytes transferred in XXX secs (XXX bytes/sec)
这样的提示,还会有一个像下图这样的弹窗
点击 ignore 就好。
然后就可以弹出这个 U 盘了:diskutil eject dev/disk3
,但小生还是觉得 duck 不必,直接拔了(逃
4. 进入 LiveCD(USB)
插电,插盘,开机。
一开机就提示我按F2
进入 BIOS,修改启动顺序为装有 Ubuntu 的 U 盘。
不知道为啥触控板无法使用,还不能判断是触控板坏了 or“驱动问题”,我外接了一个鼠标。
其实不用鼠标仅靠键盘的 Tab 和上下左右也能完成大部分鼠标的操作,前提是你要有足够的耐心。
选 Try Ubuntu,然后就可以进入 Ubuntu 的桌面了
先让他连上网,恰好无线网卡正常工作,连接 Wi-Fi 后就可以接下来的的真正的操作了。
4.1. 解决问题的两种方案
在 LiveCD 里面原来系统的文件都可以查看保存,那么本着能不重装就不重装的观点,只需要修复内核可以解决。
第一种是使用带有 GUI 的 Boot Repair,第二种是用 Terminal 慢慢修。我在不知道哪种方法能成功的情况下选择一边下载 Boot Repair 一边查找更专业的解决方式
4.2. Boot Repair
因为某些地方的网络问题,可以选择修改软件源来加速下载。(可选)
实际上我原本不会使用这个解决方案,考虑到 Boot Repair 可能没法顺利解决问题,Terminal 又有点过于麻烦了所以我决定双管齐下。后来因为 Boot-Repair 在一段时间无进度后被我 Force Quit,但在我重度拖延下它死灰复燃弹出继续的页面…
结果真的单车变摩托
Boot-Repair 有一份在 Ubuntu Community 的documentation
我选择使用 Terminal 进行安装
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
上面这个命令执行完后会自动打开 Boot Repair
打开后我查看了一下 Advanced Options,把 GRUB location 改到了sda2(Ubuntu 18.04.4 LTS)
,并且在 GRUB options 中选定了 Purge and reinstall 然后进行了修复操作。
结果在这之后的界面卡了好久,我就右键它把它 Quit 了开始重装内核的操作,由于我的摸鱼症没有完成重装内核的操作,良久之后它突然弹出了这个东西:
看起来是在 purge 之前的引导文件
然后做一个新的引导
最后在这里把原来装有 Ubuntu 的硬盘钩上
reboot 后就出现了熟悉的味道了
当然之后就是正常的启动了 Ubuntu Server,还遇到了些小问题,比如朋友没有告诉我 root 的密码,无法继续后续的操作。
4.3. 不登录修改 root 密码
这个时候就要派上 Single User Mode
在 GRUB 引导出现的时候按下e
进入编辑模式
找到以 linux 开头的一行,在他的最末尾加上single
,注意要和前面的内容空出一格
输入完后按下Ctrl+X
来 boot
然后就会让你输入新的 root 密码,之后就可以开机了
这时就算是修复了开机异常的问题,关于如何重装内核或许会在稍后补上。由于篇幅,关于开机后的其他操作(内网穿透等故事)就留给之后的文章(快逃