Archiso (简体中文)

From ArchWiki
Jump to navigation Jump to search

zh-CN:Archiso

翻译状态: 本文是英文页面 Archiso翻译,最后翻译时间:2014-06-27,点击这里可以查看翻译后英文页面的改动。

“Archiso”是一个能够建立功能全面的基于Arch Linux的Live CD和USB映像的bash脚本小工具。它是用来生成正式的CD / USB镜像的工具,但它是一个非常实用的工具,它可以被用来生成救援系统,安装盘,以及含有特殊利益的live CD/ DVD / USB系统和其他。简单地说,如果要将Arch放入其他可移动设备,它可以帮你做到这一点。 Archiso的核心,是mkarchiso。它的所有选项都记录在它的用法输出,所以mkarchiso的直接使用方法将不在这里讨论。相反,这篇wiki文章将在任何时候教你使用Archiso。

本文翻译进度

40%翻译为简体中文。翻译工程仍在继续。

安装和配置

注意: 以下操作请在ROOT权限下使用,在错误的权限下操作会造成一下问题.

当我们开始之前, 我们需要 install archisoofficial repositories. 另外, archiso-gitAUR 能在 AUR中找到.

创建一个用于工作的目录, 实时镜像将会在这里被处理: ~/archlive 需要做精.

$ mkdir ~/archlive

更早安装到主机的Archiso脚本现在需要复制到你新建的工作目录内。

Archiso 配置了2个"profiles": relengbaseline.

如果您想要创建完全定制的Live Arch Linux,预安装所有您最喜爱的程序和配置,使用 ' releng '。

如果你只是想构建一个简易的Live镜像,那么使用“baseline”来配置一些十分基础的配置即可。

所以根据你的需要来决定使用 releng 还是baseline作为基础配置文件 .

# cp -r /usr/share/archiso/configs/PROFILE/ ~/archlive

如果你要使用 releng 配置文件来定制一个完全自定义的Live介质,那么你可以继续到:#配置我们的Live介质.

如果您使用“baseline”配置文件创建一个空白的映像,那么你不需要做任何的定制,可以继续到#构建ISO.

配置我们的Live介质

本节详细配置你将创建的映像,允许您定义包和配置你想要包含你的Live映像。

更改到我们早些时候创建的目录 (~/archlive/releng/ 如果你一直按照本向导在执行), 你将会看到大量的文件和目录 ; 我们只关注这些,主要是: packages.* -这是你列出一行一行你想要安装的包的地方, 和 根映像目录- 这是一个覆盖目录,你将在这里完成所有的定制工作。

一般来说,每一个管理任务,你通常会经过全新安装,除了安装程序包做可以编写脚本为 ~/archlive/releng/root-image/root/customize-root-image.sh. 它必须从新环境的角度写入, 所以脚本中的 / 意味着已被创建的Live ISO的根.

安装包

你会想在你的CD系统上创建一个你想安装的包的列表. 一个全是文件名列表的文件. 这是含有巨大特殊利益的Live CD,只需在packages.both指定你想要的包和烧录的镜像。 The packages.i686 和 packages.x86_64 文件允许你分别只在32位还是64位安装文件。

若你准备在没有互联网连接的设备上安装系统,我建议你安装"rsync",要不然就重新跳过下载它. (#安装)

自定义本地库

Merge-arrows-2.pngThis article or section is a candidate for merging with Pacman tips#自定义本地库.Merge-arrows-2.png

Notes: 移动一般信息 (e.g. repo tree) 到主文章. (Discuss in Talk:Archiso (简体中文)#)

你也可以 创建自定义本地资源库AUR/ABS准备自定义包. 当这样处理这两种架构的软件包,您应该遵循一定的目录顺序,才不会出现问题。 例如

  • ~/customrepo
    • ~/customrepo/x86_64
      • ~/customrepo/x86_64/foo-x86_64.pkg.tar.xz
      • ~/customrepo/x86_64/customrepo.db.tar.gz
      • ~/customrepo/x86_64/customrepo.db (symlink created by repo-add)
    • ~/customrepo/i686
      • ~/customrepo/i686/foo-i686.pkg.tar.xz
      • ~/customrepo/i686/customrepo.db.tar.gz
      • ~/customrepo/i686/customrepo.db (symlink created by repo-add)

然后您可以添加您的存储库把下列句子变成 ~/archlive/releng/pacman.conf, 上面的其他存储库条目 (优先):

# custom repository
[customrepo]
SigLevel = Optional TrustAll
Server = file:///home/user/customrepo/$arch

因此,构建脚本只是为了寻找适当的程序包。

如果不是这样你将运行到与此类似的错误消息:

error: failed to prepare transaction (package architecture is not valid)
:: package foo-i686 does not have a valid architecture

避免安装属于基础组的包

(为保证文章的准确性,本节使用英文原文) By, default /usr/bin/mkarchiso, a script which is used by ~/archlive/releng/build.sh, calls one of the arch-install-scripts named pacstrap without the -i flag, which causes Pacman to not wait for user input during the installation process.

When blacklisting base group packages by adding them to the IgnorePkg line in ~/archlive/releng/pacman.conf, Pacman asks if they still should be installed, which means they will when user input is bypassed. To get rid of these packages there are several options:

  • Dirty: Add the -i flag to each line calling pacstrap in /usr/bin/mkarchiso.
  • Clean: Create a copy of /usr/bin/mkarchiso in which you add the flag and adapt ~/archlive/releng/build.sh so that it calls the modifed version of the mkarchiso script.
  • Advanced: Create a function for ~/archlive/releng/build.sh which explicitly removes the packages after the base installation. This would leave you the comfort of not having to type enter so much during the installation process.

添加账户

用户管理可以在正常的安装过程中用相同的方式处理,除了你把你的命令脚本放到 ~/archlive/releng/root-image/root/customize-root-image.sh. 详情参阅 用户管理.

向映像里添加文件

注意: 你必须使用根权限做到这一点, 不改变任何你复制过来的文件的所有权, 根映像中的所有文件必须是root用户所有. 适当的所有制将在不久被解决.

根映像目录作为要覆盖的文件,把它看作是在当前系统上的根目录'/',所以你在这个目录中放置的任何文件都将在开机时被复制。

所以,如果你在要作为Live镜像使用的当前系统上有一组iptables脚本,请这样复制:

# cp -r /etc/iptables ~/archlive/releng/root-image/etc

在用户home文件夹里放置文件的方法有些许不同. 别把它们放在root-image/home, 而是在root-image/里创建skel目录并将其放置在那里. 然后我们会将相关命令添加到 customize_root_image.sh(一个我们要使用复制道引导和梳理权限的文件)。

首先,创建 skel 目录; 确保你在 ~/archlive/releng/root-image/etc 目录 (如果这是你工作之地):

# cd ~/archlive/releng/root-image/etc && mkdir skel

现在,复制 'home' 文件到skel目录, 再使用根权限做所有事! e.g for .bashrc.

# cp ~/.bashrc ~/archlive/releng/root-image/etc/skel/

~/archlive/releng/root-image/root/customize-root-image.sh 被执行,并且一个新用户已被创建, skel 目录中的文件将自动被复制到新的ome文件夹中,设置正确的权限。

aitab

The default file should work fine, so you should not need to touch it.

The aitab file holds information about the filesystems images that must be created by mkarchiso and mounted at initramfs stage from the archiso hook. It consists of some fields which define the behaviour of images.

# <img>         <mnt>                 <arch>   <sfs_comp>  <fs_type>  <fs_size>
<img>
Image name without extension (.fs .fs.sfs .sfs).
<mnt>
Mount point.
<arch>
Architecture { i686 | x86_64 | any }.
<sfs_comp>
SquashFS compression type { gzip | lzo | xz }.
<fs_type>
Set the filesystem type of the image { ext4 | ext3 | ext2 | xfs | btrfs }. A special value of "none" denotes no usage of a filesystem. In that case all files are pushed directly to SquashFS filesystem.
<fs_size>
An absolute value of file system image size in MiB (example: 100, 1000, 4096, etc) A relative value of file system free space [in percent] {1%..99%} (example 50%, 10%, 7%). This is an estimation, and calculated in a simple way. Space used + 10% (estimated for metadata overhead) + desired %
Note: Some combinations are invalid. Example both sfs_comp and fs_type are set to none

mkinitcpio.conf

The default file should work fine, so you should not need to touch it.

An initcpio is necessary for creating a system that is able to "wake-up" from a CD/DVD/USB,

The default list will get you a system that can be booted off a CD/DVD or a USB device. It is worth mentioning that hardware auto-detection and things of that nature do not belong here. Only what is necessary to get the system on its feet, and out of the initcpio really belong here, fancier stuff can be done on the booted system anyway.

引导载入程式

The default file should work fine, so you should not need to touch it.

Due to the modular nature of isolinux, you are able to use lots of addons since all *.c32 files are copied and available to you. Take a look at the official syslinux site and the archiso git repo. Using said addons, it is possible to make visually attractive and complex menus. See here.

登录界面管理器

Starting X at boot is done by enabling your login manager's systemd service. If you know which .service file needs a softlink: Great. If not, you can easily find out in case you're using the same program on the system you build your iso on. Just use

# systemctl disable nameofyourloginmanager

to temporarily turn it off. Next type the same command again and replace "disable" with "enable" to activate it again. Systemctl prints information about softlink it creates. Now change to ~/archiso/releng/root-image/etc/systemd/system and create the same softlink there.

An example (make sure you're either in ~/archiso/releng/root-image/etc/systemd/system or add it to the command):

# ln -s /usr/lib/systemd/system/lxdm.service display-manager.service

This will enable LXDM at system start on your live system.

改变自动登录状态

The configuration for getty's automatic login is located under root-image/etc/systemd/system/getty@tty1.service.d/autologin.conf.

You can modify this file to change the auto login user:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin isouser --noclear %I 38400 linux

Or remove it altogether to disable auto login.

构建ISO

Now you are ready to turn your files into the .iso which you can then burn to CD or USB: Inside the directory you are working with, either ~/archlive/releng, or ~/archlive/baseline, execute:

# ./build.sh -v

The script will now download and install the packages you specified to work/*/root-image, create the kernel and init images, apply your customizations and finally build the iso into out/.

使用ISO

CD

Just burn the iso to a cd. You can follow CD Burning as you wish.

USB

See USB Flash Installation Media.

grub4dos

Grub4dos is a utility that can be used to create multiboot usbs, able to boot multiple linux distros from the same usb stick.

To boot the generated system on a usb with grub4dos already installed, loop mount the ISO and copy the entire /arch directory to the root of the usb. Then edit the menu.lst file from the grub4dos (it must be on the usb root) and add these lines:

title Archlinux x86_64
kernel /arch/boot/x86_64/vmlinuz archisolabel=<your usb label>
initrd /arch/boot/x86_64/archiso.img

Change the x86_64 part as necessary and put your real usb label there.

安装

Boot the created CD/DVD/USB. If you wish to install the Archiso you created -as it is-, there are several ways to do this, but either way we're following the Beginners' guide mostly.

If you don't have an internet connection on that PC, or if you don't want to download every packages you want again, follow the guide, and when you get to Beginners' guide#Install_the_base_system, instead of downloading, use this: Full system backup with rsync. (more info here: Talk:Archiso)

You can also try: Archboot, GUI installer.

另请参见