Difference between revisions of "Archiso (简体中文)"

From ArchWiki
Jump to navigation Jump to search
 
Line 1: Line 1:
 
[[Category:Live Arch systems]]
 
[[Category:Live Arch systems]]
 
[[Category:Getting and installing Arch]]
 
[[Category:Getting and installing Arch]]
 +
[[en:Archiso]]
 
[[ar:Archiso]]
 
[[ar:Archiso]]
 
[[el:Archiso]]
 
[[el:Archiso]]

Revision as of 13:53, 27 June 2014

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

本文翻译进度

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

安装和配置

注意: 以下操作请在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的根.

安装包

You will want to create a list of packages you want installed on your live CD system. A file full of package names, one-per-line, is the format for this. This is great for special interest live CDs, just specify packages you want in packages.both and bake the image. The packages.i686 and packages.x86_64 files allow you to install software on just 32bit or 64bit, respectively.

I recommend installing "rsync" if you wish to install the system later on with no internet connection or skipping downloading it all over again. (#Installation)

自定义本地库

Merge-arrows-2.pngThis article or section is a candidate for merging with Pacman tips#Custom local repository.Merge-arrows-2.png

Notes: Move the general information (e.g. repo tree) into the main article. (Discuss in Talk:Archiso (简体中文)#)

You can also create a custom local repository for the purpose of preparing custom packages or packages from AUR/ABS. When doing so with packages for both architectures, you should follow a certain directory order to not run into problems.

For instance:

  • ~/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)

You can then add your repository by putting the following into ~/archlive/releng/pacman.conf, above the other repository entries (for top priority):

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

So, the build scripts just look for the appropriate packages.

If this is not the case you will be running into error messages similar to this:

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.

添加账户

User management can be handled the same way as during the normal installation process, except you put your commands scripted into ~/archlive/releng/root-image/root/customize-root-image.sh. For further information have a look at User management.

向映像里添加文件

Note: You must be root to do this, do not change the ownership of any of the files you copy over, everything within the root-image directory must be root owned. Proper ownerships will be sorted out shortly.

The root-image directory acts as an overlay, think of it as root directory '/' on your current system, so any files you place within this directory will be copied over on boot-up.

So if you have a set of iptables scripts on your current system you want to be used on you live image, copy them over as such:

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

Placing files in the users home directory is a little different. Do not place them within root-image/home, but instead create a skel directory within root-image/ and place them there. We will then add the relevant commands to the customize_root_image.sh which we are going to use to copy them over on boot and sort out the permissions.

First, create the skel directory; making sure you are within ~/archlive/releng/root-image/etc directory (if this is where you are working from):

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

Now copy the 'home' files to the skel directory, again doing everything as root! e.g for .bashrc.

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

When ~/archlive/releng/root-image/root/customize-root-image.sh is executed and a new user is created, the files from the skel directory will automatically be copied over to the new home folder, permissions set right.

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.

另请参见