[archiso] Drop aitab support
Always create one filesystem of a fixed size (32G), format (ext4) and know name "airootfs". Simplify logic a lot.
This commit is contained in:
parent
9131f83404
commit
36459f3acc
@ -101,7 +101,7 @@ _verify_checksum() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
run_hook() {
|
run_hook() {
|
||||||
[[ -z "${arch}" ]] && arch="$(uname -m)"
|
arch="$(uname -m)"
|
||||||
[[ -z "${cowspace_size}" ]] && cowspace_size="75%"
|
[[ -z "${cowspace_size}" ]] && cowspace_size="75%"
|
||||||
[[ -z "${copytoram_size}" ]] && copytoram_size="75%"
|
[[ -z "${copytoram_size}" ]] && copytoram_size="75%"
|
||||||
[[ -z "${archisobasedir}" ]] && archisobasedir="arch"
|
[[ -z "${archisobasedir}" ]] && archisobasedir="arch"
|
||||||
@ -113,12 +113,6 @@ run_hook() {
|
|||||||
cowfile_size=${cowfile_size/%}
|
cowfile_size=${cowfile_size/%}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "${aitab}" ]]; then
|
|
||||||
aitab="/run/archiso/bootmnt/${archisobasedir}/aitab"
|
|
||||||
else
|
|
||||||
aitab="/run/archiso/bootmnt/${archisobasedir}/${aitab}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "${cow_label}" ]]; then
|
if [[ -n "${cow_label}" ]]; then
|
||||||
cow_device="/dev/disk/by-label/${cow_label}"
|
cow_device="/dev/disk/by-label/${cow_label}"
|
||||||
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
|
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
|
||||||
@ -147,14 +141,6 @@ archiso_mount_handler() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [[ ! -f "${aitab}" ]]; then
|
|
||||||
echo "ERROR: '${aitab}' file does not exist."
|
|
||||||
echo " Falling back to interactive prompt"
|
|
||||||
echo " You can try to fix the problem manually, log out when you are finished"
|
|
||||||
launch_interactive_shell
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${checksum}" == "y" ]]; then
|
if [[ "${checksum}" == "y" ]]; then
|
||||||
if [[ -f "/run/archiso/bootmnt/${archisobasedir}/checksum.${arch}.md5" ]]; then
|
if [[ -f "/run/archiso/bootmnt/${archisobasedir}/checksum.${arch}.md5" ]]; then
|
||||||
msg -n ":: Self-test requested, please wait..."
|
msg -n ":: Self-test requested, please wait..."
|
||||||
@ -188,17 +174,8 @@ archiso_mount_handler() {
|
|||||||
fi
|
fi
|
||||||
mkdir -p "/run/archiso/cowspace/${cow_directory}"
|
mkdir -p "/run/archiso/cowspace/${cow_directory}"
|
||||||
|
|
||||||
local aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size
|
_mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.fs.sfs" "/run/archiso/sfs/airootfs"
|
||||||
while read aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size; do
|
_mnt_fs "/run/archiso/sfs/airootfs/airootfs.fs" "${newroot}" "/"
|
||||||
[[ "${aitab_img#\#}" != "${aitab_img}" ]] && continue
|
|
||||||
[[ "${aitab_arch}" != "any" && "${aitab_arch}" != "${arch}" ]] && continue
|
|
||||||
if [[ "${aitab_fs_type}" != "none" ]]; then
|
|
||||||
_mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${aitab_arch}/${aitab_img}.fs.sfs" "/run/archiso/sfs/${aitab_img}"
|
|
||||||
_mnt_fs "/run/archiso/sfs/${aitab_img}/${aitab_img}.fs" "${newroot}" "${aitab_mnt}"
|
|
||||||
else
|
|
||||||
_mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${aitab_arch}/${aitab_img}.sfs" "${newroot}${aitab_mnt}"
|
|
||||||
fi
|
|
||||||
done < "${aitab}"
|
|
||||||
|
|
||||||
if [[ "${copytoram}" == "y" ]]; then
|
if [[ "${copytoram}" == "y" ]]; then
|
||||||
umount /run/archiso/bootmnt
|
umount /run/archiso/bootmnt
|
||||||
|
@ -34,21 +34,7 @@ archiso_pxe_http_mount_handler () {
|
|||||||
mkdir -p "/run/archiso/httpspace"
|
mkdir -p "/run/archiso/httpspace"
|
||||||
mount -t tmpfs -o size="${archiso_http_spc}",mode=0755 httpspace "/run/archiso/httpspace"
|
mount -t tmpfs -o size="${archiso_http_spc}",mode=0755 httpspace "/run/archiso/httpspace"
|
||||||
|
|
||||||
local _aitab_url="${archiso_http_srv}${aitab#/run/archiso/bootmnt/}"
|
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.fs.sfs" "/${arch}"
|
||||||
local _aitab_file="/run/archiso/httpspace/${aitab#/run/archiso/bootmnt/}"
|
|
||||||
|
|
||||||
_curl_get "${_aitab_url}" "/"
|
|
||||||
|
|
||||||
local aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size
|
|
||||||
while read aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size; do
|
|
||||||
[[ "${aitab_img#\#}" != "${aitab_img}" ]] && continue
|
|
||||||
[[ "${aitab_arch}" != "any" && "${aitab_arch}" != "${arch}" ]] && continue
|
|
||||||
if [[ "${aitab_fs_type}" != "none" ]]; then
|
|
||||||
_curl_get "${archiso_http_srv}${archisobasedir}/${aitab_arch}/${aitab_img}.fs.sfs" "/${aitab_arch}"
|
|
||||||
else
|
|
||||||
_curl_get "${archiso_http_srv}${archisobasedir}/${aitab_arch}/${aitab_img}.sfs" "/${aitab_arch}"
|
|
||||||
fi
|
|
||||||
done < "${_aitab_file}"
|
|
||||||
|
|
||||||
if [[ "${checksum}" == "y" ]]; then
|
if [[ "${checksum}" == "y" ]]; then
|
||||||
_curl_get "${archiso_http_srv}${archisobasedir}/checksum.${arch}.md5" "/"
|
_curl_get "${archiso_http_srv}${archisobasedir}/checksum.${arch}.md5" "/"
|
||||||
|
@ -304,11 +304,7 @@ command_checksum () {
|
|||||||
_msg_info "Creating checksum file for self-test (${_chk_arch})..."
|
_msg_info "Creating checksum file for self-test (${_chk_arch})..."
|
||||||
cd "${work_dir}/iso/${install_dir}"
|
cd "${work_dir}/iso/${install_dir}"
|
||||||
if [[ -d "${_chk_arch}" ]]; then
|
if [[ -d "${_chk_arch}" ]]; then
|
||||||
md5sum aitab > checksum.${_chk_arch}.md5
|
find ${_chk_arch} -type f -print0 | xargs -0 md5sum > checksum.${_chk_arch}.md5
|
||||||
find ${_chk_arch} -type f -print0 | xargs -0 md5sum >> checksum.${_chk_arch}.md5
|
|
||||||
if [[ -d "any" ]]; then
|
|
||||||
find any -type f -print0 | xargs -0 md5sum >> checksum.${_chk_arch}.md5
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
cd ${OLDPWD}
|
cd ${OLDPWD}
|
||||||
_msg_info "Done!"
|
_msg_info "Done!"
|
||||||
@ -375,39 +371,23 @@ command_iso () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Parse aitab and create each filesystem specified on that, and push it in "iso" directory.
|
# create airootfs.fs.sfs filesystem, and push it in "iso" directory.
|
||||||
command_prepare () {
|
command_prepare () {
|
||||||
if [[ ! -f "${work_dir}/iso/${install_dir}/aitab" ]]; then
|
|
||||||
_msg_error "The file '${work_dir}/iso/${install_dir}/aitab' does not exist." 1
|
|
||||||
fi
|
|
||||||
_show_config prepare
|
_show_config prepare
|
||||||
|
|
||||||
_cleanup
|
_cleanup
|
||||||
local _aitab_img _aitab_mnt _aitab_arch _aitab_sfs_comp _aitab_fs_type _aitab_fs_size
|
|
||||||
while read _aitab_img _aitab_mnt _aitab_arch _aitab_sfs_comp _aitab_fs_type _aitab_fs_size ; do
|
local _src="${work_dir}/airootfs"
|
||||||
if [[ ${_aitab_img} =~ ^# ]]; then
|
local _dst="${work_dir}/iso/${install_dir}/${arch}"
|
||||||
continue
|
|
||||||
fi
|
mkdir -p "${_dst}"
|
||||||
if [[ "${_aitab_arch}" != "any" && "${_aitab_arch}" != "${arch}" ]]; then
|
|
||||||
continue
|
if _is_directory_changed "${_src}" "${_dst}/airootfs.fs.sfs"; then
|
||||||
fi
|
_mkfs airootfs
|
||||||
local _src="${work_dir}/${_aitab_img}"
|
_mksfs airootfs.fs
|
||||||
local _dst="${work_dir}/iso/${install_dir}/${_aitab_arch}"
|
mv "${_src}.fs.sfs" "${_dst}"
|
||||||
mkdir -p "${_dst}"
|
rm "${_src}.fs"
|
||||||
if [[ ${_aitab_fs_type} != "none" ]]; then
|
fi
|
||||||
if _is_directory_changed "${_src}" "${_dst}/${_aitab_img}.fs.sfs"; then
|
|
||||||
_mkfs ${_aitab_img}
|
|
||||||
_mksfs ${_aitab_img}.fs
|
|
||||||
mv "${_src}.fs.sfs" "${_dst}"
|
|
||||||
rm "${_src}.fs"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if _is_directory_changed "${_src}" "${_dst}/${_aitab_img}.sfs"; then
|
|
||||||
_mksfs ${_aitab_img}
|
|
||||||
mv "${work_dir}/${_aitab_img}.sfs" "${_dst}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done < "${work_dir}/iso/${install_dir}/aitab"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Install packages on airootfs.
|
# Install packages on airootfs.
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
# <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size>
|
|
||||||
airootfs / %ARCH% gzip ext4 50%
|
|
@ -60,12 +60,7 @@ make_isolinux() {
|
|||||||
cp ${work_dir}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/
|
cp ${work_dir}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/
|
||||||
}
|
}
|
||||||
|
|
||||||
# Process aitab
|
# Build airootfs filesystem image
|
||||||
make_aitab() {
|
|
||||||
sed "s|%ARCH%|${arch}|g" ${script_path}/aitab > ${work_dir}/iso/${install_dir}/aitab
|
|
||||||
}
|
|
||||||
|
|
||||||
# Build all filesystem images specified in aitab (.fs.sfs .sfs)
|
|
||||||
make_prepare() {
|
make_prepare() {
|
||||||
mkarchiso -v -w "${work_dir}" -D "${install_dir}" prepare
|
mkarchiso -v -w "${work_dir}" -D "${install_dir}" prepare
|
||||||
}
|
}
|
||||||
@ -81,6 +76,5 @@ run_once make_setup_mkinitcpio
|
|||||||
run_once make_boot
|
run_once make_boot
|
||||||
run_once make_syslinux
|
run_once make_syslinux
|
||||||
run_once make_isolinux
|
run_once make_isolinux
|
||||||
run_once make_aitab
|
|
||||||
run_once make_prepare
|
run_once make_prepare
|
||||||
run_once make_iso
|
run_once make_iso
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
# <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size>
|
|
||||||
airootfs / i686 xz ext4 50%
|
|
||||||
airootfs / x86_64 xz ext4 50%
|
|
@ -182,13 +182,7 @@ make_efiboot() {
|
|||||||
umount ${work_dir}/efiboot
|
umount ${work_dir}/efiboot
|
||||||
}
|
}
|
||||||
|
|
||||||
# Copy aitab
|
# Build airootfs filesystem image
|
||||||
make_aitab() {
|
|
||||||
mkdir -p ${work_dir}/iso/${install_dir}
|
|
||||||
cp ${script_path}/aitab ${work_dir}/iso/${install_dir}/aitab
|
|
||||||
}
|
|
||||||
|
|
||||||
# Build all filesystem images specified in aitab (.fs.sfs .sfs)
|
|
||||||
make_prepare() {
|
make_prepare() {
|
||||||
cp -a -l -f ${work_dir}/${arch}/airootfs ${work_dir}
|
cp -a -l -f ${work_dir}/${arch}/airootfs ${work_dir}
|
||||||
setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" pkglist
|
setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" pkglist
|
||||||
@ -253,8 +247,6 @@ run_once make_isolinux
|
|||||||
run_once make_efi
|
run_once make_efi
|
||||||
run_once make_efiboot
|
run_once make_efiboot
|
||||||
|
|
||||||
run_once make_aitab
|
|
||||||
|
|
||||||
for arch in i686 x86_64; do
|
for arch in i686 x86_64; do
|
||||||
run_once make_prepare
|
run_once make_prepare
|
||||||
done
|
done
|
||||||
|
@ -23,8 +23,6 @@ INDEX
|
|||||||
Default: "/dev/disk/by-label/${archisolabel}"
|
Default: "/dev/disk/by-label/${archisolabel}"
|
||||||
* archisobasedir= Set the base directory where all files reside.
|
* archisobasedir= Set the base directory where all files reside.
|
||||||
Default: "arch"
|
Default: "arch"
|
||||||
* aitab= Set the path for "aitab" file.
|
|
||||||
Default: ${archisobasedir}/aitab
|
|
||||||
* copytoram= If set to "y" or just "copytoram" without arguments,
|
* copytoram= If set to "y" or just "copytoram" without arguments,
|
||||||
all SquashFS are copied to "RAM".
|
all SquashFS are copied to "RAM".
|
||||||
Default: (unset)
|
Default: (unset)
|
||||||
@ -59,10 +57,6 @@ INDEX
|
|||||||
Default: "75%"
|
Default: "75%"
|
||||||
* dm_snap_prefix= Set a prefix for device-mapper snapshot node names.
|
* dm_snap_prefix= Set a prefix for device-mapper snapshot node names.
|
||||||
Default: "arch"
|
Default: "arch"
|
||||||
* arch= Force an architecture type (i686 | x86_64).
|
|
||||||
Do not set it for normal operations.
|
|
||||||
Useful for running a 64 bit kernel / 32 bit userspace.
|
|
||||||
Default: (architecture of running kernel)
|
|
||||||
|
|
||||||
|
|
||||||
** hooks/archiso_pxe_common
|
** hooks/archiso_pxe_common
|
||||||
|
@ -2,9 +2,6 @@ INDEX
|
|||||||
-----
|
-----
|
||||||
|
|
||||||
* Build requirements
|
* Build requirements
|
||||||
* Image types generated by mkarchiso.
|
|
||||||
* File format for aitab.
|
|
||||||
* Why the /isolinux and /arch/boot/syslinux directories?
|
|
||||||
* Building the most basic Arch Linux live media. (configs/baseline)
|
* Building the most basic Arch Linux live media. (configs/baseline)
|
||||||
* Building official Arch Linux live media. (configs/releng)
|
* Building official Arch Linux live media. (configs/releng)
|
||||||
|
|
||||||
@ -39,52 +36,10 @@ INDEX
|
|||||||
+ (none)
|
+ (none)
|
||||||
|
|
||||||
|
|
||||||
*** Image types generated by mkarchiso.
|
|
||||||
|
|
||||||
* image-name.sfs SquashFS image with all files directly on it.
|
|
||||||
[read-only, no dm-snapshot is used]
|
|
||||||
* image-name.fs.sfs SquashFS with only one file inside (image-name.fs),
|
|
||||||
which is an image of some type of filesystem
|
|
||||||
(ext4, ext3, ext2, xfs, btrfs), all files reside on it.
|
|
||||||
[read-write, via COW image with dm-snapshot]
|
|
||||||
|
|
||||||
|
|
||||||
*** File format for aitab.
|
|
||||||
|
|
||||||
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 %
|
|
||||||
|
|
||||||
|
|
||||||
*** Why the /isolinux and /arch/boot/syslinux directories?
|
|
||||||
|
|
||||||
The /isolinux directory holds files needed for the ISOLINUX boot loader
|
|
||||||
module of SYSLINUX. ISOLINUX can not find config files on
|
|
||||||
/arch/boot/syslinux, like other boot loaders modules (SYSLINUX, PXELINUX).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*** Building the most basic Arch Linux live media. (configs/baseline)
|
*** Building the most basic Arch Linux live media. (configs/baseline)
|
||||||
|
|
||||||
* Install needed packages.
|
* Install needed packages.
|
||||||
# pacman -S git make arch-install-scripts squashfs-tools libisoburn rsync --needed
|
# pacman -S git make arch-install-scripts squashfs-tools libisoburn --needed
|
||||||
|
|
||||||
* Install archiso.
|
* Install archiso.
|
||||||
# git clone git://projects.archlinux.org/archiso.git
|
# git clone git://projects.archlinux.org/archiso.git
|
||||||
|
Loading…
Reference in New Issue
Block a user