大家日常用的/推荐的系统的安装流程大概是什么样的呢?(

这个话题来自于这个帖子的主意.
说"系统"而非Linux是因为也想欢迎一下Windows/MacOS的美化/优化帖子(


Windows

senioria自己的windows设置主要有这么几个:

  • 隐藏任务栏, 这样屏幕上供显示内容的空间就更大了, 不过麻烦的是鼠标指向任务栏的位置时他会蹦出来, 比较讨厌.
  • 任务栏放在屏幕左边, 这是模仿gnome的(
  • 用搜索栏作为程序启动器, 这是模仿dmenu的, 而且windows的搜索栏比dmenu要方便: 按windows键然后键入内容即可进入, 而且支持比较模糊的搜索. 不足之处在于很多补全是缺少的.

Arch Linux

强烈不建议没有linux基础的人使用Arch Linux本体, 要体验包管理器之类的请去manjaro.

安装流程其实没有比官方的Installation Guide更好的教程了, wiki边栏可以选择中文翻译, 不过除了一些大页面之外, 中文翻译常常是滞后/残缺的.

senioria在linux下的工作流主要是awesomewm+vim+xterm+firefox, senioria前三者的配置都放在了GitHub上. 并没有做美化(毕竟awesome要做什么效果可都是要自己一行行代码实打实地写的x), 所以… 卖点主要在于高效(), 虽然具体如何高效… 如人饮水甘苦自知(被打死(((

对于其它wm/de senioria没有太多的想法(因为其实没怎么用过), 不过不论是要高效还是要美观都是要付出很大精力来定制的, 相比成熟的win/macos会麻烦非常多而且到了最后会发现还是写代码来做这些最方便


惨了说这么多似乎主要在劝退而非推广

8 Likes

@锦心 锦心酱的主场哦这里是(被打死((((逃((((((

3 Likes

Arch Linux+openbox
Windows 10 To Go+移动SSD
Deepin Linux卡死崩溃套餐
一个特别卡的装在HDD上的Windows 7

2 Likes

有普及命令行原理、作用、日常使用技巧的大老么

1 Like

太巧了锦心刚刚写完一篇类似 (完全跑题) 的文章
zhihu: https://zhuanlan.zhihu.com/p/171691571
blog: https://lhcfl.github.io/2020/08/07/VHDwin8install/#more

2 Likes
那就顺便贴在这吧

看文章前啥都别说,先一起大喊:巨硬,巨硬,真**的硬

本文同步发在我的知乎上

锦心的电脑上已经安装了Windows 10 [1st], Ubnntu[2nd], Phoenix OS[3rd], 突发奇想决定安装一个VHD Windows8.1,本文纯属记录如何用VHD安装Windows以及拿Grub引导两个Windows系统的过程以及巨硬留下的天坑

教程同样适用于只有单系统的情况。

数据无价,谨慎操作

材料准备

(标*的是必须准备的)

  • [*] Windows 8或更高版本(得有挂载VHD和ISO的功能)

  • [*] Windows 8.1 ISO文件 (或光盘)

  • Linux系统如Ubuntu

  • GParted(Linux软件)

VHD 安装 Windows 8.1

创建VHD

打开Powershell(管理员),键入diskpart命令进入diskpart:


PS C:\WINDOWS\system32> diskpart

使用cre命令创建一个vhd文件,名称自选

其中,maximum是vhd的大小(单位:MB)。创建后VHD为固定大小,因此用时较久


DISKPART> cre vdi file="D:\vhds\win8.vhd" maximum=51200

100 百分比已完成

DiskPart 已成功创建虚拟磁盘文件。

连接虚拟磁盘文件,格式化,并分配驱动器号。


DISKPART> attach

Microsoft DiskPart 版本 10.0.18362.1

VDISK - 连接虚拟磁盘文件。

DISKPART> attach vdi

100 百分比已完成

DiskPart 已成功连接虚拟磁盘文件。

DISKPART> cre par pri

DiskPart 成功地创建了指定分区。

DISKPART> for quick fs=ntfs

100 百分比已完成

DiskPart 成功格式化该卷。

DISKPART> ass

DiskPart 成功地分配了驱动器号或装载点。

DISKPART> exit

退出 DiskPart...

安装Windows 8.1

首先把你的Windows安装ISO挂载。如果你是Win8以上直接双击即可。

这里ISO被挂载在了E盘。


PS C:\WINDOWS\system32>E:

PS E:\> cd sources

使用dism获取install.wim的信息


PS E:\sources> dism /get-wiminfo /wimfile:install.wim

部署映像服务和管理工具

版本: 10.0.18362.900

映像的详细信息: install.wim

索引: 1

名称: Windows 8.1 专业版

描述: Windows 8.1 专业版

大小: 12,855,928,858 个字节

操作成功完成。

安装Windows 8.1

其中applydir是你的VHD挂载的盘符(这里是F), index是你要安装的系统所处于install.wim的索引。


PS E:\sources> dism /apply-image /imagefile:install.wim /index:1 /applydir:F:

部署映像服务和管理工具

版本: 10.0.18362.900

正在应用映像

[==========================100.0%==========================]

操作成功完成。

等待,完成后,键入:


PS E:\sources> bcdboot f:\windows -l zh-cn

已成功创建启动文件

到此,Windows下的双系统安装宣告完毕,可以重启进入Windows8进行安装了。

注意bcdboot会默认把Windows 8.1作为默认系统,完成安装步骤时还好,要是对此不满了,请win+R运行msconfig把默认OS变为Windows 10

如果看到这里的你没有安装Linux系统,可以直接关闭网页走入了。

Linux修复引导

嗯,在此之前的微软还是那个体贴的微软,安装非常方便,然而要是你安装了Linux,巨硬的硬才刚刚开始

重启,熟悉的Windows启动画面出现……Grub引导又没了。

恢复Grub引导

巨硬:用了我家的Windows你就是我家的人了,必须得用Windows Boot Manager启动,Grub滚远点!

进入BIOS,改启动顺序,把Windows Boot Manager调到后面,把ubuntu的Grub改回前面。重启,出现Grub引导界面,OK。

要是没有……请自行百度“ubuntu引导修复

优化Windows Boot Manager

现在出现了一个问题:你用上了Grub,Grub里只有一个Windows Boot Manager, 巨硬又非常贴心地在Windows Boot Manager里自动启动默认系统,启动第二系统需要重启:于是你想启动被放置在非默认系统位置的Windows 8.1需要:

开机 → Grub选Windows Boot Manager → 启动默认系统后选择启动Windows 8.1 → 重启- > Grub再选Windows Boot Manager

我就想开个机您整出3遍选择菜单也太过分了吧?

分离bootmgfw

(以下步骤请确保已经安装完成Windows 8.1)

进入Ubuntu

开启GParted,随意分一个大小260MiB(和你原有的EFI分区一样大就好),格式化为fat32,右键点击管理标识为boot

这里锦心原有的EFI分区为/dev/sda1,新的分区为/dev/sda7,lhcfl是锦心的linux用户名,请自行替换

挂载EFI分区和你的新分区EFI2:


lhcfl@lhcfl-Ubuntu-PC:~$ sudo mkdir /media/lhcfl/EFI

lhcfl@lhcfl-Ubuntu-PC:~$ sudo mkdir /media/lhcfl/EFI2

lhcfl@lhcfl-Ubuntu-PC:~$ sudo mount /dev/sda1 /media/lhcfl/EFI

lhcfl@lhcfl-Ubuntu-PC:~$ sudo mount /dev/sda7 /media/lhcfl/EFI2

把EFI分区里的EFI/Microsoft/Boot文件夹保留原格式整个复制到EFI2里。


lhcfl@lhcfl-Ubuntu-PC:~$ sudo mkdir /media/lhcfl/EFI2/EFI

lhcfl@lhcfl-Ubuntu-PC:~$ sudo mkdir /media/lhcfl/EFI2/EFI/Microsoft

lhcfl@lhcfl-Ubuntu-PC:~$ sudo cp -r /media/lhcfl/EFI/EFI/Microsoft/Boot /media/lhcfl/EFI2/EFI/Microsoft/Boot

现在你拥有了两份Windows Boot Manager

更改grub

首先,umonut掉两个EFI分区


lhcfl@lhcfl-Ubuntu-PC:~$ sudo umount /dev/sda1

lhcfl@lhcfl-Ubuntu-PC:~$ sudo umount /dev/sda7

然后,更新grub


lhcfl@lhcfl-Ubuntu-PC:~$ sudo update-grub

不出所料的话,你将拥有两个Windows Boot Manager:


Windows Boot Manager (on /dev/sda1)

Windows Boot Manager (on /dev/sda7)

在/boot/grub/grub.cfg里,找到形如这样的内容:


menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-48AC-0E64' {

insmod part_gpt

insmod fat

set root='hd0,gpt1'

if [ x$feature_platform_search_hint = xy ]; then

search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 48AC-0E64

else

search --no-floppy --fs-uuid --set=root 48AC-0E64

fi

chainloader /EFI/Microsoft/Boot/bootmgfw.efi

}

使用sudo身份强制编辑,把两个Windows Boot Manager换成你想要的名字,如


Windows 10

Windows 8.1 (VHD)

重启,进入Grub界面,进入你的主Windows系统

win+R运行msconfig,在OS中删掉另一个系统。关机。

巨硬这时候就体现了她·无·微·不·至·的关怀,如果你直接重启,恭喜你grub又没了……

进BIOS把被巨硬放上第一的Windows Boot Manager调到下面。重启。进入另一个系统。

对于下面所有的操作,进入的时候记得时刻关注可能弹出的"即将进行磁盘扫描,x秒内按任意键取消",并以你最快的速度按任意键取消掉。

你可能因为巨硬的关·怀而多次进入错误的系统,请关机然后进BIOS把不听话的Windows Boot Manager调下去。总之,进入Windows 10就把Windows 8.1的启动项删掉,进入Windows 8.1就把Windows 10的启动项删掉。如果误删了,用bcdboot把引导重建。然后……总是可以调好的……

后继

秀一波我的桌面

Windows 8.1

Windows 7

Ubuntu 20.04

Phoenix OS

Windows XP

装巨硬的系统总是让我有种不知道是在装巨硬的系统还是被巨硬的系统装的感觉……

本文作者锦心,转载请注明出处。

知乎怎么编辑文章啊qaq我发现我手快打了好多个Windwos

3 Likes

买个自装win10的thinkpad定期捣鼓+更新
买个自装miui的小米定期捣鼓+更新

over(

3 Likes

Arch很好用,不过还是windows适合我这种不想折腾的人

2 Likes

系统美化篇水篇:
Ubuntu:原始系统换个壁纸emmm
Windows:原始系统换个壁纸emmmmm加个任务栏透明?
Phoenix OS:原始系统换个壁纸emmmmm(这货没软件,美化不了)
没办法,锦心没有自己的电脑和手机,windows得给家长用不能太美化而且硬件带不动
Ubuntu?天啊ubuntu真是完美戳中锦心的审美然后就不想换了(

5 Likes

倒是小时候给Windows XP搞过真·美化
win7主题+win7开始按钮软件+aero窗口软件+win7开始菜单美化+win7登录动画
反正最后那叫一个以假乱真,然后我发现太卡了就干脆装了win7

2 Likes

很久以前曾经一台电脑上共存了WinXP WinVista Win7 Win8 Win8.1… 后来发现基本上只用一两个系统就格掉了…

1 Like

PS: Vista是真的好看

1 Like

为什么锦心的Github博客这么快(
我的要加载五秒以上。

1 Like

Vista真的好看,可惜太前卫了太吃资源。
就前卫水平,和win8简直是同一个悲剧
但是win8真没有vista好看,7也一样
我也喜欢装很多个系统但是我会有时候就进别的了(

2 Likes

你之前看看过一次吧。
我有的时候也要加载10s+……
PS:已经反客为主了 @Senioria (被打死

2 Likes

命令行 x
shell v

其实shell的教程有很多, 随便找一篇跟着学就好(
senioria打算在这里给一下"构造"shell的思路.


senioria之前跟tirpitz姐姐讲shell的时候是这么讲的(基于senioria的知识, 可能有很多偏差><:

为什么要有shell

一开始的计算机是直接跑程序的, 每个程序都要处理硬盘/内存/IO之类的东西. 在计算机还只是用来做翻译公式这样的活的时候, 这种简单的架构就已经够了; 但是随着程序复杂度的增加, 更多的需求也随之出现: 不同的程序之间需要交互, 需要一个对硬盘的抽象来统合各个程序, 需要有一个组合各个程序, 让它们共同协作的接口…

于是, 操作系统应运而生了, 给程序提供了对硬件和对用户的操作的一层抽象. shell就是操作系统面向用户的, 用于交互的"壳".

shell为什么是这样

让我们跳过计算机蛮荒阶段时的打孔纸带/穿线时期: 那个时候shell也还是不存在的. shell出生的年代, 最流行的交互硬件叫电传打字机(teletypewriter, tty), 它能够把用户键入的内容传输给它连接着的计算机, 也能够把计算机的输出和用户的输入一起打印到相连的纸带上(是打字而非打孔x). 因此一切操作都必须通过类似"说话"/写句子的方式来进行(否则打印出来的内容就会是很麻烦的一团乱麻了)(当然另一个重要的原因是当时计算机的典型用户就是geek).

为什么水了这么多字才进入正题 警告: 下文所介绍的并不是shell历史上的真正发展流程, 只是为了方便理解而生造的一个构造顺序

因为已经有了文件系统的抽象, 一件很自然的事情是通过直接键入程序的可执行文件的文件名来运行这个程序, 然后通过键盘来给它提供输入的数据, 让它把输出的数据直接打印到tty上; 或者让它从特定的文件读取数据, 把输出的数据写到特定的文件中. 这样, 我们现在的shell的语法是这样的: command, 例如, ls.

然后, 我们发现, 只有这么简单的输入/输出手段的shell满足不了很多要求, 比如, 很难把数据写到(不是程序的默认文件的)文件中. 让我们来视奸一下我们的shell语法: 为了输入输出排版上的美观, 我们已经规定了一个换行符表示运行这个程序, 这样, 一行内的空间就有了剩余. 因为空格在西文中被普遍用于分词, 同时, 因为空间的限制, 文件名都是由缩写组成的, 也不会有空格, 所以, 我们决定, 命令后用空白字符分开的部分(遵循了c-family的习惯: 空白字符被忽略, 只作为分隔符)是它的参数, 为了通用性, 被作为一整个字符串传递给程序的main函数. 在这里, *NIX shell/dos shell和win32程序产生了分歧: win32程序一般都是直接不带参数启动的(然后用gui来交互), 最多带一个要打开的文件的参数(通过注册为某种类型的文件的关联程序), 所以WinMain函数的命令行是不加分割/处理, 只去掉了可执行文件文件名的一整行, 为了方便程序直接通过这一参数打开文件(设计目标是否真实为此存疑); 而*NIX shell/dos shell的参数是一个重要的和用户交互的手段, 因此会再按照空白把参数分割一遍. 现在, 我们的shell语法是这样的: command (space+ arg)*, 例如, diff /etc/profile ~/.profile就会把/etc/profile~/.profile作为两个参数传递给diff程序.

到了这里, 我们面前有两大问题: 如何指定文件名? 以及, 参数中间有空格怎么办? 后一个问题我们暂且按下不表, 前一个问题似乎有一个很简单的解决方案: 直接用它在文件系统中的完整路径. 但是, 不要说UNIX的创造者那些连create都要缩写成creat的人, 就算对于现代人来说, 指定一个完整路径也是繁杂得不可忍受的. 因此, shell中有了一个"当前目录"的概念, 这样, 我们就有了"相对路径"的概念, 一个文件的位置除了可以用它在文件系统中的绝对位置来指定(“绝对路径”)之外, 还可以用它相对当前目录的位置来指定. 这样, 我们就可以写cat test.txt, 而不是cat /home/test/test.txt了.

然后, 我们来思考一下第二个问题: 要传递给程序的参数中间有空格怎么办? 我们不妨想一下C是怎么解决类似的问题的: 字符串总要有一种标记来标记它的结束(标记字符串长度是FORTRAN时代的做法), 那么字符串里需要有这个结束字符怎么办? C的解决方案是, 用一个"转义序列"来表示这个字符. 类似的, shell的解决方案也是用\ (反斜杠后加一个空格)来表示空格这个字符(\\表示反斜杠), 这样, 我们就可以给程序传递带有空格的参数了.

其实到了这里, 我们已经拥有一个最小的可用的shell了.这个shell的实现留作作业x.

但是, 哪怕是一开始的UNIX shell, 也比这个shell有着多得多的功能. 对于剩下这些功能的介绍… 咕咕咕咕咕咕咕咕!(被打死((((((

7 Likes

这个shell挺难实现的
因为我试过然后差点磨死在里面最后还是咕咕咕咕了(

2 Likes

安装win10默认中文输入法添加EN-US输入方式 换壁纸/颜色 文本文档/shell字体更换 根据电脑性能改一下动画效果 换一个鼠标-Metro X3 by exsess

2 Likes

Ubuntu的确好看,反而是被吹上天的其他各路衍生如elementary我觉得一点都不好看…

3 Likes

win10 ltsc2019,准备跟ltsc2022,然后被微软干烂(微软非常讨厌个人用户ltsc)
然后为了计算需求,虚拟机装了lubuntu,比正常ubuntu占用要低很多。

6 Likes