blob: 1964d5dd030fb5760803d485bcc610760ac072e8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
Copyright (C) 2022 Pasha <pasha@member.fsf.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
GNU Hurd on OpenStack
----------------------
1. Install GNU Hurd and save as qcow2 format.
2. create user account "debian". (openstack will try to push selected ssh key based login for this account.)
3. workaround: currnet GNU Hurd in openstack could not read login metadata. Therefore, create another account name hurdstack. We will use this account to login via ssh.
-------------------
set console output
-------------------
# sed -i 's/{GRUB_CMDLINE_GNUMACH}/{GRUB_CMDLINE_GNUMACH} console=com0/' /etc/grub.d/10_hurd
# export PATH=$PATH:/usr/sbin/:/sbin/
# update-grub
------------------
install packages
------------------
# apt-get install patch cloud-init inetutils-tools
-----------------------------------------------
patch cloud-init for inetutils-ifconfig support
-----------------------------------------------
# patch /usr/lib/python3/dist-packages/cloudinit/netinfo.py < netinfo.py.patch
(md5sum /usr/lib/python3/dist-packages/cloudinit/netinfo.py and set the value - optional)
# sed -i "s/004c853827df095227eef86175ee351b usr\/lib\/python3\/dist-packages\/cloudinit\/netinfo.py/79af408603bc6e3489fd2d3f1a0e9cac usr\/lib\/python3\/dist-packages\/cloudinit\/netinfo.py/" /var/lib/dpkg/info/cloud-init.md5sums
-------------------------------
remove MAC address and clean up
-------------------------------
# virt-sysprep -d hurdstack
# virsh undefine hurdstack
--------------------------------------------------------------
upload in openstack (you may change --public to other settings)
--------------------------------------------------------------
$ openstack image create \
--container-format bare \
--disk-format qcow2 \
--property hw_disk_bus=ide \
--property os_type=linux \
--property os_distro=debian \
--property os_admin_user=debian \
--property os_version='10.12.7' \
--property hw_vif_model=e1000 \
--public \
--file hurdstack.qcow2 \
hurdstack
------------------------------
example create server command
------------------------------
list your available net-id
$ openstack network list
list your available security group id
$ openstack security group list
start an instance with any flavor (example with m1.nano)
$ openstack server create \
--flavor m1.nano \
--image hurdstack \
--nic net-id=44b3993a-60dd-4074-a911-1b9ac4b8b6fa \
--security-group 8b5d5482-2686-40a8-b394-5c764b6fe310 \
--key-name mykey hurdstackinstance
--------------------
check server status
--------------------
# openstack server list
enable port 22 from web-interface or command line for ssh login.
You may check status in openstack web-interface logs and ssh when it is ready.
ssh might take several minutes as cloud-init is trying to fetch metadata on boot which is still unavailable from GNU Hurd.
links:
https://www.debian.org/ports/hurd/hurd-install
https://docs.openstack.org/image-guide/create-images-manually.html
|