折腾systemd-nspawn运行centos7
Archlinux创建Debian/Ubuntu的systemd-nspawn容器是很简单的,因为有debootstrap软件。某天我突然想装个centos7玩玩,搜了半天没发现有什么类似于debootstrap的软件。然而,我找到了基于centos的chroot的创建教程,感觉可以试一试。
Chroot创建过程
新建一个chroot的目录,例如:
mkdir -p /path/to/chroot
初始化rpm数据库:
mkdir -p /path/to/chroot/var/lib/rpm
rpm --rebuilddb --root=/path/to/chroot
下载CentOS的发行包,使用rpm命令安装:
wget http://mirror.centos.org/centos/<版本号>/os/x86_64/Packages/centos-release-<对应版本>.rpm
rpm -i --root=/path/to/chroot --nodeps centos-release-<对应版本>.rpm
使用YUM工具安装CentOS发行版的其余包:
yum --installroot=/path/to/chroot install -y rpm-build yum
最后,整个过程结束以后,chroot环境便搭建完成。
动手实践
Archlinux上安装yum工具有点困难,AUR上的yum安装总是出错。偶然间发现debian系统源里自带yum包,便想了个曲线救国的办法:
使用debootstrap创建debian系统容器
直接pacman -S debootstrap,然后debootstrap --arch=amd64 <debian版本代号> 目标目录 <软件源地址>,我用的是清华的源。将centos的目录通过
--bind挂载到debian容器中。
通过命令systemd-nspawn -bD debian9/ --bind=/absolute/path/centos,挂载centos的目录。在debian容器中安装yum:
通过apt安装yum,别忘了在/etc/yum.repos.d中配置yum源。我使用的是还是清华的源。注意把关于gpg的选项注释掉。按照上面的步骤安装centos的chroot环境
注意使用root权限。
安装时会不时报以下错误:
Failed to get D-Bus connection: Operation not permitted
不知道什么问题。百度了一下好像docker安装centos7也会出现。因为没有研究过docker,暂时忽略该错误。
之后
大功告成了吗?实际上并没有那么简单。使用systemd-nspawn -D进去,空空如也,连$PS1都没有,好多基本命令也没装,比如passwd。密码都没法改,那还怎么玩?继续搞吧!
- 更改yum源(刚才是debian中的源,现在修改的容器中的)
- 安装passwd和vim以及常用的软件,修改root密码,把
/etc/skel/中的东西复制到root目录下。 systemd-nspawn -bD centos7
终于启动了!然而你尝试登录就会发现,不管怎么尝试,root密码都提示是错的!真头疼。。Ctrl+]三下退出,然后去掉-b选项再次进入centos7,执行journalctl会发现类似于这种的错误:
...
pam_securetty(login:auth): access denied: tty 'pts/0' is not secure !
...
系统把root用户给deny掉了,原因是使用的终端不安全!解决的方法就是在/etc/securetty中添加一行pts/0。再次尝试启动,这次终于可以进到系统里面了。。然而启动时会遇到这个错误:
...
[FAILED] Failed to start Login Service.
See 'systemctl status systemd-logind.service' for details.
...
查看journalctl里面还有dbus的问题:
...
Failed to connect to system bus: No such file or directory
Failed to initialize D-Bus connection: No such file or directory
...
搜了半天,找到原因是/var/run没有链接到/run目录,链接目录以后,login service 和 dbus 的错误也都消失了。
另外,启动容器时开头会出现display-manager.service的错误,这是因为没有安装桌面环境的问题,只要将默认启动级别更换systemctl set-default multi-user.target即可解决。还有一个错误是:Failed to install release agent, ignoring: No such file or directory,Google了一下好像跟systemd版本有关系,不影响系统运行。Centos真麻烦,感觉Debian系统还是省事,一个debootstrap就搞定了。以后有时间继续探索。
折腾systemd-nspawn运行centos7的更多相关文章
- Demo+在Linux下运行(CentOS7+dotnetcore sdk)
来份ASP.NET Core尝尝 0x01.前言 学习ASP.NET Core也有一段时间了,虽说很多内容知识点还是处于一知半解的状态,但是基本的,还是 略懂一二.如果有错误,还望见谅. 本文还是和之 ...
- systemd的运行级别与服务管理命令简介
从很久很久以前我们就在使用静态运行级别.而systemd提供了更为动态灵活的机制,来管控你的系统. 在开始介绍systemd命令前,让我们先简单的回顾一下历史.在Linux世界里,有一个很奇怪的现象, ...
- linux 服务开机自启动systemd方式 (Centos7)
linux 服务开机自启动systemd方式 (Centos7) 1.编写一个 /opt/hello.sh 脚本 [root@jws-ftp prometheus]# cat /opt/hello.s ...
- .NET Worker Service 部署到 Linux 作为 Systemd Service 运行
上一篇文章我们了解了如何将.NET Worker Service 作为 Windows 服务运行,今天我接着介绍一下如何将 Worker Service 部署到 Linux 上,并作为 Systemd ...
- 折腾一天安装Centos7,以及后面恢复Win7引导的曲折历程
一.下载centos 7 livecd iso 访问镜像网站,http://mirrors.aliyun.com/centos/7.0.1406/isos/x86_64/ 或者直接下载:http:// ...
- python 安装成linux中的systemd守护运行
参考文档1:https://blog.csdn.net/luckytanggu/article/details/53467687 参考文档2:https://www.jianshu.com/p/e14 ...
- centos7 管理开机启动:systemd
一.CentOS7 systemd 介绍 在 CentOS7 中,使用 systemd 来管理其他服务是否开机启动,systemctl 是 systemd 服务的命令行工具 [root@mysql ~ ...
- centos7 systemd 必知必会
systemd 简介: systemd 是一个 Linux 系统基础组件的集合, 提供了一个系统和服务管理器, 运行为 PID 1 并负责启动其它程序 功能包括: 1.支持并行化任务 2.同时采用 s ...
- 操作系统—Systemd
操作系统-Systemd 时间 2016-09-24 22:34:49 运维部落 原文 http://www.178linux.com/48990 主题 systemd Systemd 概述: C ...
随机推荐
- js中针对dom的crud
1.怎样添加.移除.移动.复制.创建和查找节点? 1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 cr ...
- jmeter之聚合报告(Aggregate Report)
jmeter最常用的listener--聚合报告Aggregate Report,每一个字段的具体含义是什么? Label:每个请求的名称.每个 JMeter 的 element(例如 HTTP Re ...
- 『GoLang』包
可见性规则 在Go语言中,标识符必须以一个大写字母开头,这样才可以被外部包的代码所使用,这被称为导出.标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的.但是包名不管 ...
- AT2368-[AGC013B]Hamiltonish Path【构造】
正题 题目链接:https://www.luogu.com.cn/problem/AT2368 题目大意 给出 \(n\) 个点 \(m\) 条边的一张无向图,然后求一条路径满足 路径长度不小于二. ...
- P3649-[APIO2014]回文串【PAM】
正题 题目链接:https://www.luogu.com.cn/problem/P3649 题目大意 一个字符串,求最大的回文串长度×出现次数 解题思路 构建出\(\text{PAM}\)然后统计一 ...
- WPF进阶技巧和实战03-控件(5-列表、树、网格03)
数据视图 数据视图是在后台工作的,用于协调绑定数据的集合.使用数据视图可以添加导航逻辑.实现数据过滤.排序.分组. 当将集合或者DataTable绑定到ItemsControl控件时,会不加通告地在后 ...
- JVM类加载器的分类
类加载器的分类 JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader). 从概念上来讲,自定 ...
- DDD领域驱动设计落地实践(十分钟看完,半小时落地)
一.引子 不知今年吹了什么风,忽然DDD领域驱动设计进入大家视野.该思想源于2003年 Eric Evans编写的"Domain-Driven Design领域驱动设计"简称DDD ...
- Go语言核心36讲(Go语言进阶技术三)--学习笔记
09 | 字典的操作和约束 至今为止,我们讲过的集合类的高级数据类型都属于针对单一元素的容器. 它们或用连续存储,或用互存指针的方式收纳元素,这里的每个元素都代表了一个从属某一类型的独立值. 我们今天 ...
- leetcode779 第k个语法符号。
直接找规律. 第一行 0 第二行 01 第三行 0110 第四行 01101001 可以发现,第n行的数量比第n-1行多了一倍,并且前半部分是和第n-1行一样的,后半部分是前半部分"按位取反 ...