README.transfer.rst: update instructions

Convert the file to reStructuredText markup.
Fixes #39.

Rewrite the instructions where possible or otherwise update them.
E.g. fix the changed boot loader paths, etc.

The "Manual formatting (BIOS only)", previosly "PC-BIOS (ISOHYBRID-MBR)",
method is not tested and it is not clear if it still even works.
This commit is contained in:
nl6720 2023-02-18 12:39:27 +02:00
parent 04d439d1b7
commit 1da743cc4e
No known key found for this signature in database
GPG key ID: 5CE88535E188D369
2 changed files with 123 additions and 90 deletions

View file

@ -28,6 +28,7 @@ Changed
Additionally write more variables in it. The previous ``/${install_dir}/grubenv`` (``/arch/grubenv`` for releng)
is deprecated and a future archiso release will not create this file anymore.
- Moved syslinux directory from ``/syslinux/`` to ``/boot/syslinux/`` to keep most boot loader files in ``/boot/``.
- Update ``README.transfer`` documentation and convert it to reStructuredText.
Removed
-------

View file

@ -1,133 +1,165 @@
INDEX
-----
==============================================
Transfer ISO to target medium (configs/releng)
==============================================
* Transfer ISO file to target medium (configs/releng)
* To -> CD / DVD / BD
* To -> USB-key / SD / HDD / SSD
* PC-BIOS (MBR)
* PC-BIOS (ISOHYBRID-MBR)
* PC-EFI (GPT) [x86_64 only]
* PC-EFI (ISOHYBRID-GPT) [x86_64 only]
ISO images names consist of: ``archlinux-YYYY.MM.DD-x86_64.iso``.
Where: ``YYYY`` is the year, ``MM`` the month and ``DD`` the day.
.. contents::
*** Transfer ISO image to target medium (configs/releng)
Burn to an optical disc
=======================
ISO images names consist of: archlinux-<YYYY>.<MM>.<DD>-x86_64.iso
.. note::
All ISO images are BIOS and UEFI bootable via "El Torito" in no-emulation mode.
Where:
<YYYY> Year
<MM> Month
<DD> Day
Burn the ISO using your favorite disc burning program.
For example:
** To -> CD / DVD / BD
.. code:: sh
Note: All ISO images are booteable on a PC-BIOS via "El Torito" in no-emulation mode,
All x86_64 ISO images are booteable on a PC-EFI via "El Torito" in no-emulation mode.
xorriso -as cdrecord -v -sao dev=/dev/sr0 archlinux-YYYY.MM.DD-x86_64.iso
Write to an USB flash drive / memory card / hard disk drive / solid state drive / etc.
======================================================================================
.. tip::
See https://wiki.archlinux.org/title/USB_flash_installation_medium for more detailed instructions.
Nomeclature:
<B> scsibus number
<T> target number
<L> lun number
(Note: see cdrecord -scanbus, for these numbers)
``<DEV-TARGET>``
Device node of the drive where ISO contents should be copied (example: ``/dev/sdx``).
``<DEV-TARGET-N>``
Device node of the partition on ``<DEV-TARGET>`` (example: ``/dev/sdx1``).
``<FS-LABEL>``
Represents the file system label of the ``archlinux-YYYY.MM.DD-x86_64.iso`` (example: ``ARCH_201703``).
1) Write it directly using your favorite recording program.
# cdrecord dev=<B>,<T>,<L> -dao archlinux-<YYYY>.<MM>.<DD>-x86_64.iso
ISOHYBRID (BIOS and UEFI)
-------------------------
.. note::
This method is the most easily, quick and dirty, but is the most limited if you want to use your target medium
for other purposes. If using this does not work, use the `File system transposition (UEFI only)`_ method instead.
** To -> USB Flash Drive (USB-key) / Memory card (SD) /
Hard-Disk Drive (HDD) / Solid-State Drive (SSD)
Directly write the ISO file to the target medium:
Note: These steps are the general workflow, you can skip some of them,
using another filesystem if your bootloader supports it,
installing to another directory than "arch/" or using more than
one partition. Just ensure that main boot params options
(archisolabel= and archisobasedir=) are set correctly according to your setup.
.. code:: sh
Nomeclature:
<DEV-TARGET>: Device node of the drive where ISO contents should be copied
(example: /dev/sdx)
<DEV-TARGET-N>: Device node of the partition on <DEV-TARGET>
(example: /dev/sdx1)
<MNT-TARGET-N>: Mount point path where <DEV-TARGET-N> is mounted
(example: /mnt/sdx/1)
<ISO-SOURCE>: Path to the ISO file archlinux-<YYYY>.<MM>.<DD>-x86_64.iso
(example: ~/archlinux-2017.03.01-x86_64.iso)
<FS-LABEL>: Represents the filesystem label of the <ISO-SOURCE>
(example: ARCH_201703)
dd bs=4M if=archlinux-YYYY.MM.DD-x86_64.iso of=<DEV-TARGET> conv=fsync oflag=direct status=progress
File system transposition (UEFI only)
--------------------------------
* PC-BIOS (MBR):
This method extracts the contents of the ISO onto a prepared UEFI-bootable volume.
Note: Using here a MBR partition mode as example, but GPT should also works
if machine firmware is not broken.
Just ensure that partition is set with attribute "2: legacy BIOS bootable"
and use gptmbr.bin instead of mbr.bin for syslinux.
If your drive is already partitioned and formatted, skip to the "Mount the target file system" step.
1) Create one partition entry in MBR and mark it as "active" (booteable).
Note: Type "b" for FAT32, "83" for EXTFS or "7" for NTFS.
# fdisk <DEV-TARGET>
.. note::
Using MBR with one FAT formatted active partition is the most compatible method.
2) Create a FAT32, EXTFS or NTFS filesystem on such partition and setup a label.
Note: COW is not supported on NTFS.
# mkfs.fat -F 32 -n <FS-LABEL> <DEV-TARGET-N>
# mkfs.ext4 -L <FS-LABEL> <DEV-TARGET-N>
# mkfs.ntfs -L <FS-LABEL> <DEV-TARGET-N>
1. Partition the drive with *fdisk*.
3) Mount target filesystem.
# mount <DEV-TARGET-N> <MNT-TARGET-N>
.. code:: sh
4) Extract ISO image on target filesystem.
# bsdtar -x --exclude=isolinux/ --exclude=EFI/ --exclude=loader/ -f <ISO-SOURCE> -C <MNT-TARGET-N>
fdisk <DEV-TARGET>
5) Install syslinux bootloader on target filesystem.
# extlinux -i <MNT-TARGET-N>/arch/boot/syslinux
1) Create a new MBR partition table with command ``o``.
6) Unmount target filesystem.
# umount <MNT-TARGET-N>
.. warning::
This will destroy all data on the drive.
7) Install syslinux MBR boot code on target drive.
# dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/mbr.bin of=<DEV-TARGET>
2) Create a new primary partition with command ``n`` and set its type code to ``0c`` with command ``t``.
3) Mark the partition as bootable with the ``a`` command.
* PC-BIOS (ISOHYBRID-MBR):
4) Write the changes and exit with ``w``.
Note: This method is the most easily, quick and dirty, but is the most limited
if you want to use your target medium for other purposes.
If using this does not work, use PC-BIOS (MBR) method instead.
2. Format the newly created partition to FAT32
1) Dump ISO file to target medium.
# dd if=<ISO-SOURCE> of=<DEV-TARGET>
.. code:: sh
mkfs.fat -F 32 /dev/disk/by-id/<TARGET-DEVICE>-part1
* PC-EFI (GPT) [x86_64 only]
3. Mount the target file system
Note: Using here a GPT partition mode as example, but MBR should also works
if machine firmware is not broken.
.. code:: sh
1) Create one partition entry in GPT (of type "ef00")
# gdisk <DEV-TARGET>
mount <DEV-TARGET-N> /mnt
2) Create a FAT32 filesystem on such partition and setup a label.
# mkfs.fat -F 32 -n <FS-LABEL> <DEV-TARGET-N>
4. Extract the ISO image on the target file system.
3) Mount target filesystem.
# mount <DEV-TARGET-N> <MNT-TARGET-N>
.. code:: sh
4) Extract ISO image on target filesystem.
# bsdtar -x --exclude=isolinux/ --exclude=EFI/archiso/ --exclude=arch/boot/syslinux/ -f <ISO-SOURCE> -C <MNT-TARGET-N>
bsdtar -x --exclude=boot/syslinux/ -f archlinux-YYYY.MM.DD-x86_64.iso -C /mnt
5) Unmount target filesystem.
# umount <MNT-TARGET-N>
5. Unmount the target file system.
.. code:: sh
* PC-EFI (ISOHYBRID-GPT) [x86_64 only]
umount /mnt
Note: This method is the most easily, quick and dirty, but is the most limited
if you want to use your target medium for other purposes.
If using this does not work, use PC-EFI (GPT) method instead.
Manual formatting (BIOS only)
-----------------------------
.. note::
These steps are the general workflow, you can skip some of them, using another file system if your boot loader
supports it, installing to another directory than ``arch/`` or using more than one partition. Just ensure that
main boot parameters (``archisolabel=`` and ``archisobasedir=``) are set correctly according to your setup.
Using here a MBR partition mode as example, but GPT should also work if the machine firmware is not broken. Just
ensure that partition is set with attribute ``2: legacy BIOS bootable`` and use ``gptmbr.bin`` instead of
``mbr.bin`` for syslinux.
1) Create one partition entry in MBR and mark it as "active" (bootable).
.. note::
Type ``b`` for FAT32, ``83`` for EXTFS or ``7`` for NTFS.
.. code:: sh
fdisk <DEV-TARGET>
2) Create a FAT32, EXTFS or NTFS file system on such partition and setup a label.
.. note::
COW is not supported on NTFS.
.. code:: sh
mkfs.fat -F 32 -n <FS-LABEL> <DEV-TARGET-N>
mkfs.ext4 -L <FS-LABEL> <DEV-TARGET-N>
mkfs.ntfs -L <FS-LABEL> <DEV-TARGET-N>
3) Mount the target file system.
.. code:: sh
mount <DEV-TARGET-N> /mnt
4) Extract the ISO image on the target file system.
.. code:: sh
bsdtar -x --exclude=boot/grub/ --exclude=EFI/ -f archlinux-YYYY.MM.DD-x86_64.iso -C /mnt
5) Install the syslinux boot loader on the target file system.
.. code:: sh
extlinux -i /mnt/boot/syslinux
6) Unmount the target file system.
.. code:: sh
umount /mnt
7) Install syslinux MBR boot code on the target drive.
.. code:: sh
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/mbr.bin of=<DEV-TARGET>
1) Dump ISO file to target medium.
# dd if=<ISO-SOURCE> of=<DEV-TARGET>