Monday, 15 May 2017

GUI 'isorespin.sh'

UpdateThis work is superseded by my 'isorespin.sh' script which can respin an official ISO suitable for use on Intel Atom devices.


Although the earlier versions of my 'isorespin.sh' script provided flexibility in creating an ISO by allowing the addition of packages, if a package was only accessible from a specific repository then it could not be added when respinning an ISO. To provide this functionality I've re-written the script to include both adding repositories to the ISO and adding packages that are dependent on such repositories. Unfortunately the flags I had previously used to control the various options required changing to accommodate this functionality. Additionally an issue I've encountered several times is not having sufficient space to respin an ISO so using a temporary directory such as an external disk or USB for the temporary work files was needed. Therefore I've added a new flag '-w' to specify a 'work directory' which should resolve most instances when space becomes an issue.

With the new flags the invocation whilst providing flexibility can become somewhat complex. Coupled with this is some users are not comfortable using a command line interface so I decided to add a graphical user interface. It is rather simplistic but it takes you through the options and makes argument selections somewhat easier.

The examples below illustrate the various options through scenarios and provide a basic tutorial to the new version of the script.

The first scenario starts by respinning an Ubuntu 17.04 ISO and upgrades the kernel, add a repository, packages and files (scripts), downloads packages required by the scripts, and creates an ISO with persistence.The script was run on a mini PC which just had the required storage with only 11GB free on the root file system. All the local packages and files to be installed on the ISO had been previously downloaded and copied to the 'Downloads' directory. Also to prevent the file manager opening a window each time the script mounts a temporary file system I ran the command 'gsettings set org.gnome.desktop.media-handling automount-open false' first. Finally I had 'installed' the script by copying it to '/usr/local/bin' so that it was available regardless of the current directory.



When the script is started without any parameters it checks to see if it can run the GUI which then starts with the main selection menu where all required options are to be selected.


For each option (i.e. flag) selected, a sub-menu will appear to allow the choice (i.e. argument) to be entered. When selecting the ISO to be respun a file manager styled window will be presented but only files ending with a '.iso' suffix will be displayed.


When the kernel upgrade option is chosen the next choice is either to upgrade to the latest mainline version or a further window will open allowing a specific version to be typed in (which can be any of the Ubuntu Kernel Team kernel builds located at http://kernel.ubuntu.com/~kernel-ppa/mainline and is the name of the directory or folder name without the trailing '/' as in '--kernel v4.11-rc7' noting that earlier kernels will probably not work well if at all).


The new 'repo' option allows a repository to be added in either the form of a ppa or as a line to be added to '/etc/apt/sources.list'.


When any option requiring a text entry is added a further option is displayed to ask whether a further entry needs to be added.


Packages can be added as text entries either singularly or as multiples.


Local packages are added using the file manager which only displays '.deb' files.


Any packages that are specified for download will be placed in '/usr/src'. This can be a useful for example when later installing the ISO to a 32-bit bootloader device as by downloading the required GRUB packages they are readily available without the need for an internet connection during a manual installation.


There are no restrictions on the type of files added to the ISO and they will be stored under '/usr/local/bin'.


Selecting persistence will automatically pre-select the rEFInd bootmanager and the size of the persistence partition can be defined using the slider which with the GUI limits the size between 128MB and 2048MB.


Once all the options have been entered a confirmation screen will be displayed which shows the options as they would have been entered if the script had been manually run.



Then as the script runs its progress is displayed both in the terminal and on the screen.


When the script finishes a notification message is displayed.


A log file is produced while running the script which contains details of what was used in producing the ISO.


The script can still be run manually as before but note the renamed flags.



In the second scenario an attempt is made to run the script manually however there is insufficient space on the hard drive.


By specifying a work directory the script can run on external devices instead of locally.


In this example a USB is used.


Once an ISO has been respun it can be written to a USB using the 'dd' command.



Booting the ISO from the first scenario on an Intel Compute Stick shows how useful installing a local package can be. In this example the local package was 'rtl8723bs_4.11.0-041100_amd64.deb' which is a package I created to install an externally compiled wifi and bluetooth module together with firmware. Wifi automatically becomes available after booting (although in the example the device was also connected to the internet using an external USB adapter). The package 'inxi' was installed as part of the ISO respin and shows the kernel is now v4.11 and 'df' shows the persistence partition mounted as '/media/ubuntu/casper-rw'.


The package 'gnome-encfs-manager' which could only be installed once the repository 'ppa:gencfsm/ppa' had been added can now be run from the ISO as can be the additional files etc.


The new latest version of the script can be downloaded from 'isorespin.sh' and it is designed to work on desktop 64-bit Ubuntu/Ubuntu flavoured ISO although Linux Mint, LDME, Debian 'Live install', KDE neon, elementary OS and Kali ISOs can also be used (with the limitation that Debian kernels cannot be upgraded with only v3.16 kernels updated with HDMI audio and wifi DKMS modules).

Any issues or improvement suggestions are welcome.

Please donate if you find the script useful using the following link http://goo.gl/nXWSGf as everything helps with development costs.

53 comments:

  1. Very nice. Good work

    Some suggestions

    * install dependencies
    e.g xorriso

    some input boxes require more info (provide example of what the user need to input)

    like the specific kernel version
    (v4.12-rc1)

    mine script failed because i not input the "v" first time for specific kernel version

    ReplyDelete
    Replies
    1. Thanks. I'll look at including your suggestions in a new version.

      Delete
  2. For 8GB USB key,
    ./isorespin.sh -i kubuntu-17.04-desktop-amd64.iso -l "rtl8723bs_4.12.0-041200rc1_amd64.deb google-chrome-stable_current_amd64.deb" -u -p "ssh openssh-server inxi" -s 5GB -b "rEFInd"

    Work fine for me, Alltocube iwork1X
    Problem batterie, audio on HP, HDMI well, and tactile.

    ReplyDelete
    Replies
    1. No problem batterie but > 8W of power

      Delete
  3. Can anymone help

    I respin debian live lxde

    At first boot i have this message:

    Error:no suitable video mode found
    Booting in blind mode

    And nothing happens.

    ReplyDelete
    Replies
    1. On what device (manufacturer, make and model number)?

      Delete
    2. This comment has been removed by the author.

      Delete
    3. System: Host: K600IW Kernel: 4.11.1-041101-generic x86_64 (64 bit)
      Console: tty 0 Distro: Ubuntu 17.04
      Machine: Device: desktop System: KUBO by mitsai product: K600IW
      Mobo: AMI model: Cherry Trail CR
      UEFI: American Megatrends v: T09015 date: 08/04/2016
      CPU: Quad core Intel Atom x5-Z8300 (-MCP-) cache: 1024 KB
      clock speeds: max: 1840 MHz 1: 479 MHz 2: 558 MHz
      3: 976 MHz 4: 1286 MHz
      Graphics: Card: Intel Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Configuration Registers
      Display Server: X.org 1.19.3 driver: intel
      tty size: 68x28 Advanced Data: N/A out of X
      Audio: Card Intel HDMI/DP LPE Audio driver: HdmiLpeAudio
      Sound: ALSA v: k4.11.1-041101-generic
      Network: Card: Intel Wireless 3165 driver: iwlwifi
      IF: wlp1s0 state:
      Drives: HDD Total Size: 175.5GB (75.9% used)
      ID-1: /dev/mmcblk0 model: N/A size: 31.0GB
      ID-2: USB /dev/sda model: USB_SD_Reader size: 15.5GB
      ID-3: USB /dev/sdb model: Expansion size: 160.0GB
      ID-1: / size: 15G used: 6.1G (46%) fs: ext4 dev: /dev/sda1
      RAID: No RAID devices: /proc/mdstat, md_mod kernel module present
      Sensors: System Temperatures: cpu: 42.0C mobo: N/A
      Fan Speeds (in rpm): cpu: N/A
      Info: Processes: 215 Uptime: 23:31 Memory: 1065.7/1927.3MB
      Init: systemd Client: Shell (bash) inxi: 2.3.8

      Delete
    4. Try my latest script version(v6.02.0) without the 'rEFInd' option.

      Delete
  4. Hi there - no matter what I do, with this new respin method - when trying to install to a lenovo 100s 11inch atom ideapad, I get the installer crashed when trying to write the grub bootloader. The previous ISO you created was fine - I just cant get ubuntu to install, Ive tried regular ubuntu, mint mate, ubuntu gnome, they all suffer from the same issue?

    Hope you can advise?

    ReplyDelete
    Replies
    1. Hi. For proper grub installation you need active internet connection during install (via usb wifi-card or broadband)

      Delete
    2. You could also try the route indicated in the example which is to download the GRUB binaries as part of the respin including my 'linuxium-install-bootloader.sh' which can be used as a guide in installing GRUB immediately after the ISO installation process has finished.

      Delete
    3. Hi thanks for the replies. So Ive tried again this time with ubuntu 17.04 and kernel 4.12rc2 and when I boot I have no keyboard, trackpad or wifi drivers during install, it was fine in the past with 16.04. Also could you make a page with a list to all the downloads please? Finding it very difficult to find the required files on your site? More than happy to help with hosting if you need some extra space by the way - please feel free to ping me :) Cheers Andy

      Delete
    4. Adding a notify option so IM emailed :)

      Delete
    5. I'm actually in the middle compiling a list of downloads etc and will post it once finished.

      Delete
  5. Hey, nice work, but what if i only want to use mini pc as a wordpress server without any graphical interface? What patches or ready distribution would you reccomend?
    Thanks!

    ReplyDelete
    Replies
    1. Thanks. I had never thought of removing packages as part of respinning given the potential effect on integrity and impact on installation however I will do some testing. I previously written about converting a desktop to a server so I would recommend this approach in creating your wordpress server at this stage.

      Delete
    2. This comment has been removed by the author.

      Delete
  6. Thanks for a quick reply!
    I thought using server edition ISO (without graphical environment) in the first place, maybe ubuntu 17 will work out of the box, because video card is not required, only proper CPU, EMMC and Ethernet support, right? I ordered the PC and looking for information on the internet if somebody is trying this approach.

    ReplyDelete
  7. Thanks for the great work.
    I'm trying to install Ubuntu on a Lenovo IdeaPad Miix 310.
    But no success till now.
    Can get to the Ubuntu logo but then the screen goes black.

    I have some doubts about isorespin.sh
    Is running ./isorespin.sh -i enough to fix the distro? or do I need to add any thing else?

    Thanks

    ReplyDelete
    Replies
    1. Ok, so this is how far I got.
      Ubuntu 14.04.5 kernel 4.11 working video, wifi, touchscreen. Not working SDcard, sound, bluetooth, battery indicator.
      Tried update to 16.04 but, get black screen after boot.
      16.04 and 17 with kernel 4.11 and 4.12 black screen.

      I can get audio on other distros (kali), but no video(distorced picture,shadows,pixels stay on)

      Is it possible to manually path the video?

      Delete
    2. Try adding 'nomodeset' as a boot parameter by editing GRUB when booting and see if this gets you video.

      Delete
    3. This comment has been removed by the author.

      Delete
    4. Nope not helping. Tried adding after and before quiet boot.
      If I add 'nomodeset' on the working iso I get the same problem as the others all fuzzy text, almost like strange scanlines.

      The working 14.04 iso is also fuzzy until 'loading essential drivers' line shows on screen.

      Also tried 14.04 Gnome, this goes nice until the logo then black (i guess goes black when desktop is loaded).

      What else can I try?

      There hare some .iso's I can boot into just with fuzzy video, the rest seems to be working. Can I load the video driver used in Ubuntu 14.04.5 ?

      Delete
    5. According to the Lenovo forums it may be a BIOS issue - see https://forums.lenovo.com/t5/Linux-Discussion/lenovo-miix-310-graphics-problem-after-booting-linux/m-p/3482416 and https://forums.lenovo.com/t5/Linux-Discussion/ubuntu-for-Miix-310-10ICR-Tablet/m-p/3385125

      Delete
    6. Been there before thanks.
      Ive made 17.04 kernel v4.11.2 to boot.
      Working video, sound, touchscreen.
      No working, BT, wifi, brightness (keyboard shortcut showing OSD but no control), SDcard.

      Used your RTL8723BS wifi package for v4.11 on 14.04 v4.11 and works great but I cant install it on 17.04 v4.11.2 !!

      Should be possible to get everything to work at the same time, right ?

      Delete
    7. Have you tried 17.04 with v4.12-rc2 and my latest wifi package as wifi for v4.11.n requires compilation and re-packaging which was never my intention.

      Delete
  8. Excellent work on this...
    A small question if I may, do you think something like this could work on the minimal ubuntu isos located here ( https://help.ubuntu.com/community/Installation/MinimalCD ) or would they be missing key things needed to make this work. The advantage of this is that this iso allows you to download packages to install many flavours of ubunutu and would give someone one iso to rule them all :)

    ReplyDelete
    Replies
    1. Interestingly you can use my 'isorespin.sh' script on all the Ubuntu flavoured desktops and you can download packages (both directly, from additionally added repos and as local packages) and create the perfect 'flavoured' ISO. You can then actually boot multiple ISOs (e.g. all your different perfect flavoured ISOs) from the same USB as I have shown elsewhere.

      The minimal Ubuntu ISOs you mention cannot be used with the current script as they are in the format of 'installation only' ISOs rather than 'live images'.

      If there is something specific you are interested in then please make a suggestion or is it as simple as I want to use one of the minimal ISOs with a different kernel?

      Delete
  9. I've tried the new GUI isorespin.sh twice, once with lots of options, one with just replacing the kernel. I get an error:

    Invalid loader file!
    Error: Not found while loading vmlinuz.efi

    This was with Ubuntu GNOME 17.04. Just in case I have a corrupted iso I'll try it with another flavor. The machine is an HP x2 Detachable 10-p101nr

    ReplyDelete
    Replies
    1. That is a bootloader or more correctly a boot manager error message shown when there is a miss-match between rEFInd and 32-bit/64-bit booting.

      Are there any BIOS settings that control 32-bit/64-bit booting?

      Delete
  10. Thanks for getting back to me. I looked through the BIOS settings and I am not seeing anything vaguely like that.

    ReplyDelete
    Replies
    1. Then can you post your various 'isorespin.log' files and the corresponding errors so I can try and work out what is happening?

      Delete
    2. Sadly once I got it going I deleted the log. Stupid of me. Sorry.

      Delete
  11. I found a workaround and I think I know what is happening now. First, your old isorespin-v5.01.sh works perfectly. It uses grub. The issue is exclusive to rEFInd. It has to be an issue with either how you're writing the bootloader to the image or which image is being written. For me the good news is the rebuild of my system is moving forward.

    ReplyDelete
    Replies
    1. I've had a look and I can't see any problem with the script and I haven't been able to replicate through testing.

      Both the old v5.01 version and new v6.01 version use GRUB and rEFInd with the only difference being the GUI front-end.

      Can you let me know what invocation was used for the script and the corresponding error so I can investigate further.

      Delete
    2. When I ran the GUI version I just ran ./isorespin.sh and answered questions. For the first try I did replace the kernel with v4.11.2 and added some packages. I did not select rEFInd but that was the choice I got. On the second go I didn add packages.

      With 5.01 I kept it plain vanilla:
      isorespin-5.01.sh -i

      Delete
  12. Oh, and I added a little bit to your virtual pushke. It's not much but hopefully next time will be more. I do appreciate your work.

    ReplyDelete
    Replies
    1. Many thanks for the donation. It all goes towards help cover the development and hosting costs.

      Delete
  13. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. Edit.

      Hello,i have an ASUS T100HA
      and installed Ubuntu 17.04(official)
      so,T100HA does not recognize wifi in ubuntu.
      What can we do with isorespin.sh?

      Delete
    2. Remind me again as to what wifi chip the ASUS T100HA uses?

      Delete
  14. Hi
    I'm trying to install some (any) flavor of linux on Voyo V2.
    The respinning portion works fine, but I cannot seem to install any of the respun ISOs.
    For Ubuntu Desktop 16.04, I'm getting:
    "(initramfs) unable to find a medi"um containing a live file system."
    For latest Debian Live, the live portion works ok (booting into XFC), but when I try to install, I'm getting:
    "ERROR: 'kexec' is not a valid plugin. Check and try again."

    Dd you gyus have any suggestion where to go from here?

    ReplyDelete
    Replies
    1. I've not got a Voyo V2 so I'm limited in what I can suggest. However when you install are you connected to the internet as that is required for Ubuntu on 32-bit bootloader devices?

      Delete
    2. Thanks for your reply.
      Indeed I was not aware of this requirement, when connected via ethernet, the Ubuntu Live started fine and I was able to launch the installer.
      It's still going strong at this moment, so keeping my fingers crossed.

      Thank you!

      Delete
    3. Ubuntu got installed!
      Next challenge - it won't shut down or restart. After shutdown command with appropriate parameters, there's only black screen with ocasional unrelated warning message.

      Delete
  15. Could you please provide the ISOs directly? I find the respin method more complicated and it has crashed twice. I believe it was much more convenient in the past, when you provided the ISOs. Unfortunately, I did not believe that you would erase them and did not keep a copy.

    Thanks for your great work!

    ReplyDelete
    Replies
    1. The ISOs are superseded which is why they are removed. They are also not required when you can respin your own with a lot more functionality added than any standard or customized ISO available for download.

      Delete
  16. This comment has been removed by the author.

    ReplyDelete
  17. I do have one question. How hard would it be to make the script 32bit compatible. One of the tablets i have is a nextbook with a baytrail that came with windows 8 stock though ive since upgraded it to 10 but is a 32 bit only device. trying to boot on 64 bit disks is obviously a no go and when i try using a 32bit mint iso with the script it throws a this distro is not 64 bit. Any help would be appreciated. thanks!

    ReplyDelete
    Replies
    1. Just respin a 64-bit Mint ISO and it will automatically add a 32-bit bootloader allowing you to boot on your device.

      Delete
  18. This comment has been removed by a blog administrator.

    ReplyDelete
    Replies
    1. Comments with advertising links are not allowed.

      Delete