如何在2023年将fydeOS/ChromeOS自带linux子系统更改为arch?_fyde os root-程序员宅基地

技术标签: 运维  linux  

之前的教程有些已经跟不上时代了,摸索了两天,今天居然跑通了...
整理下教程和遇到的问题总结吧

文章首发于如何在2023年将fydeOS/ChromeOS自带linux子系统更改为arch? - 92的博客

前言

之前已经有人写过类似教程了。但是,随着chromeos的版本更新,过去的操作变得不再适用。目前,我们失去了一个很好的安装arch的方法。
fydeOS/ChromeOS官方提供的都是Debian,arch粉丝觉得这是某种垄断!
arch的社区安装确实是个人很喜欢的部分...从前debian系转arch系的时候觉得pacman很逆天,现在觉得ubuntu不人性...
不过说到底,初衷其实不过是在fydeOS上跑我个人认为的满血WPS...All in one真的是一个超级天才的想法

截止发稿日期,对于某些问题的解决可能算是全世界首发?也可能是我信息搜索能力有所欠缺。但这个领域也确实比较小众。

安装过程

0

我的fydeOS一休眠就会导致我打不开电脑,重启完就进不去lxc了
我当时挂着yay下载出去刷了个碗的功夫就寄了...甚至还连着电源
所以大家可以先确认自己的电脑不会自动休眠

在fydeOS上的操作还有开启linux,并且分配适当空间。

1.启动termina

按照我的理解,fydeOS/ChromeOS使用的是Crostini结构。其中,linux虚拟机、安卓与ChromeOS分属三个不同且独立的模块。对于linux,我们需要通过termina进行控制。而在crosh中打开termina就是我们需要克服的第一个难关。
关于Crostini结构的详细介绍,您可以参考在FydeOS上安装ArchLinux官方文档获得更多信息

首先,我们可以按Ctrl+Alt+T打开crosh终端。但是,在过去的教程中,如果您运行了

vmc start termina

那么您大概率会遇到vm_start问题,获得一个报错。我认为,这是ChromeOS的更新问题导致某些命令不再适用,尽管也并不能排除fydeOS官方做了什么改动。这也体现在我们无法按照archwiki上的操作直接通过vmc container添加容器。
针对前一问题,我发现可以通过运行

vmc launch termina

这时,您应该可以在终端中看到:
(termina) chronos@localhost ~ $
即termina启动成功

2.安装Arch容器

我们前面提到过,vmc container无法添加容器。这时,我们可以在termina中进行容器添加。
这里采用了12101111佬的方法,不过目前我们已经不用修改run_container.sh文件了,这位我们的安装工作省下了不小力气
不过,请您注意,您需要将“你的用户名”替换为在fydeOS系统中使用的用户名,两者必须保持一致

bash /usr/bin/run_container.sh --container_name arch --user 你的用户名 --lxd_image archlinux/current --lxd_remote https://mirrors.tuna.tsinghua.edu.cn/lxc-images/

这里,我们推荐将这一命令重复执行两遍,以应对处理先后问题产生的bug
第二次仍然会有几行报错,提示我们将用户加入wheel。这是正常现象,我们将在后面进行这一过程

3.进入arch的shell

lxc exec arch -- bash

这里的shell其实并不是用户身份登陆的,而是一个root管理

#设置密码.千万不要给root设置密码,否则ChromiumOS集成服务将无法运行,并且,这里的密码应与fydeOS保持一致
passwd 你的用户名
#把用户加入wheel组
usermod -aG wheel 你的用户名

如果添加密码时提示用户不存在,那么您需要重新执行

bash /usr/bin/run_container.sh --container_name arch --user 你的用户名 --lxd_image archlinux/current --lxd_remote https://mirrors.tuna.tsinghua.edu.cn/lxc-images/

4.基础设置与依赖安装

首先,因为众所周知的原因,在国内用arch需要设置国内源...

# 清华大学
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
## 163
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
## aliyun
Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch

起初我们只能用vi...个人觉得vi挺反人类的。

vi /etc/pacman.d/mirrorlist

复制上面的部分后,可以按i键选择插入,Crtl+Shift+V选择粘贴,以上部分应在官方源之前。
之后,您可以按esc键退出插入模式,再按:键输入wq保存退出

完成上面的设置后就可以pacman -Sy vim了(
之后,设置archlinuxcn源

vim /etc/pacman.conf

在最后面插入

[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

安装一些依赖

pacman -Syu archlinuxcn-keyring base-devel git gtk3 openssh xdg-utils xkeyboard-config

因为我们期望能够在fydeOS的终端应用中启动arch。因此,我们需要开启无密码sudo

visudo

删除以下行前的注释,即删除#这一字符

%wheel   ALL=(ALL:ALL) NOPASSWD: ALL

之后,我们需要退出到termina

exit

5.登陆到容器

目前,我们应该已经退回到了termina中

lxc console arch

这时arch并不会提示输入用户名,但是需要直接输入...并且输入密码不可见

然后我们可以先验证一下网络

ip -4 a show dev eth0

输出不为空则证明网络正常。否则,请执行

sudo dhcpcd eth0
sudo pacman -S dhclient
sudo systemctl disable systemd-networkd
sudo systemctl disable systemd-resolved
sudo unlink /etc/resolv.conf
sudo touch /etc/resolv.conf
sudo systemctl enable dhclient@eth0
sudo systemctl start dhclient@eth0

“登录成功后安装aur上的cros-container-guest-tools-git。由于需要从chromium.googlesource.com下载文件,因此请自行解决网络问题。注意,Android或者Chromium OS里的代理设置不会应用到虚拟机。”
这里,我们可以使用手机开启代理,并通过v*n hostpot热点分享代理网络进行下载
btw,数字佬是用了git clone的方法下载...但既然都arch了,那不妨直接yay

pacman -Sy yay
yay -Sy cros-container-guest-tools-git

wayland包和xorg-xwayland也要装一下,否则没有gui

pacman -S wayland
pacman -S xorg-xwayland

安装中的提示全部默认即可

开启对应服务

sudo systemctl enable cros-sftp
systemctl --user enable [email protected]
systemctl --user enable [email protected]
systemctl --user enable [email protected]
systemctl --user enable [email protected]
systemctl --user enable cros-garcon.service
systemctl --user start sommelier@0
systemctl --user start sommelier-x@0
systemctl --user start sommelier@1
systemctl --user start sommelier-x@1

6.替换默认容器

首先按下Ctrl+A,然后按下Q退出到termina。
为了更好的本地化运行,我们需要将arch改名为penguin

lxc stop --force arch
lxc stop --force penguin
lxc rename penguin debian
lxc rename arch penguin
lxc start penguin

然后,我们需要重新启动子系统进行更改

lxc console penguin
reboot

之后,再进入penguin

lxc console penguin
systemctl --failed
systemctl --user --failed

已检查是否系统服务均正常运行

也可以再检查一下网络

ip -4 a show dev eth0

如果返回为空,请执行

sudo dhcpcd eth0
sudo pacman -S dhclient
sudo systemctl disable systemd-networkd
sudo systemctl disable systemd-resolved
sudo unlink /etc/resolv.conf
sudo touch /etc/resolv.conf
sudo systemctl enable dhclient@eth0
sudo systemctl start dhclient@eth0

最后,如果一切正常,重启下fydeOS的系统再进终端就可以直接用arch了!

后记

Archwiki会推荐一上来先干掉自带的debian,不过这样的话就会无法通过lxc安装容器...
同时,他也提到lxc删除的容器并不彻底。而关于这个,我还没有什么太好的办法

有时会出现其他奇奇怪怪的问题...我的解决方法是remake子系统,关闭再重开那种...
有些操作可能也并非那么必要?比如用户名或者密码?不过我也没试过...懒得再折腾了

另外,之前的架构可能也并不绝对?或者说,至少在网络层面上,安卓v2rayng的代理可以作用于满血的google chrome...
这还挺反直觉的

最后,我不知道你会不会记得我最开始的初衷是在fydeOS上跑满血WPS,就是能用wps云的国内版本
但是,我在尝试将这个版本部署到fydeOS上时遇到了一些问题...在这个系统上遇到谁也没见过的问题再正常不过了,继续对自己的操作debug更是一种痛苦
不过,yay安装的方式相较sudo本质上或许更加温和,似乎可以规避wps的登录黑洞
因此,我真的安装了一个满血的arch,不是manjaro...但是,wps确实跑通了,赞美arch,赞美金山
除此之外,fydeOS的启动选择界面支持读取了我安装的所有系统,并且有很漂亮的图标,包括后面安装的arch...
这一点狠狠的赞美

但是:
我一开始只是想用一个简洁省电的系统来着...之前不知道在哪看到有人现身说法arch比win省电,装了“臃肿的”manjaro一个多小时电池就寄了,但win能跑一天,不知道arch会怎么样
所以fydeOS可能没用了?或许吧(
本质上我还是非常喜欢这个系统的来着...但是,当arch子系统的安装失去必要性(没法装wps满血),那么我或许会用回省心省事的debian?
不过这样一来主流linux发行版似乎都尝试过了...
目前在日常使用方面,个人感觉还是arch+gnome的观感更好
不过,或许用于服务器的系统不会这样?arch感觉更受发烧友的喜爱,但还是难以撼动老大哥们的江湖地位(
以后,如果win寄了,我大概还是会更倾向于arch而不是fydeOS。毕竟fydeOS相较完整成熟的系统还有很长的路要走,希望“国产系统”不会成为一个营销或者骗经费的幌子
不过如果那一天真的来了,或许我这种电脑水平仅限于装系统的乐色就业就解决了?

参考资料

在FydeOS上安装ArchLinux
Chrome OS devices/Crostini-wiki.archlinuxcn
arch添加国内源以及社区源

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Dr39276/article/details/134679403

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签