ArchLinux离线伪安装逐步

本文是由我们的朋友Hugo Florentino通过电子邮件发送给我的,他在这里告诉我们有关他尝试在没有任何存储库的情况下仅使用安装磁盘来安装ArchLinux的经验。

伪安装

几天前,我下载了ArchLinux ISO进行家庭安装。 以前曾使用过其他发行版,使您可以从CD上安装至少一个最小的数据库,但我想做类似的事情,但是奇怪的是,Arch的安装过程不是为无法访问Internet的计算机设计的(开发人员的副作用在第一世界)。

就我而言,我的磁盘上已经装有Windows 7(具有引导和系统分区)和Fedora(具有交换和专用/引导分区)。 当时的想法是设法将Arch安装在Fedora以前的位置,而不会破坏Windows。

ArchLinux离线伪安装

好吧,我从Arch CD启动,选择了x86_64,并且毫不费力地将我留在控制台上。 我以为,“哇,这些家伙很认真,不想成为新秀发行人……好吧,让我们一起玩,然后看看会发生什么。”

我列出了要查看是否有任何文档的目录,并且发现确实存在带有基本安装指南的文本。 我在一张纸上写了相关的东西(我家里没有打印机),然后开始工作。

我所做的第一件事是将键盘布局从西班牙更改为西班牙语,这比我预期的要容易(甚至有一个奇怪的叫我们口音):

loadkeys es

接下来的事情是安装外部磁盘以在出现问题时保存MBR的副本,并顺便保存了我在Fedora中拥有的重要信息:

mkdir -p / mnt / tmp1 && mount / dev / sdb1 / mnt / tmp1 dd if = / dev / sda = / mnt / tmp1 / mbr.bin bs = 512 count = 1

幸运的是,Arch的LiveCD支持NTFS并具有内置功能 午夜战友 (MC),所以我很快就完成了其余信息的保存。

然后,我卸载了磁盘,删除了临时目录,并物理删除了外部磁盘,以减少潜在的“ catroptrophes”风险。

umount /mnt/tmp1 && rmdir /mnt/tmp1

所以我格式化了分区,挂载了根分区和启动分区,并打开了swap:

mkfs -t ext4 / dev / sda3 mkfs -t ext4 / dev / sda6 mount / dev / sda6 / mnt mkdir -p / mnt /引导安装/ dev / sda3 / mnt /引导swapon / dev / sda5

下一步是我的第一步:

pacstrap /mnt base

Arch很自然地尝试在其中一个镜像上寻找存储库数据库,但无法找到任何内容 包子 确实是在/ mnt中创建了一个目录结构,非常有条理,但显然是空的。

我通过电话问了几个使用Arch的朋友,如果没有互联网访问,是否无法安装至少与LiveCD上相同的软件包,也没有将存储库复制到磁盘上的方法,他们告诉我,至少他们不知道该怎么做。

我发现技术“挑战”很有趣,因此我想,“如果Arch能够以LiveCD模式登录,那么它至少应该能够以相同的模式安装到硬盘上”,因此我尝试通过手动复制文件,然后按照本教程的其余部分(进行一些其他小的更改)来查看发生了什么:

rsync -avl / {bin等,home,lib,lib64,opt,root,sbin,srv,usr,var} / mnt arch-chroot / mnt genfstab -p / >> / etc / fstab echo hpc> / etc /主机名ln -sf / usr / share / zoneinfo / Cuba / etc / localtime locale-gen

下一步是我的下一个障碍:

mkinitcpio -p linux

阅读命令手册和文件内容后,此命令产生了一些错误 /etc/mkinitcpio.conf y /etc/mkinitcpio.d/linux.preset,我知道该命令找不到该文件 vmlinuz-Linux,所以我按Ctrl + D退出chroot环境,并查找任何看起来像它的文件:

find / -type f -iname "*vmlinuz*"

Arch的LiveCD可能将启动文件挂载在目录下 / 跑 /,所以我决定将它们复制给我 /启动/ 使它们在我的chroot环境中方便使用:

cp /run/archiso/bootmnt/arch/boot/[memtest,intel_ucode.img} / mnt /引导/ cp /运行/ archiso / bootmnt /拱/引导/ x86_64 / * / mnt /引导/ arch-chroot / mnt

我发现尝试使用mkinitcpio的另一个错误是找不到根分区的标签,因此我写下了它的UUID(我使用blkid命令确定)以与命令一起使用,最终看起来像这样:

mkinitcpio -p linux -k /boot/vmlinuz root=UUID=d85938aa-83b8-431c-becb-9b5735264912

这次,构建成功结束,仅出现了一些未找到模块的警告,但在我的情况下则不需要。 以防万一,我重新生成了fstab,但是这次指定了UUID:

genfstab -U -p / > /etc/fstab

我以为:哦,好,终于进步了。 然后我继续更改密码并安装了引导程序。

passwd grub-install --target = i386-pc --recheck / dev / sda grub-mkconfig -o /boot/grub/grub.cfg

最后,有条不紊地,我再次按Ctrl + D退出chroot环境,分解所有内容并重新启动以查看发生了什么:

umount / mnt /启动umount / mnt重新启动

计算机重新启动,显示带有Arch的Grub菜单(Windows没出现在任何地方),因此我选择了它,并且一切似乎都可以正常加载,直到...系统指出我应该使用以下命令检查错误:

journalctl -xb

分析错误后,我发现大多数错误可以忽略,但是最后一个错误,告诉我找不到普利茅斯。

我立刻想到,“普利茅斯??? 为什么控制台启动环境需要这样的东西? 这似乎不太吻。 我当然没有说,也不需要。”

但实际上,我想:“嗯,但至少应该在某些文件中引用它,让我们看一下……”:

find /etc -type f -print0 | xargs -0 grep -i "plymouth"

令人惊讶的是,配置目录中没有出现带有文本字符串“ plymouth”的文件。 我当时想:“哦,所以……你强迫我自己吗? 然后让我们看看您是如何吸收“大炮”的(就像我们在古巴所说的),然后“我从头开始建造”普利茅斯:

vi / usr / bin /普利茅斯chmod 755 / usr / bin /普利茅斯

对于那些想知道我在该文件中放入什么内容的人,以下是其全部内容:

#! / bin / sh退出

我再次重新启动,并期望出现一些错误,并且……令人惊讶的是,systemd很高兴找到了这个“基本组件”,因为它完成了启动过程,并且没有再拖延,将我留在了控制台中。 由于我不敢相信自己的眼睛,我决定“卸载”普利茅斯并重新启动,以查看发生了什么事情:

rm -fr / usr / bin /普利茅斯重启

奇怪的是,这一次系统安静地启动,而没有因为Plymouth的缺席而使我烦恼。 (没有意见)

将Windows添加到GRUB

然后将Windows条目添加到GRUB。 由于传统路线无效( grub-mkconfig操作系统探测器 似乎运行不正常),我决定手动创建该条目,为此我需要检测Windows引导程序字符串和引导分区的UUID:

mkdir -p / mnt / winboot && mount / dev / sda1 / mnt / winboot grub-probe --target = hints_string / mnt / winboot / bootmgr grub-probe --target = fs_uuid / mnt / winboot / bootmgr

这分别返回了我这两个字符串:

--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
DC788F27788EFF8E

这样,我验证了返回的UUID与执行blkid命令时为该分区获得的UUID相同。 然后有必要使用所述数据生成一个定制的grub条目:

vi /etc/grub.d/40_custom

在其内容中:

#!/ bin / sh exec tail -n +3 $ 0#该文件提供了一种添加自定义菜单项的简便方法。 只需在此注释后键入要添加的#菜单项。 注意不要更改上面的“ exec尾”行。 菜单项“ Microsoft Windows 7 SP1” --class windows --class os { hd0,msdos1-提示裸机= ahci0,msdos1 DC0F1EFF788E ntldr / bootmgr}

完成此步骤后,我决定将Windows设置为默认操作系统,这样我的妻子就不会惊慌,我的侄女在她来的时候可以玩她的芭比娃娃。 为此,我只是编辑了文件 / etc / default / grub 并且我将输入设置为默认启动,并且超时仅为3秒。

GRUB_DEFAULT = 2 GRUB_TIMEOUT = 3

只需要再次重新生成GRUB配置,然后重新启动即可:

grub-mkconfig -o /启动/grub/grub.cfg重新启动

幸运的是,一切都按预期进行。 我选择了Windows条目,然后它愉快地启动了。

因此,您可以看到,如果可以逐步完成至少一个ArchLinux脱机伪安装,而不必仅与CD联机,尽管显然,将要安装在硬盘上的实际上是LiveCD,但是至少可以引导系统,复制文件并运行某些应用程序。

幸运的是,桑迪(KZKG ^ Gaara)停下来复制了Arch存储库(对此我非常感激),因此我计划尽快完成真正的脱机安装,但这将是另一个故事。 我可以向您保证的是,一段时间以来,我一直在丢失这种有趣的实验。 实际上,如果我有时间,可以保证房子的连通性并确保某些材料条件,我可能会尝试基于LFS进行自定义分发,这将是一个更加有趣的项目。 😉


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   彼得切科

    希望您能尝试一下FreeBSD Elav。
    至于您的指导,非常非常非常好和完整...

    1.    斜坡

      你多变。 我向您保证,您将在几个月内对FreeBSD感到无聊。

      1.    lf

        有趣的信息,但是我仍然看不到在带有UEFI的系统中安装弓的指南,弓箭手是否有新PC?

        1.    拉夫

          通过安装Antergos可以简化在ArchLinux中用UEFI进行的安装,您只需在Fat32中创建一个小于500MB的分区,并自动(当使用UEFI引导USB时),Antergos会将分区标记为/ boot。

      2.    彼得切科

        这就是为什么我更改...为了不再更改,我从Linux转到BSD:D。

    2.    彼得切科

      进行更改并写成指南:D.

    1.    奥兹卡尔

      继续使用Arch,当我去哈瓦那时,我会去接它。

  2.   Alex

    我的USB上有Arch Linux iso,由于时间不足,我不敢使用它。
    我将对本文进行认真的回顾,然后再使用它!

  3.   战心

    出色的文章,顺便让我想起了我通过BCM4312通过WIFI安装Arch的冒险旅程。

  4.   卡列维托

    Elav,请问这个问题,但是我是linux新手,我只用过ubuntu,而arch linux引起了我的注意。 我的朋友说我将无法安装它,因为它是给专家使用的,但是看到您的脱机教程后,我认为逐步完成我的安装,这对我来说是一个挑战。 只有我想通过Internet进行操作,这里有一个问题:您是否拥有或何时将制作这么多详细的教程(如本教程)进行安装?

    1.    戴科

      该指南已发布在此站点上。 https://blog.desdelinux.net/guia-de-instalacion-de-arch-linux-2014/

      😀因此,使用指南并注意执行的操作,我们将为您提供一个没有复杂性的安装,祝您好运!

    2.    拉夫

      您仍然可以安装Antergos,它是Archlinux,但安装了“ Ubuntu” ..😀

  5.   孤儿的

    在Arch中,官方映像有另一种替代安装媒体,称为Archboot,与官方映像不同,它包含[core]存储库(以及其他内容),可用于离线安装(它也是一种混合体系结构,用于i686和x86_64)。

    不好的是它现在占用1GB(以前占用的时间要少得多),因此必须在...之前下载,而且如果没有稳定的连接,则初始下载很复杂。

    这是一个链接,以防您发现它有用: https://wiki.archlinux.org/index.php/archboot

    1.    拉夫

      有趣,我不认识他know

    2.    雨果

      好吧,奇怪的是,前一阵子我尝试了archboot,当我到达pacstrap部分时,它告诉我它找不到ntfs-3g软件包🙁

      它还具有其他特性,例如,它不带有mc或手册页,并且需要大量安装内存。 看来这不是一个经过完善的解决方案。

  6.   Max Steel

    事实是,有一种非常简单的方法可以离线安装arch,而我必须经过经典的反复试验才能将其安装到家用PC(没有互联网的地方)上。

    为此,您显然需要另一台具有拱形和互联网连接的PC。 只需先制作一个pacman -Syu,然后再制作一个pacman -Sw base(加上显然要安装的所有内容)。 将所有文件从pacman缓存复制到USB记忆棒,再复制到数据库文件(/var/lib/pacman/sync/{core.db,extra.db,community.db}。

    然后继续进行arch的常规安装,但是在达到制作pacstrap-d / mnt base的地步之前(或者,我说的是内存中的所有内容。<),必须精确编辑pacstrap(使用vi或您喜欢的任何东西或带上安装盘),直到结尾处都有一行显示“ pacman -Syy”,我们只需将其删除即可。 之后,我们将pacman数据库文件复制到其相应位置(所有.db文件复制到/ var / lib / pacman / sync),并将缓存文件复制到缓存目录。

    因此,现在我们继续使用pacstrap -loquenomeaccord / mnt base和其他所有内容。

    我从内存中说出的所有内容,所以可能有一些详细信息,例如我不记得确切位置的高速缓存文件,但是应该在/ var / cache / pacman / pkg中,或者如果不能在其中指定pacstrap在我看来。

  7.   莱昂内尔

    他们可以使用双引导或三重引导do做cfdisk教程,这是我需要安装arch的原因

    1.    雨果

      关于cfdisk确实没有太多要说的,因为它根本不复杂,实际上,上面引用的安装指南基本上说明了如何使用它。 但是,如果您安装了其他系统,则可以使用更友好的工具,也许是Gparted。 对于Windows,您可以使用一个名为Easeus Partition Master的免费工具(尽管不幸的是不是免费的),它似乎运行得很好。

      对于其余的内容,我很高兴您觉得这篇文章有趣,我没有看到我的经历带来的好处,但是Elav鼓励我对此做一些准备。