首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行系统上从Funtoo迁移到Gentoo

在运行系统上从Funtoo迁移到Gentoo
EN

Unix & Linux用户
提问于 2014-01-13 15:30:30
回答 1查看 1.8K关注 0票数 5

我现在有一个Funtoo系统,但是想要迁移(返回)到Gentoo。如果可能的话,在安装过程中保持一个可用的系统(不要使用活动CD从头开始重建)。这两个系统都应该是~amd64

我发现了一个旧的描述的人谁做了相反的方式。在我看来,这些步骤似乎是:

  1. 用gentoo移植快照替换/usr/portage/
  2. 重新生成portage的ebuild的清单。
  3. 重新出现迁移和做emerge --sync
  4. 重建系统(emerge -e @system)。
  5. 在必要时重建其余部分(emerge -uND @world)

我有错过什么吗?

那些档案呢?init脚本(例如网络接口和配置)中是否可能存在不兼容?我是否应该期望UEFI在引导过程中出现问题(使用grub)?基因内核有什么不同吗?

EN

回答 1

Unix & Linux用户

发布于 2018-06-06 21:48:39

好吧,首先,你有什么可松的?如果它不工作,你仍然可以进行新的安装。

备份

不用说,你需要备份重要的项目。如果您想要回顾一下,甚至可能会对/etc进行存档。

就我个人而言,每当我尝试一些激进的东西时,我都会提前将根文件系统同步到一个单独的磁盘上。每当发生严重问题时,我只需将其同步回来;)。将根分区安装在单独的挂载点上,以防止递归到所有已安装的分区。运行如下:

代码语言:javascript
复制
rsync -av --delete /mnt/root/ /mnt/backup

恢复:

代码语言:javascript
复制
rsync -av --delete /mnt/backup/ /mnt/root

只要确保备份文件系统是linux类型(不是FAT或NTFS),就可以上下正确地传输权限、符号链接和文件所有权。

虽然从来没有亲自做过,但您可以尝试以下选项作为指导方针。上面的一些评论暗示了不同的编译器配置文件,但其中大部分只是gcc和CFLAGSmake.conf中的使用标志,我看不出真正的问题。

选项#1

你可以尝试的,但没有个人经验,是这样做的repo.conf方式。创建一个单独的目录,如/usr/gentoo,并将vanilla移植树放在那里。

文件/etc/portage/repos.conf/gentoo.conf

代码语言:javascript
复制
[DEFAULT]
main-repo = gentoo

[gentoo]
location = /usr/gentoo
sync-type = rsync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
auto-sync = yes
priority 10

对Funtoo来说,也应该有类似的东西,而且优先级较低。运行emerge --sync之后,这两棵树将彼此共存。如果存在相同的版本包,那么具有较高优先级的回购将获胜(理论上)。您可以强制选择包,方法是将所需的repo后缀如下:

代码语言:javascript
复制
emerge sys-devel/gcc::gentoo

使用此设置,您可以一步一步地移动到Gentoo。来自这两个存储库的配置文件都可以供选择,因此您可以在选择Gentoo配置文件时尝试一些emerge --pretend命令,使用system等。出现gcc、从Gentoo树移植等等。如果您只需确保GCC以相同的system(根据您的喜好编辑make.conf )重新出现,并且保持相同的CFLAGS,您可能甚至不需要清空系统树。

也许你想读GCC升级指南/usr/share/portage/config/make.conf.example

最后,您可以删除funtoo的repo.conf条目并执行emerge -uND --newrepo @world

选项2

在过去,当我做一些大的轮廓改变,我使用这个方法。

  1. 确保您的系统是完全最新的(emerge -uND @world),处理@保存-重建集和去清洁。
  2. 将条目从/var/lib/portage/world移动到用户定义的集合中。这可以是一组,或者如果您想要组织的话,集合的类别。例如,我创建了3组,可以在流程的不同阶段使用。

/etc/portage/sets/boot

代码语言:javascript
复制
sys-boot/grub
sys-kernel/gentoo-sources
[network tools etc]

/etc/portage/sets/admin

代码语言:javascript
复制
app-editors/vim
app-portage/gentoolkit
[...]

/etc/portage/sets/desktop

代码语言:javascript
复制
 # All the rest

在迁移之后,确保/var/lib/portage/worldword_sets都是空文件。

  1. 运行emerge --depclean以摆脱所有被@world拉进来的包
  2. 现在,清除/etc/portage/package.use。(把文件(S)移到某处,如果你打算以后再使用它的话)。
  3. 注释掉USE=行中的make.conf
  4. 降到尽可能简单的配置文件。在gentoo中,应该是这样的:default/linux/amd64/17.0
  5. emerge -uND @world && emerge --depclean您将处于尽可能小的配置中,对于Funtoo来说,冲突的风险最小。
  6. 将移植树交换为使用Gentoo的树。(可能在repos.conf中)
  7. 这应该会给你最简单的Gentoo配置文件系统出现-1 sys-app/portage浮现-1 sys-devel/gcc浮现-e @system。
  8. emerge @boot并完成您需要做的事情,以实现内核、grub等(按照手册)--这将为您提供一个完全重新启动的Gentoo系统。如果您想在此时进行测试,请重新启动。
  9. 设置所需的配置文件,在make.conf中重新启用Set标志,并可能在package.use中打包特定的标志。
  10. emerge -uND @world @admin @desktop && emerge --depclean:如果一切顺利,你已经成功地把Funtoo转到了Gentoo!

Incompatibilities

为了回答剩下的问题;在包的重新安装过程中,移植将检查/etc/中的文件是原始文件还是修改文件。如果安装后未对其进行修改,则portage将只替换它们。/etc/init.d中的文件也是如此。这些文件最终都属于一个包。包重建应该最终给出正确的版本。

修改后的配置文件由配置保护保护。这些需要使用像etc-update这样的工具进行更新。

Note

我知道这是个老问题,可能已经帮不上行动了。不过,我对这个话题很感兴趣。如果有人能找到这个答案,给它一个实际的尝试,那就太好了:)。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/109162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档