Packer: Creating a vmware box with with non-US keyboard layout - keyboard

I went throught the packer / atlas tutorial and got everything working, that is, I managed to build a vmware box via packer build template.json.
I am fine with having everything in English (e.g. menus, help files, ...) but
I need to use a keyboard with a non-US layout (German).
I tried to set the keyboard layout in the preseed.cfg, the file wich is part of the tutorial's git repo and tried the d-i commands I found in the ubuntu preseed documentation. The settings were ignored though. The keyboard layout was still US. The relevant lines of the original preseed.cfg from the tutorial's git repo are:
d-i debian-installer/locale string en_US.utf8
d-i console-setup/ask_detect boolean false
d-i console-setup/layout string USA
Fiddling with the boot commands in the template.json wasn't successful either (either still US-layout or installation did not went through any more). The relevant extract from the original template.json file is
"type": "vmware-iso",
"boot_command": [
"<esc><esc><enter><wait>",
"/install/vmlinuz noapic preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ",
"debian-installer=en_US auto locale=en_US kbd-chooser/method=us ",
"hostname={{ .Name }} ",
"fb=false debconf/frontend=noninteractive ",
"keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA keyboard-configuration/variant=USA console-setup/ask_detect=false ",
"initrd=/install/initrd.gz -- <enter>"
]
Could someone tell me how to configure packer, e.g. starting from the simple example from the packer / atlas tutorial, so that the built vagrant box has a keyboard layout set to German?

I eventually got it working with this boot_command:
"boot_command": [
"<esc><esc><enter><wait>",
"/install/vmlinuz noapic preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/my_preseed.cfg ",
"debian-installer/locale=en_US keyboard-configuration/layoutcode=de ",
"hostname={{ .Name }} ",
"fb=false debconf/frontend=noninteractive ",
"console-setup/ask_detect=false ",
"initrd=/install/initrd.gz -- keyboard-configuration/layout=de <enter>"
],
and these lines in the pressed.cfg
# File starts here
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/layoutcode string de
#d-i netcfg/get_hostname string dummy
...
Yet, I don't know why this works and the other config did not. Does anybody know?
I also asked a question at "Unix & Linux" regarding (the difference between) configuration/layoutcode and keyboard-configuration/layout.

Related

Not able to create flutter linux desktop application snapcraft build

I have developed a Linux desktop application with the help of flutter but now I am facing an error when I am trying to create the snapcraft build in #Flutter Project and the project is running perfectly when I am run on a Linux system . Please let me know if anyone can connect with me and help me to solve this error. when I was run snapcraft cmd to create project snap so terminal showed this error.
**Error while processing...
The store was unable to accept this snap.
human review required due to 'deny-connection' constraint (interface attributes)
Could not find 'Exec=' in desktop file
Could not find 'Type=Application' in desktop file**
projectname.desktop file code
Name=projectname
Comment=projectname
Exec=projectname
Icon=snap/gui/projectname.png # replace name to your app name
Terminal=false
Type=Application
Categories=Utility; #adjust accordingly your snap category```
snapcraft.yaml Code
```name: projectname
version: '1.0.8'
summary: projectname summary
description: |
projectname description
confinement: strict
base: core18
grade: stable
# icon: snap/gui/projectname.png
# architectures:
# - build-on: armhf
architectures:
- build-on: armhf
# run-on: amd64
system-usernames:
snap_daemon: shared
slots:
dbus-projectname: # adjust accordingly to your app name
interface: dbus
bus: session
name: org.bar.projectname # adjust accordingly to your app name and
apps:
projectname:
command: projectname
extensions: [flutter-master] # Where "master" defines which Flutter channel to use for the
# desktop: snap/gui/projectname.desktop
plugs:
- network
- desktop
slots:
- dbus-projectname
parts:
bstamp:
source: .
plugin: flutter
flutter-target: lib/main.dart # The main entry-point file of the application```
I faced this issue a while ago and is was quit simple to solve. Check your .desktop file. It can't have extra spaces
change this
Name=projectname
Comment=projectname
Exec=projectname
Icon=snap/gui/projectname.png # replace name to your app name
Terminal=false
Type=Application
Categories=Utility; #adjust accordingly your snap category
to this
Name=projectname
Comment=projectname
Exec=projectname
Icon=snap/gui/projectname.png # replace name to your app name
Terminal=false
Type=Application
Categories=Utility; #adjust accordingly your snap category
I hope it helped you
I ran into exactly the same issue. I copy pasted from the guide on flutter.dev when creating my .desktop file. That left all entries with preceding spaces. Removing all the spaces fixed my issue.
If you fix those issues you'll still get the "human review required due to 'deny-connection' constraint (interface attributes)" but it will trigger a manual review this time after which you'll need to wait a couple of days for a human to review your submission.

"-m" not visible when using Git in Windows Terminal

I'm using Windows Terminal and I'm having trouble with Git, when I type -m it's invisible:
I've tried modifying the .gitconfig file but haven't managed to find the parameter to that specific thing. How can I change it?
This looks like a PowerShell theme issue - check the output of Get-PSReadLineOption - if you see any invisible colors:
PowerShell invisible colors
You can fix this by specifying your own colors - e.g: Set-PSReadLineOption -Colors #{ 'Number' = "blue"; 'Member' = "DarkGray"}

How can I set starting directory for D: in WSL2?

I am using Ubuntu-20.04 WSL2 in Windows 10.
I want to approach D: when I open my terminal, so I added this in my workspace settings.json:
"source": "Windows.Terminal.Wsl",
"colorScheme": "Monokai Night",
"startingDirectory": "\\\\wsl$\\Ubuntu-20.04\\mnt\\d" //added this
But it is not working (this code connected me to default of mnt/c/Users/username).
So I also tried this:
"source": "Windows.Terminal.Wsl",
"colorScheme": "Monokai Night",
"startingDirectory": "\\\\wsl$\\Ubuntu-20.04\\mnt" //added this
It is working.
How can I set starting directory for d?
For mounted directories like D:, setting the mount point like /mnt/d won't work (h/t #Dominique).
Either use a Windows-style path (with backslashes escaped):
"startingDirectory": "D:\\"
Or use Linux-style slashes in newer versions (slashes do not need to be escaped):
"startingDirectory": "D:/"
– Requires Windows Terminal 1.11.2421.0 on Windows 10 21H2 or Windows 11
Alternatively, ignore the Windows Terminal settings and just cd at the end of your ~/.bashrc:
cd /mnt/d

generating kickstart ISO for post-fd OSes (eg CentOS 8) and using it in packer vsphere-iso invocation

I'm having a problem specifying the kickstart source on my Packer vsphere-iso template build. I suspect I'm close, but I'm still seeing that the ks is not found during boot and the install goes Interactive at that point.
In my vsphere-iso packer, I'm saying:
{
"variables":
{
:
"ks" : "CentOS-8-x86_64.ks",
:
"cd_label" : "OEMDRV",
"vmipaddress" : "10.1.8.47",
"vmnetmask" : "255.255.254.0",
"vmgateway" : "10.1.9.254",
"vmnameserver" : "10.1.9.210",
:
},
"builders":
[
{
"type" : "vsphere-iso",
:
"boot_wait" : "5s",
"boot_command":
[
"<esc>",
" linux ks=hd:LABEL={{user `cd_label`}}:/{{user `ks`}}",
" ip={{user `vmipaddress`}}::{{user `vmgateway`}}:{{user `vmnetmask`}}:template:eth0:none",
" nameserver={{user `vmnameserver`}}",
" biosdevname=0 net.ifnames=0",
"<enter>",
"<wait>"
],
:
"cd_files" : ["ks/{{user `ks`}}"],
"cd_label" : "{{user `cd_label`}}",
:
:
}
No, I can't refer it back to an HTTP URL. Trust me, I can't !
I can confirm that ks/CentOS-8-x86_64.ks exists, so I half assume anaconda should find it. Mounting a generated ISO image out of the packer cache dir on the DS shows that yes, it is being built with a non-empty ks file on-board.
I don't think the devname tunings (for actually consistent device naming) is causing a problem here, but I don't discount it.
The boot command ends up rendered as (manual copy, watch for typos):
boot: linux ks=hd:LABEL=OEMDRV:/CentOS-8-x86_64.ks ip=10.1.8.47::10.1.9.254:255.255
.254.0:template:eth0:none nameserver=10.1.9.210 biosdevname=0 net.ifnames=0
Loading ... failed: No such file or directory
boot: _
Something's not right. It's gotta be a dumb typo, as I've got the typical "at wits' end" feeling that always precedes a typo fix.
Can you help me spot it?
I too had the same problem. I didn't want to use HTTP because, reasons.
I wasn't able to get the ks=hd:LABEL=OEMDRV working.
I switched to using cdrom but for some odd reason, I had to explicitly specify /dev/sr1 when using cdrom. sr0 would be the CentOS ISO i'm booting from, so sr1 is the second ISO (that Packer builds and uploads on the fly)
Following your naming convention, I used the equivalent of inst.ks=cdrom:/dev/sr1:/CentOS-8-x86_64.ks and was able to get it working.
Tested using CentOS-8.2.2004-x86_64-minimal.iso

stop checking for updates

In sublime terminal (ctrl + `) every minute I got annoing lines:
Checking for updates:
Sync Enabled: True
Sync Timeout: 60000
Latest Update at: Thu Jan 1 00:00:00 1970
Thread is: Thread-4
Paths: [{'path': '', 'display': ''}]
It interrupt me from debuging sublime plugins.
How to disable this Checking for updates?
I tried 2 things to disable it:
I added line "update_check": false into /Users/maks/Library/Application Support/Sublime Text 3/Packages/User/Preferences.sublime-settings:
{
"ignored_packages":
[
"JavaScript Console",
"Vintage"
],
"update_check": false
}
And restarted sublime. But nothing...
I tried to find string 60000 in all files of sublime folder: /Users/maks/Library/Application Support/Sublime Text 3
But nothing good found. Maybe 60000 ms is default value.
Update
Created function to search text in packages and installed packages:
searchInSubl()
{
cd ~/Library/Application\ Support/Sublime\ Text\ 3/Installed\ Packages; zgrep -e $1 *.sublime-package ; cd ../Packages; grep -R -e $1 *
}
With help of it I searched by different words: "Checking for updates", "Sync Enabled", "Sync Timeout", "60000", "Latest Update at", "Thread is", "Paths". But nothing found.
Seemingly this update is internal sublime 3 option. Don't know how to disable it...
My current version of sublime text 3 is 3083. Here how the guys solved it HERE.
Text version
Go to Preferences -> Settings-User -> and paste that line of code in the end:
"update_check": false, or "update_check": false (without last comma if it's last item in the array). After that press CTRL + S (on Windows OS) to Save file or go to File -> Save
Image version
Since Sublime Text 3 packages are in zipped .sublime-package files, you'll need to use zgrep to search them:
cd ~/Library/Application\ Support/Sublime\ Text\ 3/Installed\ Packages
zgrep -e "Checking for updates" *.sublime-package
If nothing is found, try looking in the Packages directory:
cd ../Packages
grep -R -e "Checking for updates" *
Hopefully one of these will match a package. If so, add the package to your ignored_packages setting and restart Sublime.
If neither search works, try using other fragments of the message as your search term: "Sync Enabled", "Latest Update", etc.
Good luck!
Please Note:
This is not the same issue as this one, where setting "update_check": false in your user preferences does not stop Sublime Text 3 from displaying upgrade messages when a new build is released. This particular issue was caused by a plugin constantly printing a message to Sublime's console. As the OP commented below:
using turning off and on every single plugin, target plugin found, its name: "My Snippets" in Installed Packages folder.
Two solutions, depending on what exactly you want to accomplish.
Since I am not sure - possibly my English - so I give you two solutions.
BLOCK PACKAGE FROM UPDATING
I use Sublinter as an example.
Preferences > Package Settings > Package Control > Settings – User
... and add something like this to block package:
// Packages to not auto upgrade
"auto_upgrade_ignore": [
"SublimeLinter"
],
BLOCK SUBLIME FROM UPDATING
If you want Sublime to stop updating and you do not trust in-app update blocking solutions, just nuke 'em.
On Windows (system I use) go to:
C:\Windows\System32\drivers\etc
... and open file named 'hosts'.
You may have to move this file onto desktop, edit it and move it back to original location, as Windows may not allow any changes to it - even, if you try as Administrator.
Then add to 'hosts' file this line of code:
127.0.0.1 localhost www.sublimetext.com
127.0.0.1 localhost sublimetext.com
Version with 'www' will do, as sublime sends updates from 'www.sublimetext.com' location.
Above code will prevent any connection from your machine to 'www.sublimetext.com', hence no updates anymore.
That does not apply to packages, they need option #1.

Resources