首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Debian 8.10卸载Ubuntu (18.04)有点麻烦

通过Debian 8.10卸载Ubuntu (18.04)有点麻烦
EN

Unix & Linux用户
提问于 2018-05-02 22:45:22
回答 1查看 6.7K关注 0票数 7

我使用的hoster提供了一个Debian 8.10 (内核4.9.85)作为救援系统。在过去,我一直用它来引导使用debootstrap 从这里开始的Ubuntu。

我在安装apt-cacher-ng时使用了几个准备步骤,这是我使用的URL (http://localhost:3142/us.archive.ubuntu.com/ubuntu/)和ubuntu-archive-keyringlocalhost:3142的原因。

debootstrap调用如下:

代码语言:javascript
复制
LANG=C debootstrap --keep-debootstrap-dir --verbose --include=ubuntu-server,bash-completion,sudo,lshw,tmux,unzip,pciutils,usbutils,openssh-server,unattended-upgrades,linux-image-generic,cron --variant=minbase --arch=$(dpkg --print-architecture) bionic /target http://localhost:3142/us.archive.ubuntu.com/ubuntu/

(我加入--verbose只是为了看看是否出了什么问题,但没有结果。)

现在,debootstrap运行的奇怪之处在于,在这个新版本中,我只看到了检索、验证和提取(对于包的一个子集)的步骤,但是没有看到设置这些包的任何步骤。

所以我想“好吧,我用xenial做了这个,让我们再试一次”,它给了我同样的例行公事。

代码语言:javascript
复制
+ debootstrap --keep-debootstrap-dir --verbose --include=ubuntu-server,bash-completion,sudo,lshw,tmux,unzip,pciutils,usbutils,openssh-server,unattended-upgrades,linux-image-generic,cron --variant=minbase --arch=
amd64 xenial /target http://localhost:3142/us.archive.ubuntu.com/ubuntu/
I: Retrieving InRelease
I: Checking Release signature
I: Valid Release signature (key id 790BC7277767219C42C86F933B4FE6ACC0B21F32)
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional base dependencies: acpid apport apt-utils at bcache-tools btrfs-tools busybox-initramfs byobu ca-certificates cloud-guest-utils cloud-initramfs-copymods cloud-initramfs-dyn-netconf cpio crda
cryptsetup cryptsetup-bin curl dh-python distro-info-data dmeventd dmsetup ethtool fonts-ubuntu-font-family-console gawk gcc-5-base gettext-base gir1.2-glib-2.0 git git-man gnupg gpgv grub-legacy-ec2 ifenslave i
fupdown initramfs-tools initramfs-tools-bin initramfs-tools-core iproute2 iso-codes iw klibc-utils kmod libapt-inst2.0 libapt-pkg5.0 libasn1-8-heimdal libasprintf0v5 libbsd0 libcurl3-gnutls libdbus-1-3 libdbus-g
lib-1-2 libdevmapper-event1.02.1 libdrm2 libdumbnet1 libedit2 liberror-perl libevent-2.0-5 libexpat1 libffi6 libfuse2 libgdbm3 libgirepository-1.0-1 libglib2.0-0 libgmp10 libgnutls30 libgpm2 libgssapi-krb5-2 lib
gssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed4 libhx509-5-heimdal libicu55 libidn11 libk5crypto3 libkeyutils1 libklibc libkrb5-26-heimdal libkrb5-3 libkrb5support0 libl
dap-2.4-2 liblvm2app2.2 liblvm2cmd2.02 liblz4-1 liblzo2-2 libmnl0 libmpdec2 libmpfr4 libmspack0 libnettle6 libnewt0.52 libnl-3-200 libnl-genl-3-200 libp11-kit0 libpci3 libperl5.22 libplymouth4 libpng12-0 libpopt
0 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libpython3-stdlib libpython3.5-minimal libpython3.5-stdlib libreadline5 libreadline6 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules-db libsigs
egv2 libslang2 libsqlite3-0 libssl1.0.0 libstdc++6 libtasn1-6 libusb-0.1-4 libusb-1.0-0 libutempter0 libwind0-heimdal libwrap0 linux-base linux-firmware linux-image-4.4.0-21-generic linux-image-extra-4.4.0-21-ge
neric lsb-release lvm2 mdadm mime-support open-iscsi open-vm-tools openssh-client openssh-sftp-server openssl overlayroot patch perl perl-modules-5.22 plymouth python python-apt-common python-minimal python2.7 p
ython2.7-minimal python3 python3-apport python3-apt python3-chardet python3-dbus python3-debian python3-gi python3-minimal python3-newt python3-pkg-resources python3-problem-report python3-pycurl python3-six pyt
hon3-software-properties python3.5 python3.5-minimal readline-common screen software-properties-common sosreport ubuntu-cloudimage-keyring ubuntu-keyring ucf udev update-notifier-common vim vim-common vim-runtim
e vlan wireless-regdb xfsprogs xz-utils
I: Checking component main on http://localhost:3142/us.archive.ubuntu.com/ubuntu...
I: Retrieving acpid 1:2.0.26-1ubuntu2
I: Validating acpid 1:2.0.26-1ubuntu2
[...]
I: Chosen extractor for .deb packages: dpkg-deb
I: Extracting adduser...
I: Extracting base-files...
I: Extracting base-passwd...
[...]
I: Extracting zlib1g...

之所以如此奇怪,是因为在过去,安装阶段的工作没有任何问题。但现在它却被悄悄地跳过了?!一个旧的debootstrap版本是不行的,因为那些不知道仿生海狸(Ubuntu18.04)。

有两件事我认为可能是个问题:

  1. 内核版本差异:Ubuntu18.04中的4.15与Debian 8.10中的4.9.85。
  2. libc版本差异: 2.27-3ubuntu1与2.19-18+libc 8u 10。

..。但在这两种情况下,我都希望从debootstrap得到某种错误信息。同样,对于xenial (Ubuntu16.04),我不应该期望同样的差异。但是我没有看到任何错误,相反,重要的设置步骤被跳过,并试图使用命令chroot /target /bin/bash只提供

代码语言:javascript
复制
# LANG=en_US.UTF-8 chroot /target /bin/bash
groups: cannot find name for group ID 0
I have no name!@rescue:/#

挖掘一下就会发现没有/etc/passwd,等等。/dev/proc/sys被绑定到/target中.

为了成功地从上述Debian救援系统引导Ubuntu,我如何解决此问题?架构匹配主机和目标,那么是什么阻止了安装步骤的运行呢?

NB:我不能引导到最近的内核。或者说,要实现这样的目标,唯一的办法就是先安装某种地方救援系统。

我正在使用的软件

代码语言:javascript
复制
$ debootstrap --version
debootstrap 1.0.95ubuntu1
$ uname -a
Linux rescue 4.9.85 #2 SMP Thu Mar 1 08:06:18 CET 2018 x86_64 GNU/Linux

我还安装了ubuntu-archive-keyring

,我还试过什么

我还尝试将--foreign传递给debootstrap,这将导致我所看到的行为,但也应该留下一个可执行/debootstrap/debootstrap,然后我可以使用--second-stage调用该可执行D38。但是,尽管没有--foreign命令行开关,它显示了与我看到的完全相同的行为,但目标文件系统中没有/debootstrap/debootstrap来完成引导。

此外,我试图以这种方式安装debootstrap,从而使用jessie-backports中的apt-get install -t jessie-backports debootstrap (它标识为debootstrap 1.0.89~bpo8+1)。然后将/usr/share/debootstrap/scripts/bionic链接到/usr/share/debootstrap/scripts/gutsy

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-05-03 11:32:51

好吧,我想出来了。通过返回退出代码1,debootstrap的调用确实表明了失败。我忽略了这一点,因为我是如何链接几个命令并使用子subshells的。

一旦我明白了这一点,我就得找出debootstrap遇到了什么问题。从/debootstrap/debootstrap.log (目标内部)看,这并不明显,尽管事后看来是如此。所以我需要对debootstrap进行反思。为了做到这一点,可以通过/usr/sbin/debootstrap (打开跟踪)显式地调用/bin/sh -x shell脚本,并且输出实际上可以在/debootstrap/debootstrap.log (目标内部)中看到。在我的例子中,问题是mknod,如这个跟踪条目和输出所示:

代码语言:javascript
复制
+ mknod -m 666 /target/dev/null c 1 3
mknod: '/target/dev/null': File exists

这反过来又是由于我将/dev/proc/sys安装到目标up前线(这在过去是有用的!)。

在新的debootstrap版本中,这似乎是无条件失败的。调用mknod的相应函数是来自/usr/share/debootstrap/functionssetup_devices_simple

我在比较debootstrap脚本用于1.0.591.0.89~bpo8+1 (以及后续版本)时看到的一个显著变化是,函数setup_devices的调用从函数second_stage_install转移到了函数first_stage_install ( gutsy脚本的函数)。此函数调用setup_devices_simple,除非执行变体fakechroot或在“外域”内核上运行,因此会导致比以前更早地调用mknod

这一点以前没有失败的原因,似乎是因为在过去,保存在.tgz文件中并解压缩的设备,而现在debootstrap直接使用mkdnod

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

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

复制
相关文章

相似问题

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