Kurdish GNU/Linux

1 reply [Last post]
abc-dysco
Offline
Joined: 04/06/2016

End users in the autonomous region of Rojava or West Kurdistan are requesting help with a Kurdish GNU/Linux for 3 reasons:

1) People don't speak English, nor are they good at computers. They shouldn't have to know how to install or configure Kurdish language support (which BTW involves installing 3 separate packages and a number of arcane steps).

2) Internet access is not readily available everywhere, so everything needed for a functional distribution should be included out of the box. All of the multimedia software.

3) The translations need to be completed. Often the translation files are changed between versions of software so we will need to build the latest releases of software, translate them and then include them in our custom distribution so that people can use localized software. The alternative is waiting 6 months or more when they become available for Ubuntu and that version of the software becomes available in the repos.

What is needed:

We couldn't find any official instructions for building Ubuntu or where it is based. ATM, we use this command:

xorriso -as mkisofs \
-isohybrid-mbr /usr/lib/syslinux/mbr/isohdpfx.bin \
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot \
-isohybrid-gpt-basdat \
-o /path/to/tmp.iso \
/path/to/tmp

Which is something we found on some random website and have no idea what it does.

https://help.ubuntu.com/community/InstallCDCustomization

These instructions above are out of date and no longer work.

That xorriso command works but it has problems- for instance the startup CD creator refuses to load the ISO and we have to use ddrescue.

Somebody is recommending Debian installer localization: https://d-i.alioth.debian.org/doc/i18n/. Do you have any advice?

scdbackup
Offline
Joined: 04/06/2016

Hi,

i am the developer of xorriso.

The xorriso example shown produces a bootable ISO 9660 image,
which can either be burned to CD, DVD, or Blu-ray, or can be copied
to a hard-disk-like storage device, e.g. an USB stick.

The question here is about Ubuntu on a Trisquel forum.
So i'll answer by an Ubuntu example with pointing out differences
in the Trisquel ISO
http://mirror.fsf.org/trisquel-images/trisquel-netinst_7.0_amd64.iso
It has similar boot equipment, except the lack of EFI USB stick booting
and the appended MBR partition 2 which contains an empty FAT filesystem.

With burn programs one has to take care that the image is burned
as is and not wrapped once more into a filesystem. Normally this
feature is called "image" burning in contrast to "projects".

xorriso -as cdrecord -v dev=/dev/sr0 \
"$HOME"/iso_mirrors/ubuntu_14.04_repacked.iso

When putting the ISO onto an USB stick, one has to use the base
device, e.g. /dev/sdc, and not some partition device (e.g. /dev/sdc1).
The image shall occupy the whole USB stick and not be copied into
a filesystem on the USB stick. It is advisable to first dd the whole
stick into a data file on disk before overwriting it by dd'ing the
ISO onto the stick base device.

dd if=/dev/sdc | gzip >"$HOME"/iso_mirrors/dev_sdc_orig.gz

dd if="$HOME"/iso_mirrors/ubuntu_14.04_repacked.iso bs=1M of=/dev/sdc

It would be interesting to learn what "startup CD creator" expects
as ISO and why it refuses on yours.

I cannot say much about
https://help.ubuntu.com/community/InstallCDCustomization
except that the final ISO image production command makes the ISO
ready for booting only from CD, DVD, BD via BIOS. No USB stick,
no EFI without legacy emulation.

The xorriso command you found is more modern. It would match this
repack procedure

# Create a playground directory
mkdir "$HOME"/iso_mirrors

# Get the ISOLINUX MBR template from the Ubuntu ISO image.
# It will be needed when the new ISO gets packed up.
dd if=ubuntu-14.04-desktop-amd64.iso bs=1 count=446 \
of="$HOME"/iso_mirrors/ubuntu_14.04_isohdpfx.bin

# Mount the ISO image and copy to a directory
sudo mkdir /mnt/iso
sudo mount -o loop ubuntu-14.04-desktop-amd64.iso /mnt/iso

cp -a /mnt/iso "$HOME"/iso_mirrors
mv "$HOME"/iso_mirrors/iso "$HOME"/iso_mirrors/ubuntu-14.04

sudo umount /mnt/iso

# >>> Now manipulate the files in "$HOME"/iso_mirrors/ubuntu-14.04
# >>> as needed and appropriate.
# >>> Sorry: I have no clue with that.
# For testing the commands proposed her, just leave it unaltered and go on.

# When all changes are done, pack up a new ISO
xorriso -as mkisofs \
-isohybrid-mbr "$HOME"/iso_mirrors/ubuntu_14.04_isohdpfx.bin \
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot -isohybrid-gpt-basdat \
-o "$HOME"/iso_mirrors/ubuntu_14.04_repacked.iso \
"$HOME"/iso_mirrors/ubuntu-14.04

# Try out with qemu as virtual CD-ROM
qemu-system-x86_64 -enable-kvm -m 512 \
-cdrom "$HOME"/iso_mirrors/ubuntu_14.04_repacked.iso

# ... as virtual USB stick
qemu-system-x86_64 -enable-kvm -m 512 \
-hdb "$HOME"/iso_mirrors/ubuntu_14.04_repacked.iso

# ... with EFI instead of BIOS
qemu-system-x86_64 -enable-kvm -m 512 \
-bios /usr/share/ovmf/OVMF.fd \
...-cdrom...or...-hdb...

The bootloaders used for BIOS and EFI differ (ISOLINUX versus GRUB2).
So the boot menus differ substantially.

With trisquel-netinst_7.0_amd64.iso the same commands apply.
But the name of the ISOLINUX boot image and of the boot catalog file
differ. So xorriso needs slightly different arguments.
Ubuntu:
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
Trisquel:
-c boot.cat \
-b isolinux.bin \

The above xorriso example does not append the partition with empty FAT
filesystem. One could do by xorriso -as mkisof option -append_partition.
But currently i do not see the reason for its existence.

Booting via EFI (qemu + OVMF) does not work for me with the Trisquel ISO.
It ends up at a GRUB2 prompt. Insofar booting succeeded. But GRUB2 offers
no menu. Improvement over original Trisquel ISO: it boots to GRUB2 from
quemu -hdb. The original boots only from qemu -cdrom.

Have a nice day :)

Thomas