Giter Site home page Giter Site logo

noryb009 / lick Goto Github PK

View Code? Open in Web Editor NEW
69.0 14.0 15.0 452 KB

Install Puppy Linux in a few clicks.

Home Page: https://lorimer.dev/lick/doc/

License: MIT License

CMake 4.48% C 74.43% C++ 19.37% Shell 0.50% Nix 1.23%
linux puppy-linux c uefi windows bootloader-level

lick's Introduction

LICK

LICK is a free program to install Linux from Windows without burning a CD or using a USB. It is as simple as installing and running LICK, selecting a Linux ISO image, and clicking install. A few seconds later, you can reboot into Linux. Currently only Puppy Linux-based distributions are supported.

LICK runs on any Windows version, from Windows 95 to Windows 10. Check below for any special notes on your Windows version type.

Download

You can download the latest version of LICK from Github.

Windows Version Notes

Windows 8, 8.1 and 10

Windows 8 and up have a feature called 'Fast Startup'. This cannot be enabled if LICK is installed. LICK disables Fast Startup upon installation.

UEFI Systems with Secure Boot

LICK supports secure boot, but requires a manual step during the first reboot.

  1. On the first reboot, if you see a blue screen with writing, press enter to select OK.
  2. Press enter again to select Enroll Hash.
  3. Use the up and down arrow keys to highlight loader.efi, and press enter.
  4. Press the down arrow to select Yes, then press enter.
  5. Use the down arrow to highlight Exit, then press enter.

On subsequent reboots, these steps will not need to be taken.

Windows ME

By default, Windows ME does not have all dependencies LICK requires. To fix this, install Me2Dos. You can also read the README.

Early Versions of Windows

The GUI does not work on some early versions of Windows, including 95, 98, and 2000. If run, it will complain that a procedure could not be found in a dll file.

If this occurs, you must use the command line interface.

Using the Command Line Interface

An example CLI session is shown below. I suggest you place the ISO file in a path with a short name (eg. in C:/). On some versions of Windows, you can drag and drop the ISO file onto the command prompt window to automatically type the ISO path.

  Main menu:
  1) Install ISO or from CD
  2) Entry submenu (view/delete)
  3) Install/uninstall boot loader
  4) Quit
  Choice:
1<enter>
  ISO file or CD drive:
C:/xenialpup64-7.5-uefi.iso<enter>
  Install to drive:
  1) C:/
  2) D:/
1<enter>
  Enter ID [xenialpup64-7.5-uefi]:
<enter>
  Enter Name [xenialpup64 7.5 uefi]:
<enter>

lick's People

Contributors

noryb009 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lick's Issues

Enable shim.efi support

In #10, the code to use shim.efi was added, but later disabled in 8d64cba. There are currently a lot of steps one need to do to whitelist the key used to sign efi files, and the steps are not super clear.

IIRC, there is a Linux-only tool that makes the keytool.efi steps easier: it asks the user if they want to enroll a key instead of making the user go find the key on their hard drive. This tool (at least the relevant part) would need to be ported to Windows and integrated.

Black Screen

Hello all,

I tried searching to see if anyone has had this issue but I'm not having any luck... I used LICK to install fossapup64-9.5 it installed fine, upon reboot I can choose Windows or puppy Linux just fine, however, once I choose puppy Linux it stays at a black screen with a cursor "_" (similar to a command prompt underscore); that's all I see, nothing else.

Has anyone had this issue? Can anyone point me in the right direction?

I'm on a ideapad gaming laptop (Lenovo) with an AMD Ryzen 5 and an NVidia GEFORCE GTX GPU (not sure if that helps at all). I disable and enabled secure boot and it still happens.

Support GUI in Win 9x

The LICK GUI is currently not supported in Windows 95/98 (and possibly ME). This should be fixed.

IIRC, this is from MinGW adding a dependency on pthreads when compiling C++, while pthreads doesn't support Win 9x. This task might be as simple as fiddling with compiler flags or finding a different compiler, or might be as hard as rewriting the GUI to use a C framework (perhaps the Windows API to be smaller).

File Support Issue

I have tried to install Cent OS but during the installation it said Kernel not found and stopped installation.

Where are you boot parmaters stored in lick?

Need more documentation for lick.

I am wanting to make puppy linux to think it's using a flash drive.
Need to change the boot parameters from pmedia=atahd to pmedia=ataflash.

Where are you boot parmaters stored.

Disable hybrid boot in registry

As mentioned here, hybrid boot can be disabled in the registry. Currently, we simply disable hibernation, but don't disable fast boot. Note that fast boot is disabled as a consequence of hibernation being disabled.

The relevant code is in install_loader_uefi in uefi.c.

Add logging and proper error support

Currently, there is no good way to figure out what went wrong when something goes wrong. Logging statements should be added throughout the program to help with debugging, as well as figuring out what is wrong when someone has an issue.

Additionally, errors are put in a field in the lickdir_t struct. This is the primary reason the struct needs to be passed to almost every function. This might be able to be replaced with logging infrastructure.

lickgrub.cfg is a protected in windows & you cannot edit it.

Am using a new leveno P340.

lickgrub.cfg is a protected in windows & you cannot edit it.
One might want the default to be a "puppy linux os.

And move the arrow to windows to go to the windows os.

The big problem is that lickgrub.cfg is a protected in windows & you cannot edit it.

Lick bug in detecting video driver and setting video resolution.

Reset my bios settings to secure mode.

Did the hash

Did set gfx=1920x1080x32 in the lick config file.

Rebooted to the lick grub boot gui.

Did not do the resolution.

Went to the command line and did videoinfo.

1920x1080x32 is available, but it detects my video as a cirrus CLGD video driver.

My PC has a intel I5 10th generation intergrated graphics card.

Definetly not a cirrus CLGD graphics card.

Installing in another partition

Got my hands on an 8.1 machine and LICK was perfect for installing Puppy in it.
Did not check if it is available or even possible but would be nice to be able to install the files in another partition with a linux fs. Either during installation (if the partition is rw from windows) or manually (and auto-edit the config file).
An example page with the config options would be also nice in case someone wants to exploit them.
Thanks again for this very handy utility.

Redesign the GUI

After #15, there is no need for the frontend and backend to be split into two separate processes. Moving them into the same process (probably in separate threads, with a new backend thread created for each task) would have some benefits:

  • It would allow removing the awkward message passing over pipes, instead doing simpler communication between threads.
  • The front end would have admin privileges, allowing issues such as #12 to be trivial, instead of needing to pass messages to the backend.
  • There is less possibility of a one of the two processes dying while the other lives. Currently, if the frontend dies, the backend might sit in the background indefinitely, while if the backend dies, the frontend may appear to be unresponsive.
  • lickdir_t can be more complex, allowing the use of pointers, lists, etc.

Since almost all of the GUI code would need to be refactored, it would probably be beneficial to completely rewrite it. This would include:

  • Changing the GUI toolkit or language. This can either allow Windows 9x support (#6), or it can be decided a Windows 9x GUI is not worth the effort. I'm leading towards the latter, because I have not received any feature requests for 9x support. In that case, it might be possible to use another toolkit, or even another language.
  • Allowing a CD/directory to be selected for #20.
  • A redesign of the architecture. The current architecture focuses on the backend taking simple commands. A new architecture could give the backend a scenario or list of commands, with the frontend simply providing feedback to the user.
  • More features. #4 requires a dropdown of distros (which could currently hold fatdog to activate its distro-specific code). #12 would be trivial to add. #16 would be possible with an options dialog. #11, and other tools, could be more visible.

Add internationalization

LICK has only been tested with ASCII. Adding i18n might be tricky, with supporting Win 9x in particular.

Win 9x support could become a command line option - this would also make the 9x download smaller (hopefully fitting on a floppy drive) since grub2 doesn't need to be packaged.

Allow changing default timeouts

Right now, the default timeout for bcd and grub4dos (and I think grub2) is 5 seconds. It might be nice for users to be able to switch that to a different time (eg. 1s - 60s).

Add actual unit tests

The current unit tests aren't really unit tests - they are more a playground for running code. A proper test framework (even for just string functions) would help reduce the amount of manual testing needed.

Document 9x GUI issues

As mentioned on the forum, it's not always clear that the errors given in the 9x GUI are known, or that the CLI should still work.

Add documentation (probably to the README) about this.

Why does not lick use grub 2.06?

Grub 2.02 often does not show the graphics properly.

But Grub 2.06 will show the graphics properly.

So you should create a lick 1.35, that uses grub 2.06

Update grub2

It is currently 2.02~beta2-for-windows, it should be updated to 2.02-for-windows. The download can be found here: ftp://ftp.gnu.org/gnu/grub/

Support EFI that only boots Windows

As mentioned here, some systems only boot /EFI/Boot/bootx64.efi (and perhaps even /EFI/Microsoft/boot/bootmgfw.efi). If a user encounters this, there should be an option in the menu (with at least one confirmation box) to install LICK to /EFI/Boot/bootx64.efi.

Allow installation from a directory

Currently, we only allow installation from an ISO file. Installation from a directory might be easier if someone has a burned CD, but don't have or no longer has the ISO.

Code cleanup

There are a few changes I want to make to clean up the code:

  • Switch to 2 spaces for indents.
  • Don't use relative paths in includes (and rename utils.*).
  • Rename C++ files to use a more common extension (either cpp or cc).
  • Use a better plugin style (ideally just dropping in a cpp file would be enough to add it). This makes it really easy to add extensions, it's not a game of trying to figure out what lines need to be added where.
  • Use bools instead of ints.
  • Where we can't use ints, standardize what ints mean (eg. sometimes 0 is an error, sometimes -1 is an error).

Allow making Puppy the default when booting up

It's not completely clear how someone would make Puppy the default when booting up (or how to switch back to Windows being the default). For example, see this thread.

A consideration is how this would be toggled off if someone toggled the setting off or uninstalled LICK. Setting the default on uninstall to something like the recovery partition would be harmful.

having boot problem with Fossapup64 9.5 installed using Lick

noryb009,

Would you please look at this problem posted on the Puppy Linux forum.
Lick installed Fossapup64 9.5, but it will not boot when selected in the boot menu.
https://forum.puppylinux.com/viewtopic.php?t=5276

If you look at the posts in this topic.
A lot of info is given about what is going on.
Even has a video posted of exactly what happens.
On 3rd page of topic, has post showing the boot menu entry used to boot Fossapup64 9.5

We are running out of ideas.

Puppy forum is constantly telling people to use Lick.
We all want this problem solved!

Look into signing EFI loaders

There's a few relevant notes on this site. Essentially, HashTool and PreLoader will be replaced with some other system. This might be good to release at the same time as #9, since users will need to re-register grub2's hash anyway.

This would require a few steps:

  • Instead of packaging grub2, a signed image will need to be packaged.
  • Installing, which is currently handled by grub-install, would need to be modified. Either grub-install would be used, followed by replacing the installed .efi file with the signed version, or the EFI variables can be modified directly using the Windows API functions GetFirmwareEnvironmentVariable and SetFirmwareEnvironmentVariable (or a wrapper around them).

Edit menu button

In later versions of Windows, it's not easy to edit the grub configuration file, since it can only be edited by the administrator. This means the editor must be opened as admin, then use File -> Open to open the configuration file (since drag and drop is tricky with admin privileges).

There should be a button in the GUI that opens the grub configuration file in notepad (or the default editor) as an admin.

Error installing loader in Windows 10 x86 BIOS mode

I have 2 2009-era Acer Aspire One laptops running Win 10 Pro which I'm trying to dual-boot with puppy linux. The Z520 cpu model worked fine but the N280 cpu failed with Error installing loader!. Both boot up using legacy BIOS mode. My suspicion is it's a Win 10 problem, which on the failed N280 is the latest v2004, while the Z520 still runs v1909. I've attached msinfo/bcdedit logs from the good and failed laptops and also the output log of the Lick trace version. My feeing is it's a permission or security issue caused by v2004 patch. Is it possible to create a verbose trace version for in-depth diagnosis? As a workaround, can I manually create the BCD bootloader entry using bcdedit, then install the ISO with Lick?

failPC_msinfo.txt
goodPC_bcdedit.txt
goodPC_msinfo.txt
failPC_bcdedit.txt
failPC_lick_cli_trace.log

No pupldr

Hi all,
I am currently using windows 10. I have made a seperate clean and empty parition to install my puppy linux on it.
I tried to use Lick to install it directly into the partition.

After rebooting and selecting 'Lick bootloader'.
It gave me this error:

Try (hd0,0): NTFS5: No pupldr
Try (hd0,1): NTFS5:

I am trying to install Slacko 7.
What should I do now? I do not have any thumbdrive or DVD I could use to install this.

Type safety in lists

A lot of functions currently return a node_t, with little to identify what type of list it is. Using these lists are also awkward, for example needing to give a method to free_list.

A system should be implemented to add type safety of some sort to lists.

Feature: be able to change resolution to 1920x1080

Have run bionicpup64 with no problem with 1920x1080 resolution, in my old
lenvo PC.

Have a dell optiplex 3080 that that boots Lick's grub in resolution 800x600 mode.

This messes up bionicpup64 so it can't change the resolution to 1920x1080

Suggest that Lick's grub be able to change resolution to various relolutions,
including 1920x1080.

This should be able to fix bionicpup's resolution problem.

Getting Lick to load .2fs saved Puppy session files at startup

Hi,
I saw this is obviously possible, but myself and other users can't seem to be able to find how it is done, and what is the syntax. Is it through specifying the saved file in lickmenu.lst ?

I am sorry to report this as a bug but the documentation on how this is done seems not to be available anymore, and I need this for my technical project to be able to advance: it is great to be able to reboot unchanged when experimenting with settings but now I need these combined so it's getting too time consuming to advance.

Thanks for your understanding, and thank you in advance.

Random "static" in lickmenu.lst

Currently, the default lickmenu.lst has the lines:

static timeout=5
static default=0

but there should not be a static on either of those lines.

This was reported here.

Lick not supports windows 10 (64 bit)

I am trying to install puppy linux using lick latest version on windows 10 64bit system but it is not installing. it works on 32 bit but not on 64 bit please resolve this issue

Grub VMLinuz not found

Hi! I want to make a dual boot of puppy linux fossapup64-9.5 using Lick alongside my windows10 but when I reboot after the installation, Grub command shows telling need to load kernel first. Then I follow how to load kernel but showing error vmlinuz not found. Please see the attached pics maybe it can help. Any help will be appreciated. Thanks! This is my pc:
Acer Swift 3 Intel UHD 620 graphics
12gb RAM 240gb SSD intel i5
Windows10 Pro

PS.
Secure Boot=Disabled
Fast boot=Disabled
I can boot puppy linux from usb thumb drive

grub1
grub2
grub3

on 7 lick best on newest win10 not taking save file

on 7 lick best on newest win10 not taking save file
but save file saved if i look to my pc in win

i get installed puppies
but just xenial 64 lasttt and xfce xenial 64

they show up at reboot

others some hibernate …. messages

bbut xenials both dont pick up the save file
at reboot

so its always the raw puppy

sad to give up puppy for ever

any idea????????

with wubi 16… unofficial .......ubuntus are working on same laptop win10
but i like more puppy


    i have win 10 newst just bought

https://photos.app.goo.gl/BVV5ySjbj8ZRf8aE2
https://photos.app.goo.gl/OOixsenIuCN4x6gW2

Investigate supporting Ubuntu based distributions

Ubuntu used to have Wubi, which implemented a system similar to LICK for Ubuntu. It has been discontinued, the last commit to the trunk was in 2014. I believe the biggest reason it was discontinued was because of needing to support UEFI and push users towards proper installs.

The method Wubi uses to start Ubuntu from an NTFS drive should be investigated, since implementing it may allow many more distributions to be supported by LICK - Ubuntu, a number of its derivatives, and perhaps Debian and some of its derivatives.

Adding the Hash check after the fact?

I installed lick on a win10 box with the new replacement for bios booting. It won't run Puppy Linux because of this and my own stupidity. I see in the doc where I was supposed to respond to a screen on first boot up to tell lick to allow booting by directing it to a has check file but managed to not do that so... Its operator error but how can I get lick to check the hash check file for puppy linux after its been installed without that being specified on first run? I tried to reinstall but now I have two sets of options to boot puppy but never seemed to get the chance to select hash check.

Windows 10’s May 2021 Update (21H1)

@noryb009

I'm attempting to use LICK to boot into Fatdog64. I installed a fresh build of Windows 10 (21H1) and have disabled secure boot.

After installing LICK, and rebooting - I arrive at the GRUB command prompt only, instead of OS selection.

Note: I am able to boot into fatdog64 via USB pen.

C:\Windows\system32>bcdedit

Windows Boot Manager

identifier {bootmgr}
device partition=\Device\HarddiskVolume1
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale en-GB
inherit {globalsettings}
default {current}
resumeobject {06686305-b4af-11eb-947c-d865b9bcb4c5}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30

Windows Boot Loader

identifier {current}
device partition=C:
path \Windows\system32\winload.efi
description Windows 10
locale en-GB
inherit {bootloadersettings}
recoverysequence {06686307-b4af-11eb-947c-d865b9bcb4c5}
displaymessageoverride Recovery
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \Windows
resumeobject {06686305-b4af-11eb-947c-d865b9bcb4c5}
nx OptIn
bootmenupolicy Standard

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.